Welcome to AlgoOJ - A modern, feature-rich online judge platform for solving algorithmic programming challenges. This platform provides a seamless experience for both users practicing their coding skills and administrators managing the content.
- Live Site : https://algooj-frontend.vercel.app/
-
Problem Solving
- Browse and solve programming challenges
- Support for multiple programming languages
- Real-time feedback on submissions
- Detailed submission history
- Performance analytics and progress tracking
-
Learning Experience
- Problems categorized by difficulty (Easy, Medium, Hard)
- Clear problem descriptions and test cases
- Instant feedback on code submissions
- Personal progress dashboard
- Content Management
- Intuitive problem creation interface
- Comprehensive submission monitoring
- User management system
- Analytics dashboard
- Security: JWT-based authentication & secure code execution
- Performance: Real-time submission processing
- UI/UX: Modern, responsive interface built with Material-UI
- Architecture: RESTful API design with robust error handling









- Core Framework: React.js with TypeScript
- UI Components: Material-UI (MUI) v5
- State Management: Redux Toolkit
- Routing: React Router v6
- HTTP Client: Axios
- Code Editor: Monaco Editor
- Date Handling: date-fns
- Form Handling: React Hook Form
- Charts: Recharts for analytics
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- ODM: Mongoose
- Authentication: JSON Web Tokens (JWT)
- Password Security: bcrypt
- API Security:
- CORS for cross-origin resource sharing
- Helmet for HTTP headers
- Rate limiting
- Code Execution: Docker for isolated code running
- Validation: Joi/Yup
- Package Manager: npm/yarn
- Version Control: Git
- Code Quality:
- ESLint for linting
- Prettier for code formatting
- Jest for testing
- API Documentation: Swagger/OpenAPI
- Environment: Docker for containerization
- Node.js (v14 or higher)
- MongoDB
- npm or yarn
-
Clone and Setup
git clone <repository-url> cd online-judge
-
Backend Configuration
cd backend npm install # Create .env file with: PORT=5001 MONGODB_URI=mongodb://localhost:27017/online-judge JWT_SECRET=your-secret-key-here NODE_ENV=development
-
Frontend Setup
cd frontend npm install
-
Launch Application
# Start MongoDB mongod # Start Backend (in backend directory) npm run dev # Start Frontend (in frontend directory) npm start
Access the application:
- Web Interface: http://localhost:3000
- API Endpoint: http://localhost:5001
-
Getting Started
- Create an account or login
- Browse the problem library
- Filter problems by difficulty or category
-
Solving Problems
- Select a problem to solve
- Write your solution in your preferred language
- Submit your code for evaluation
- Review submission results and feedback
-
Track Progress
- View your submission history
- Check your success rate
- Monitor improvement over time
-
Platform Management
- Access admin dashboard using admin credentials
- Create and edit programming problems
- Review user submissions
- Manage user accounts
-
Content Moderation
- Monitor submission quality
- Update problem test cases
- Maintain problem difficulty levels
POST /api/auth/register
- Create new accountPOST /api/auth/login
- User authentication
GET /api/problems
- Retrieve problem listGET /api/problems/:id
- Get problem detailsPOST /api/problems
- Create problem (Admin)
POST /api/submissions
- Submit solutionGET /api/submissions/my-submissions
- View personal submissionsGET /api/submissions/all
- View all submissions (Admin)
We welcome contributions! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit changes (
git commit -m 'Add AmazingFeature'
) - Push to branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License.