{"id":20725054,"url":"https://github.com/manangandhi1810/online-ide","last_synced_at":"2025-04-23T18:07:37.879Z","repository":{"id":258924846,"uuid":"859074348","full_name":"MananGandhi1810/online-ide","owner":"MananGandhi1810","description":"Leetcode like platform to practice coding","archived":false,"fork":false,"pushed_at":"2025-04-23T11:01:34.000Z","size":1578,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T18:07:27.680Z","etag":null,"topics":["docker","express","leetcode","postgresql","prisma","react","redis","shadcn-ui"],"latest_commit_sha":null,"homepage":"https://code.mpst.me","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MananGandhi1810.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-18T03:21:24.000Z","updated_at":"2025-04-23T11:01:37.000Z","dependencies_parsed_at":"2024-12-23T08:21:34.465Z","dependency_job_id":"4d90a525-49a8-4bbd-bc44-12d9f41c73a5","html_url":"https://github.com/MananGandhi1810/online-ide","commit_stats":null,"previous_names":["manangandhi1810/online-ide"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MananGandhi1810%2Fonline-ide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MananGandhi1810%2Fonline-ide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MananGandhi1810%2Fonline-ide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MananGandhi1810%2Fonline-ide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MananGandhi1810","download_url":"https://codeload.github.com/MananGandhi1810/online-ide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250487529,"owners_count":21438612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","express","leetcode","postgresql","prisma","react","redis","shadcn-ui"],"created_at":"2024-11-17T04:17:10.161Z","updated_at":"2025-04-23T18:07:37.871Z","avatar_url":"https://github.com/MananGandhi1810.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Online IDE\n\nLeetcode like platform to practice logic based coding problems. Built using Express.js, React.js, Postgres, and Docker containers for code execution.\n\n## Table of Contents\n\n-   [Features](#features)\n-   [Tech Stack](#tech-stack)\n-   [How It Works](#how-it-works)\n-   [Setup](#setup)\n    -   [Using Docker Compose](#using-docker-compose)\n    -   [Running Backend and Frontend Separately](#running-backend-and-frontend-separately)\n-   [Contributing](#contributing)\n\n## Features\n\n-   JWT Based User Authentication\n    -   Register\n    -   Login\n    -   Email token verification\n    -   Forgot password with OTP\n-   Code Editor\n    -   Syntax Highlighting (with Shiki.js)\n    -   4 Languages Supported (Python, C, C++, Java)\n    -   Problem Statements rendered as Markdown, with support for code blocks\n    -   Sample Test Cases for each problem with expected output\n    -   Custom testcases can be set by the user\n-   Sandboxed Code Execution\n    -   Docker container for each code execution\n    -   Limit time used by code\n-   Test code against sample test cases before submission\n-   Verify output against hidden test cases\n-   Persist code to local storage\n-   AI Assistant\n    -   LLaMA will provide hints for the problem statement, with access to the code written by the user as context\n    -   Streaming response from the AI Assistant, for a more interactive experience\n-   Points\n    -   +10 if the user solves a problem statement in the first submission\n    -   +5 if the user solves a problem statement in more than one submission\n    -   no points awarded if user solves a problem statement correctly more than once\n-   Leaderboard ranking based on points\n-   User Profile\n    -   GitHub-like submission graph\n    -   Total submissions\n    -   Points earned\n    -   Problems solved\n-   Editorials for each problem statement\n    -   Markdown rendered editorials\n    -   Code blocks in editorials\n    -   User can submit editorials after solving the problem statement\n-   Critical endpoints are rate limited to prevent abuse\n-   Analytics using PostHog\n    -   Track user interactions on the platform\n-   View Past Submissions\n    -   View code submitted for each problem statement\n\n## Tech Stack\n\n-   Express.js (Backend + Execution Worker)\n-   Python (for code execution on the container)\n-   React.js (Frontend)\n-   Redis (for internal messaging, storing OTPs, saving code execution results)\n-   PostgreSQL (with Prisma ORM)\n-   Docker (with docker-compose)\n-   Dockerode (for managing docker containers)\n-   Resend (for sending emails)\n-   Shadcn/UI (for frontend components)\n-   Shiki.js with Monaco Editor (for code editing with syntax highlighting)\n-   Meta LLaMA 3.1 8B (CloudFlare Workers AI)\n-   GitHub Actions (for CI/CD)\n-   PostHog (for analytics)\n\n## How it works\n\n![Diagram](assets/flow-diagram.png)\n\n## Setup\n\nYou can either use the docker-compose file to run the project or run the backend and frontend separately.\n\n### Using Docker Compose\n\n-   Clone the repository\n-   Copy the `.env.example` file to `.env` and fill in the required values in both `frontend/` and `backend/` directories.\n-   Run `docker compose up` in the root directory\n-   The project will be running on `localhost:8000`\n\n### Running Backend and Frontend Separately\n\n\u003e [!NOTE]\n\u003e You will still need to have Docker installed on your system.\n\n-   Clone the repository\n-   Copy the `.env.example` file to `.env` and fill in the required values in both `frontend/` and `backend/` directories.\n-   Run Redis\n    -   Run:\n        ```bash\n        docker run -d -p 6379:6379 redis\n        ```\n-   Run Postgres\n    -   Run:\n        ```bash\n        docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=onlineide postgres\n        ```\n-   Run the backend server\n    -   Navigate to the `backend` directory\n    -   Run `npm install`\n    -   Run `npm run dev`\n-   The backend server will be running on `localhost:3000`\n-   Run the frontend server\n    -   Navigate to the `frontend` directory\n    -   Run `npm install`\n    -   Run `npm start`\n-   The project will be running on `localhost:5173`\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanangandhi1810%2Fonline-ide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanangandhi1810%2Fonline-ide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanangandhi1810%2Fonline-ide/lists"}