A modern coding platform for competitive programming and skill development
CodeQuest is a comprehensive coding platform that provides daily challenges, leaderboards, and problem sets from multiple competitive programming platforms. Built for students and developers who want to improve their algorithmic thinking and coding skills.
- Daily Challenges - Fresh coding problems every day with varying difficulty levels
- Leaderboard - Track your progress and compete with other coders
- Problem Sets - Browse problems by categories (Arrays, Dynamic Programming, etc.)
- Multi-Platform Integration - Problems from LeetCode, GeeksforGeeks, CodeChef, and Codeforces
- User Profiles - Personal dashboards with solve statistics and streaks
- Progress Tracking - Monitor your coding journey with detailed analytics
- Responsive Design - Seamless experience across desktop and mobile devices
- Framework: React 19 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + shadcn/ui components
- State Management: React Context API
- Routing: React Router v6
- HTTP Client: Axios
- Animations: Framer Motion
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB with Mongoose
- Authentication: JWT + Passport.js
- File Upload: Cloudinary
- Email Service: Custom email utilities
- Search: TypeSense integration
- Frontend Hosting: Cloudflare Pages
- Backend Hosting: AWS Lambda
- CI/CD: GitHub Actions
- Node.js (v18 or higher)
- MongoDB
- Git
-
Clone the repository
git clone https://github.com/codevoid048/codequest.git cd codequest -
Setup Backend
cd server npm install # Create .env file with your configuration cp .env.example .env # Edit .env with your MongoDB URL, JWT secret, etc. # Start the server npm run dev
-
Setup Frontend
cd client-test npm install # Create .env file echo "VITE_API_BASE_URL=http://localhost:5000" > .env # Start the development server npm run dev
-
Access the application
- Frontend:
http://localhost:5173 - Backend:
http://localhost:5000
- Frontend:
Backend (.env)
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_key
CLOUDINARY_API_SECRET=your_cloudinary_secretFrontend (.env)
VITE_API_BASE_URL=http://localhost:5000codequest/
├── client-test/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── Home/ # Homepage components
│ │ │ ├── Challenges/ # Challenge-related components
│ │ │ ├── Leaderboard/ # Leaderboard components
│ │ │ ├── ProblemSet/ # Problem browsing components
│ │ │ └── ui/ # shadcn/ui components
│ │ ├── context/ # React Context providers
│ │ ├── lib/ # Utility functions and configurations
│ │ └── styles/ # Global styles
│ ├── public/ # Static assets
│ └── package.json
├── server/ # Backend Node.js application
│ ├── controllers/ # Route controllers
│ ├── models/ # MongoDB models
│ ├── routes/ # API routes
│ ├── middleware/ # Custom middleware
│ ├── utils/ # Utility functions
│ └── config/ # Configuration files
├── .github/
│ └── workflows/ # GitHub Actions CI/CD
└── README.md
We welcome contributions from the community! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use TypeScript for type safety
- Follow ESLint configuration
- Use Prettier for code formatting
- Write meaningful commit messages
- Add comments for complex logic
- Bug fixes and performance improvements
- New features and enhancements
- Documentation improvements
- UI/UX improvements
- Test coverage expansion
- Issues: Check existing issues or create a new one
- Discussion: Discuss your approach in the issue
- Development: Work on your feature/fix
- Testing: Ensure your changes work correctly
- Pull Request: Submit with clear description
- SRKR Coding Club - For the initiative and support
- Open Source Community - For the amazing tools and libraries
- Bug Reports: Open an issue
- Feature Requests: Open an issue
