Skip to content

NikhilSankesa/dsa-roadmap-tracker

Repository files navigation

DSA Mastery Roadmap Tracker

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!

πŸš€ Features

  • βœ… 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

🎯 Quick Start

New to the project? Choose your path:

πŸ“Έ Demo

Live Demo: [Your deployed app URL here]

Screenshots

[Add screenshots of your app here]
- Dashboard with stats
- Activity heatmap
- Week/day view
- Notes section

πŸ› οΈ Tech Stack

Frontend

  • React 18 - Modern React with hooks
  • Vite - Lightning-fast build tool
  • Tailwind CSS - Utility-first styling
  • Lucide React - Beautiful icons

Backend & Database

  • Supabase - PostgreSQL database + Authentication
  • Row Level Security (RLS) - Data isolation per user
  • Automatic Triggers - Streak calculation on database level

Hosting

  • Vercel or Netlify - Free hosting with automatic deploys
  • Automatic HTTPS - Secure by default

πŸ“‹ Prerequisites

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

πŸš€ Installation & Setup

Option 1: Quick Deploy (Recommended)

Deploy with Vercel

  1. Click the button above
  2. Follow the 10-Minute Setup Guide
  3. You're live!

Option 2: Manual Setup

1. Clone the repository

git clone https://github.com/yourusername/dsa-roadmap-tracker.git
cd dsa-roadmap-tracker

2. Install dependencies

npm install

3. Set up Supabase

  1. Create a Supabase project at supabase.com
  2. Run the SQL schema from database/schema.sql in Supabase SQL Editor
  3. Copy your project URL and anon key

See Database Setup Guide for details.

4. Configure environment variables

# 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_here

5. Start development server

npm run dev

Open http://localhost:5173 in your browser.

6. Deploy to production

See Deployment Guide for Vercel/Netlify deployment.

πŸ“ Project Structure

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

πŸ“– Usage

First Time Setup

  1. 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
  2. Login

    • Enter your email and password
    • Start tracking your progress!

Daily Workflow

  1. Login to your account
  2. Expand the current week you're working on
  3. Click on tasks to mark them complete
  4. Add notes for your learnings
  5. Track your streak in the dashboard

Features Explained

πŸ”₯ Current Streak

  • Tracks consecutive calendar days with at least one completed task
  • Resets if you miss a day
  • Updates automatically via database triggers

πŸ“ˆ Max Streak

  • Your best ever consecutive day streak
  • Try to beat your record!
  • Never decreases (only increases when you beat it)

πŸ“Š Activity Heatmap

  • Visual representation of your last 90 days
  • Darker green = more tasks completed that day
  • Hover over squares to see exact task count

πŸ“ Notes

  • Add personal notes for each day
  • Document learnings, questions, or insights
  • Synced to cloud automatically
  • Private to your account

⏭️ Skip Days

  • Mark days as skipped if you need a break
  • Won't affect your streak negatively
  • Can unskip later

🎯 Interview Readiness Score

  • Calculated based on completed days
  • Shows how prepared you are
  • Updates in real-time

πŸ”§ Development

Local Development

# Start dev server with hot reload
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Environment Variables

# Required
VITE_SUPABASE_URL=https://xxxxxxxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key_here

# Never commit the .env file to Git!

Database Schema

The app uses these tables in Supabase:

  • user_profiles - User profile information
  • user_progress - Task completion tracking
  • user_notes - User notes for each day
  • skipped_days - Days that users skip
  • user_stats - Cached statistics (streaks, totals)

All tables have Row Level Security (RLS) enabled for data privacy.

🎨 Customization

Update Roadmap Data

Edit src/data/roadmapData.js to:

  • Add more weeks or days
  • Change topics and resources
  • Update task descriptions
  • Modify difficulty levels

Change Colors

Update Tailwind classes throughout components:

  • Primary: indigo-600 β†’ Your color
  • Secondary: purple-600 β†’ Your color
  • Accent: green-500, orange-500 β†’ Your colors

Add Custom Features

  1. Create new components in src/components/
  2. Add business logic in src/services/api.js
  3. Update database schema in database/schema.sql
  4. Re-run schema in Supabase SQL Editor

πŸ”’ Security

What's Secure

βœ… 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

Best Practices

  • Never commit .env files 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

πŸ“Š Database Backup

Automatic Backups

Supabase automatically backs up your database:

  • Free tier: Daily backups, 7-day retention
  • Pro tier: Daily backups, longer retention

Manual Backup

  1. Go to Supabase Dashboard β†’ Database β†’ Backups
  2. Click "Download" for latest backup
  3. Store safely

πŸ› Troubleshooting

"Invalid API Key" Error

  • Check environment variables are set correctly
  • Verify .env file exists locally
  • On Vercel: Check Settings β†’ Environment Variables

"Email not confirmed" Error

  • Check spam folder for verification email
  • Resend: Supabase Dashboard β†’ Authentication β†’ Users β†’ Send confirmation email

"Network Error"

  • Check if Supabase project is paused (auto-pauses after 1 week inactivity on free tier)
  • Go to Supabase dashboard β†’ Click "Resume project"

Tasks Not Saving

  • Check browser console for errors
  • Verify RLS policies are active in Supabase
  • Test query in Supabase SQL Editor

More Issues?

See Troubleshooting Guide in deployment docs.

πŸ“ˆ Monitoring

Free Tier Limits

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! πŸŽ‰

Check Usage

  • Supabase: Dashboard β†’ Settings β†’ Usage
  • Vercel: Dashboard β†’ Analytics β†’ Usage

πŸš€ Deployment

Deploy to Vercel (Recommended)

# Install Vercel CLI
npm i -g vercel

# Login
vercel login

# Deploy
vercel

# Add environment variables in Vercel dashboard

See Deployment Guide for detailed instructions.

Deploy to Netlify

  1. Go to netlify.com
  2. Import your Git repository
  3. Add environment variables
  4. Deploy!

See Deployment Guide for detailed instructions.

πŸ“ Roadmap & Future Enhancements

  • 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

🀝 Contributing

Contributions are welcome! Here's how:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Contribution Guidelines

  • Follow existing code style
  • Add comments for complex logic
  • Test thoroughly before submitting
  • Update documentation if needed

πŸ“„ License

MIT License - feel free to use for personal or commercial projects.

See LICENSE file for details.

πŸ’‘ Tips for Success

  • 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!

πŸ“š Resources

Learning Resources

Documentation

Community

πŸ™ Acknowledgments

  • Roadmap inspired by various DSA learning resources
  • Built with modern web technologies
  • Hosted on free-tier cloud services
  • Community feedback and contributions

πŸ“§ Support & Contact

🌟 Show Your Support

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!


Quick Links

About

πŸš€ A production-ready 110-day DSA learning tracker with Supabase authentication, cloud database, streak tracking, and progress visualization. Built with React + Vite + Tailwind CSS v4.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors