A comprehensive 110-day Data Structures & Algorithms learning tracker with secure authentication, cloud database, progress tracking, and streak monitoring. Production-ready and deployable in minutes!
- β Secure Authentication - Email-based signup with verification (Supabase Auth)
- ποΈ Cloud Database - PostgreSQL database with automatic backups
- π Statistics Dashboard - Track completion, streaks, and interview readiness
- π₯ Calendar-Based Streaks - Maintain daily learning streaks with auto-calculation
- π Activity Heatmap - GitHub-style visualization of your last 90 days
- π Personal Notes - Add notes for each day's learning (synced to cloud)
- βοΈ Skip Days - Mark days as skipped if needed
- π Row-Level Security - Your data is private and secure
- π¨ Beautiful UI - Modern, responsive design with Tailwind CSS
- βοΈ Free Hosting - Deploy to Vercel or Netlify at no cost
- π± Mobile Responsive - Works perfectly on all devices
New to the project? Choose your path:
- β‘ 10-Minute Setup Guide - Get up and running fast
- π Complete Deployment Guide - Detailed step-by-step instructions
- ποΈ Database Setup - Configure your Supabase database
Live Demo: [Your deployed app URL here]
[Add screenshots of your app here]
- Dashboard with stats
- Activity heatmap
- Week/day view
- Notes section
- React 18 - Modern React with hooks
- Vite - Lightning-fast build tool
- Tailwind CSS - Utility-first styling
- Lucide React - Beautiful icons
- Supabase - PostgreSQL database + Authentication
- Row Level Security (RLS) - Data isolation per user
- Automatic Triggers - Streak calculation on database level
- Vercel or Netlify - Free hosting with automatic deploys
- Automatic HTTPS - Secure by default
Before you begin, ensure you have:
- Node.js 16+ installed (Download)
- npm or yarn package manager
- A Supabase account (free) - Sign up
- A Vercel or Netlify account (free) for deployment
- Click the button above
- Follow the 10-Minute Setup Guide
- You're live!
git clone https://github.com/yourusername/dsa-roadmap-tracker.git
cd dsa-roadmap-trackernpm install- Create a Supabase project at supabase.com
- Run the SQL schema from
database/schema.sqlin Supabase SQL Editor - Copy your project URL and anon key
See Database Setup Guide for details.
# Copy the example file
cp .env.example .env
# Edit .env and add your Supabase credentials
VITE_SUPABASE_URL=https://xxxxxxxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key_herenpm run devOpen http://localhost:5173 in your browser.
See Deployment Guide for Vercel/Netlify deployment.
dsa-roadmap-tracker/
β
βββ docs/ # π Documentation
β βββ DEPLOYMENT.md # Complete deployment guide
β βββ QUICK_START.md # 10-minute setup guide
β
βββ database/ # ποΈ Database files
β βββ schema.sql # SQL schema for Supabase
β βββ README.md # Database setup instructions
β
βββ src/ # π» Source code
β βββ components/ # React components
β β βββ Auth/
β β β βββ AuthModal.jsx # Authentication modal
β β βββ Dashboard/
β β βββ StatsDashboard.jsx # Statistics cards
β β βββ ActivityHeatmap.jsx# Activity visualization
β β
β βββ hooks/ # Custom React hooks
β β βββ useAuth.js # Authentication logic
β β βββ useProgress.js # Progress tracking
β β
β βββ lib/ # Library configurations
β β βββ supabaseClient.js # Supabase client setup
β β
β βββ services/ # API services
β β βββ api.js # Database operations
β β
β βββ utils/ # Utility functions
β β βββ calculations.js # Stats & streak calculations
β β
β βββ data/ # Static data
β β βββ roadmapData.js # 110-day roadmap data
β β
β βββ App.jsx # Main app component
β βββ main.jsx # Entry point
β βββ index.css # Global styles
β
βββ .env.example # Environment variables template
βββ .gitignore # Git ignore rules
βββ package.json # Dependencies
βββ vercel.json # Vercel configuration (optional)
βββ netlify.toml # Netlify configuration (optional)
βββ README.md # This file
-
Sign Up
- Click "Login / Sign Up" in the header
- Enter username, email, and password (min 6 characters)
- Check your email for verification link
- Click the verification link
-
Login
- Enter your email and password
- Start tracking your progress!
- Login to your account
- Expand the current week you're working on
- Click on tasks to mark them complete
- Add notes for your learnings
- Track your streak in the dashboard
- Tracks consecutive calendar days with at least one completed task
- Resets if you miss a day
- Updates automatically via database triggers
- Your best ever consecutive day streak
- Try to beat your record!
- Never decreases (only increases when you beat it)
- Visual representation of your last 90 days
- Darker green = more tasks completed that day
- Hover over squares to see exact task count
- Add personal notes for each day
- Document learnings, questions, or insights
- Synced to cloud automatically
- Private to your account
- Mark days as skipped if you need a break
- Won't affect your streak negatively
- Can unskip later
- Calculated based on completed days
- Shows how prepared you are
- Updates in real-time
# Start dev server with hot reload
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview# Required
VITE_SUPABASE_URL=https://xxxxxxxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key_here
# Never commit the .env file to Git!The app uses these tables in Supabase:
user_profiles- User profile informationuser_progress- Task completion trackinguser_notes- User notes for each dayskipped_days- Days that users skipuser_stats- Cached statistics (streaks, totals)
All tables have Row Level Security (RLS) enabled for data privacy.
Edit src/data/roadmapData.js to:
- Add more weeks or days
- Change topics and resources
- Update task descriptions
- Modify difficulty levels
Update Tailwind classes throughout components:
- Primary:
indigo-600β Your color - Secondary:
purple-600β Your color - Accent:
green-500,orange-500β Your colors
- Create new components in
src/components/ - Add business logic in
src/services/api.js - Update database schema in
database/schema.sql - Re-run schema in Supabase SQL Editor
β
Passwords hashed by Supabase Auth (bcrypt)
β
Row Level Security (RLS) prevents data leaks
β
Environment variables for API keys
β
HTTPS enforced in production
β
Email verification required
β
Session management handled by Supabase
- Never commit
.envfiles to Git - Use strong passwords for Supabase dashboard
- Enable 2FA on Vercel/Netlify
- Regularly update dependencies:
npm audit fix - Monitor Supabase logs for suspicious activity
Supabase automatically backs up your database:
- Free tier: Daily backups, 7-day retention
- Pro tier: Daily backups, longer retention
- Go to Supabase Dashboard β Database β Backups
- Click "Download" for latest backup
- Store safely
- Check environment variables are set correctly
- Verify
.envfile exists locally - On Vercel: Check Settings β Environment Variables
- Check spam folder for verification email
- Resend: Supabase Dashboard β Authentication β Users β Send confirmation email
- Check if Supabase project is paused (auto-pauses after 1 week inactivity on free tier)
- Go to Supabase dashboard β Click "Resume project"
- Check browser console for errors
- Verify RLS policies are active in Supabase
- Test query in Supabase SQL Editor
See Troubleshooting Guide in deployment docs.
Supabase:
- Database: 500 MB
- Storage: 1 GB
- Bandwidth: 2 GB/month
- API requests: 50,000/month
- Active users: 50,000 MAU
Vercel:
- Bandwidth: 100 GB/month
- Deployments: Unlimited
- Projects: Unlimited
Result: Can support ~1000 active users completely free! π
- Supabase: Dashboard β Settings β Usage
- Vercel: Dashboard β Analytics β Usage
# Install Vercel CLI
npm i -g vercel
# Login
vercel login
# Deploy
vercel
# Add environment variables in Vercel dashboardSee Deployment Guide for detailed instructions.
- Go to netlify.com
- Import your Git repository
- Add environment variables
- Deploy!
See Deployment Guide for detailed instructions.
- Email reminders for daily tasks
- Social features (share progress with friends)
- Export/Import progress
- Dark mode support
- Mobile app (React Native)
- Spaced repetition for review
- Custom roadmaps
- Leaderboards
- AI-powered recommendations
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style
- Add comments for complex logic
- Test thoroughly before submitting
- Update documentation if needed
MIT License - feel free to use for personal or commercial projects.
See LICENSE file for details.
- Consistency > Intensity - Daily practice beats weekend cramming
- Understand Patterns - Don't just memorize solutions
- Maintain Your Streak - Use the tracker daily for motivation
- Take Notes - Document your learnings and "aha!" moments
- Review Regularly - Revisit challenging problems weekly
- Join Communities - Share your progress on Twitter/LinkedIn
- Ask Questions - Use the notes section to track doubts
- Celebrate Wins - Acknowledge every milestone!
- NeetCode - DSA roadmap and solutions
- LeetCode - Practice problems
- GeeksforGeeks - Tutorials and explanations
- React Docs - React documentation
- Supabase Docs - Supabase documentation
- Tailwind CSS - Tailwind documentation
- Vite - Vite documentation
- Supabase Discord - Get help with Supabase
- Stack Overflow - Ask technical questions
- Roadmap inspired by various DSA learning resources
- Built with modern web technologies
- Hosted on free-tier cloud services
- Community feedback and contributions
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your.email@example.com
- Twitter: @yourhandle
If this project helped you, please:
- β Star the repository
- π Report bugs
- π‘ Suggest features
- π Contribute code
- π’ Share with friends
Built with β€οΈ for DSA learners worldwide
Happy Learning! π Good luck with your DSA journey!
- 10-Minute Setup
- Full Deployment Guide
- Database Setup
- Live Demo (Add your deployed URL)