Leetcode like platform to practice logic based coding problems. Built using Express.js, React.js, Postgres, and Docker containers for code execution.
- JWT Based User Authentication
- Register
- Login
- Email token verification
- Forgot password with OTP
- Code Editor
- Syntax Highlighting (with Shiki.js)
- 4 Languages Supported (Python, C, C++, Java)
- Problem Statements rendered as Markdown, with support for code blocks
- Sample Test Cases for each problem with expected output
- Custom testcases can be set by the user
- Sandboxed Code Execution
- Docker container for each code execution
- Limit time used by code
- Test code against sample test cases before submission
- Verify output against hidden test cases
- Persist code to local storage
- AI Assistant
- LLaMA will provide hints for the problem statement, with access to the code written by the user as context
- Streaming response from the AI Assistant, for a more interactive experience
- Points
- +10 if the user solves a problem statement in the first submission
- +5 if the user solves a problem statement in more than one submission
- no points awarded if user solves a problem statement correctly more than once
- Leaderboard ranking based on points
- User Profile
- GitHub-like submission graph
- Total submissions
- Points earned
- Problems solved
- Editorials for each problem statement
- Markdown rendered editorials
- Code blocks in editorials
- User can submit editorials after solving the problem statement
- Critical endpoints are rate limited to prevent abuse
- Express.js (Backend + Execution Worker)
- Python (for code execution on the container)
- React.js (Frontend)
- Redis (for internal messaging, storing OTPs, saving code execution results)
- PostgreSQL (with Prisma ORM)
- Docker (with docker-compose)
- Dockerode (for managing docker containers)
- Resend (for sending emails)
- Shadcn/UI (for frontend components)
- Shiki.js with Monaco Editor (for code editing with syntax highlighting)
- Meta LLaMA 3.1 8B (CloudFlare Workers AI)
- GitHub Actions (for CI/CD)
You can either use the docker-compose file to run the project or run the backend and frontend separately.
- Clone the repository
- Copy the
.env.example
file to.env
and fill in the required values in bothfrontend/
andbackend/
directories. - Run
docker compose up
in the root directory - The project will be running on
localhost:8000
Note
You will still need to have Docker installed on your system.
- Clone the repository
- Copy the
.env.example
file to.env
and fill in the required values in bothfrontend/
andbackend/
directories. - Run the backend server
- Navigate to the
backend
directory - Run
npm install
- Run
npm run dev
- Navigate to the
- The backend server will be running on
localhost:3000
- Run the frontend server
- Navigate to the
frontend
directory - Run
npm install
- Run
npm start
- Navigate to the
- The project will be running on
localhost:5173
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.