A self-hosted, collaborative platform for daily Data Structures and Algorithm (DSA) practice. Built with Next.js, Firebase, and modern web technologies.
The application follows a modern architecture with real-time updates and seamless integration between frontend and backend services. Built with scalability and maintainability in mind.
- 🎯 Daily Problems: Track and solve daily DSA problems
- 📊 Progress Tracking: Visual calendar and stats to monitor your progress
- 👥 Multi-User Support: Compete and collaborate with friends
- 📱 Responsive Design: Modern, clean UI that works on all devices
- 🔒 Google Authentication: Secure user authentication
- 📈 Real-time Stats: Track completion rates and streaks
- 👨💼 Admin Dashboard: Manage problems and user progress
- Frontend: Next.js, TypeScript, TailwindCSS, Radix UI
- Backend: Firebase (Auth, Firestore)
- State Management: React Context
- UI Components: Shadcn/ui
- Authentication: Firebase Google Auth
- Node.js (v18 or higher)
- Firebase account
- Git
For detailed self-hosting instructions, visit: Self-Hosting Manual
- Clone the repository:
git clone <your-repo-url>
cd code-dojo
- Install dependencies:
npm install
- Set up your Firebase configuration:
- Create a new Firebase project
- Enable Google Authentication
- Create a Firestore database
- Copy your Firebase config to
.env.local
:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
- Start the development server:
npm run dev
Visit http://localhost:9002 to see your app.
src/app/
- Next.js app router and pagessrc/components/
- Reusable UI componentssrc/firebase.ts
- Firebase configurationsrc/types/
- TypeScript type definitionssrc/hooks/
- Custom React hookssrc/services/
- Backend service functions
- View and track daily DSA problems
- Mark problems as completed
- View personal progress calendar
- Track solving streaks
- Post new problems
- Monitor user progress
- Reset daily stats
- View detailed user statistics
- Calendar view of activity
- Completion statistics
- User rankings
- Solving streaks