CodeClash is a comprehensive platform designed for competitive programmers / problem solvers to track and manage their problem-solving journey. It provides a centralized dashboard for tracking coding problems, managing deadlines, and measuring progress over time. Additionally, it offers a social environment where coders can connect, share experiences, and challenge each other.
- Traditional email/password registration and login
- OAuth integration with Google and GitHub for streamlined sign-up
- JWT-based authentication for secure API access
- Password encryption using bcrypt for enhanced security
- Add coding problems from various platforms via URL links
- Automatic metadata extraction from problem links
- Status tracking (pending, started, completed)
- Deadline setting and management
- Comprehensive problem listing and detailed views
- Friend request system with send, accept, and reject functionality
- Friend list management
- Pending friend request tracking
- Unfriend capability
- Create, read, update, and delete blog posts
- Comment functionality on blog posts
- Nested comments (replies) with one level of depth
- Generate statistical reports on problem-solving patterns
- PDF report generation and download capability
- Visual representation of performance metrics
- Problem completion trends and efficiency analysis
- Node.js: Server-side JavaScript runtime
- Express.js: Web application framework
- Sequelize ORM: Object-Relational Mapping for database interaction
- JWT (JSON Web Tokens): Secure authentication
- Passport.js: Authentication middleware with Google and GitHub OAuth
- bcryptjs: Password hashing
- dotenv: Environment variable management
- PostgreSQL: Robust relational database system
- Relationships: Models for users, problems, blogs, comments, and friends
- express-session: Session management
- pdfkit: PDF generation for reports
- Clone the repository:
git clone https://github.com/SadLabib/CodeClash.git- Navigate to the project directory:
cd CodeClash- Install dependencies:
npm install- Set up environment variables in a
.envfile:
DATABASE_URL=your_database_url
JWT_SECRET=your_jwt_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
- Run the application:
npm run devPOST /api/auth/register: Register new userPOST /api/auth/login: Authenticate user and get JWTGET /api/auth/google: Google OAuth authenticationGET /api/auth/github: GitHub OAuth authentication
POST /api/problems/create: Create a new problemGET /api/problems/list: Retrieve user's problemsPUT /api/problems/update/:id: Update a problemDELETE /api/problems/delete/:id: Delete a problem
POST /api/friends/add: Send a friend requestPOST /api/friends/accept: Accept a friend requestPOST /api/friends/reject: Reject a friend requestGET /api/friends/list: Get user's friendsPOST /api/friends/unfriend: Unfriend a user
POST /api/blogs/create: Create a new blog postGET /api/blogs/list: Get all blogsPOST /api/comments/create: Add a comment
GET /api/reports/statistics: Get problem-solving statisticsGET /api/reports/pdf: Generate and download a PDF report
- Coding Duels: Compete with friends in real-time challenges
- Integration with platforms like LeetCode, Codeforces, and HackerRank
- Enhanced analytics with machine learning
- Mobile application development
- Real-time notifications
This project is licensed under the MIT License.
- Ahmed Sadman Labib - BSc in Software Engineering - Islamic University of Technology