A clean, simple web application for tracking your Data Structures and Algorithms (DSA) learning progress. View all DSA problems publicly, sign up to track your progress across multiple platforms (LeetCode, GeeksforGeeks, Code360).
- Public Problem Sheet: Browse all DSA problems without signing up
- Progress Tracking: Mark problems as completed across multiple platforms
- Multi-Platform Support: Track progress on LeetCode, GeeksforGeeks, and Code360
- Personal Notes: Add notes to problems for future reference
- Topic Organization: Problems organized by topics with step and sub-step ordering
- User Authentication: Secure sign up and login system
- Profile Management: Update your profile or delete your account
- Responsive Design: Clean, mobile-first interface built with Tailwind CSS
- Next.js 16 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Utility-first styling
- Netlify - Deployment platform
- Express.js - Web framework
- Prisma - ORM for database management
- PostgreSQL - Database
- JWT - Authentication
- bcryptjs - Password hashing
- Zod - Schema validation
DSA-Progress-Tracker/
├── frontend/ # Next.js application
│ ├── app/ # App router pages
│ │ ├── page.tsx # Landing page
│ │ ├── sheet/ # Problem sheet page
│ │ ├── login/ # Login page
│ │ └── signup/ # Signup page
│ ├── globals.css # Global styles
│ └── netlify.toml # Netlify configuration
├── backend/ # Express API server
│ ├── index.mjs # Server entry point
│ ├── prisma/ # Database schema and migrations
│ │ ├── schema.prisma
│ │ └── seed.mjs
│ └── package.json
├── PAGES-PLAN.md # Detailed pages specification
└── NEXTJS-LEARNING-PATH.md
- Node.js (v18 or higher)
- PostgreSQL database
- npm or yarn
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Create a
.envfile with your database configuration:
DATABASE_URL="postgresql://user:password@localhost:5432/dsa_tracker"
JWT_SECRET="your-secret-key"
PORT=3000- Generate Prisma client and run migrations:
npm run prisma:generate
npm run prisma:migrate- (Optional) Seed the database:
npm run prisma:seed- Start the development server:
npm run devThe backend will run on http://localhost:3000
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create a
.env.localfile:
NEXT_PUBLIC_API_URL=http://localhost:3000- Start the development server:
npm run devThe frontend will run on http://localhost:3000 (or the next available port)
- User: User accounts with authentication
- Question: DSA problems with links to multiple platforms
- Sheet: Collections of questions organized by topics
- SheetQuestion: Junction table linking questions to sheets with ordering
- UserProgress: Tracks user completion status and notes per question
npm run dev- Start development server with nodemonnpm run prisma:generate- Generate Prisma clientnpm run prisma:migrate- Run database migrationsnpm run prisma:studio- Open Prisma Studio GUInpm run prisma:seed- Seed database with initial data
npm run dev- Start Next.js development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
- Users can browse all problems without logging in
- Attempting to mark a problem as complete redirects to login/signup
- After authentication, users are redirected back to continue their action
- Track completion status separately for LeetCode, GFG, and Code360
- Overall "done" status for each problem
- Add personal notes to any problem
- View completion dates and track your learning journey
- Mobile-first approach
- Table view on desktop, card view on mobile
- Clean, distraction-free interface
- Consistent spacing and typography
The frontend is configured for Netlify deployment with the Next.js plugin:
- Configuration in
frontend/netlify.toml - Automatic deployments on push
Deploy the Express backend to your preferred platform:
- Heroku
- Railway
- DigitalOcean
- AWS/GCP/Azure
Ensure environment variables are properly configured in your deployment platform.
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Keep it simple - avoid over-engineering
- Follow the mobile-first approach
- Maintain consistent UI/UX patterns
- Write clean, readable code
- Test on multiple screen sizes
POST /api/auth/signup- Register new userPOST /api/auth/login- Login user
GET /api/problems- Get all problems (public)GET /api/user/progress- Get user's progress (protected)POST /api/problems/:id/complete- Mark problem as done (protected)
GET /api/user/profile- Get user profile (protected)PUT /api/user/profile- Update user profile (protected)DELETE /api/user/profile- Delete account (protected)
ISC
Dev Bachani
For issues and feature requests, please open an issue on the GitHub repository.