Skip to content

CodeChefVIT/cookoff-10.0-be

Codechef-VIT

CookOff 10.0 Backend


CookOff is CodeChef VIT's flagship competitive coding event that tests the coding skills of developers.
This backend powers both the admin and participant portals for CookOff 10.0, handling users, questions, test cases, submissions, leaderboards, and timers.
Designed for scalability and reliability, it ensures seamless competition management and smooth participation.

Tech Stack


Features

User Management

  • POST /signup – User signup
  • POST /login – Login
  • POST /logout – Logout
  • POST /refreshToken – Refresh tokens
  • GET /dashboard – Load participant dashboard

Question Management

  • GET /admin/questions – Get all questions
  • GET /admin/questions/:id – Get question by ID
  • POST /admin/questions – Create a question
  • PUT /admin/questions/:id – Update a question
  • DELETE /admin/questions/:id – Delete a question
  • POST /admin/questions/:id/bounty/activate – Activate bounty
  • POST /admin/questions/:id/bounty/deactivate – Deactivate bounty

Testcase Management

  • GET /testcase/:id – Get a testcase by ID
  • GET /testcase – Get all testcases
  • GET /question/:id/testcases – Get all testcases for a question
  • GET /question/:id/testcases/public – Get only public testcases
  • POST /testcase – Create testcase (Admin only)
  • PUT /testcase/:id – Update testcase (Admin only)
  • DELETE /testcase/:id – Delete testcase (Admin only)

Submission Management

  • POST /submit – Submit code
  • POST /runcode – Run code against hidden testcases
  • POST /runcustom – Run custom input
  • GET /result/:submission_id – Get submission result

Leaderboard

  • GET /leaderboard – Fetch leaderboard

Timer

  • POST /admin/setTime – Set round time
  • POST /admin/updateTime – Update round time
  • GET /admin/startRound – Start round
  • GET /admin/resetRound – Reset round
  • GET /getTime – Get remaining time

Admin User Controls

  • GET /admin/users – Get all users
  • POST /admin/users/:id/ban – Ban user
  • POST /admin/users/:id/unban – Unban user
  • POST /admin/users/:id/upgrade – Upgrade user to next round
  • GET /admin/users/:id/submissions – Get all submissions by a user

Getting Started

Installation

  1. Fork the repo
  2. Clone it locally
    git clone https://github.com/<GITHUB_USERNAME>/cookoff-10.0-be.git
    cd cookoff-10.0-be

Prerequisites

  • Configure environment variables (.env file – refer .env.example)
  • Configure Makefile

Running Locally

  1. Start containers

    docker compose up --build -d
  2. Install SQLC & Goose

    go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
    go install github.com/pressly/goose/v3/cmd/goose@latest
  3. Generate SQLC schema and queries

    make generate
  4. Apply migrations

    make up 

Related Projects


UI


Contributors

Soham Mahapatra

Atharva Sharma

Lavnish Jhunjunwala

Aayush Kushwaha

Advik Gupta

Vedant Matanhelia

Shrish

Ashutosh Swain

Upayan Mazumder

Abhinav Pant


License

License


Made with ❤️ by CodeChef-VIT

About

Cookoff 10.0 Backend

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 10

Languages