A modern web application to track your coding journey and learning progress with daily plans, session logging, and analytics.
π Live Demo: https://trackmyprogress.vercel.app
Learning is most effective when progress is visible and repeatable. TrackMyProgress provides simple, opinionated workflows to plan daily study, log sessions, and review trendsβhelping learners stay consistent and make measurable progress.
Whether you're a student, self-learner, or professional developer, this platform turns your learning goals into trackable achievements.
- Dashboard - Overview of progress, quick actions, and activity highlights
- Daily Plans - Create and follow focused study plans with time tracking
- Journey Log - Chronological record of sessions, milestones, and notes
- Statistics & Analytics - Visual charts and summaries to surface learning trends
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite |
| Styling | Tailwind CSS, Radix UI, Lucide Icons |
| Backend | FastAPI (Python 3.9+) |
| SMTP (Gmail, Outlook, SendGrid) | |
| State Management | React Context API |
| Routing | React Router v7 |
| Deployment | Vercel (Frontend), Custom (Backend) |
- Node.js 18+ with npm
- Python 3.9+
- Gmail Account (for email notifications - optional)
- Clone the repository
git clone https://github.com/manishpatel00/TrackMyProgress.git
cd trackmyprogress- Install dependencies
# Frontend dependencies
npm install
# Backend dependencies
cd server
python3 -m pip install -r requirements.txt
cd ..- Configure environment variables
Create a .env file in the root directory:
# Backend Configuration
VITE_API_BASE=http://localhost:4000
PORT=4000
# Email Notifications (Optional)
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
ADMIN_EMAIL=maishpatel953249@gmail.com- Start the application
Option A: Using start script
chmod +x start.sh
./start.shOption B: Manual start (2 terminals)
Terminal 1 - Backend:
cd server
python3 -m uvicorn ai_server:app --host 0.0.0.0 --port 4000 --reloadTerminal 2 - Frontend:
npm run dev- Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:4000
- API Docs: http://localhost:4000/docs
trackmyprogress/
βββ public/ # Static assets
βββ src/
β βββ components/
β β βββ layout/
β β β βββ Header.tsx # App header with navigation
β β β βββ Sidebar.tsx # Sidebar navigation
β β βββ ui/ # Reusable UI components
β β βββ ContactForm.tsx # Contact form component
β β βββ FeedbackForm.tsx # Feedback form component
β βββ pages/
β β βββ Dashboard.tsx # Main dashboard
β β βββ DailyPlan.tsx # Daily planning page
β β βββ JourneyLog.tsx # Session logging page
β β βββ Stats.tsx # Analytics page
β β βββ Login.tsx # Authentication page
β βββ contexts/
β β βββ AuthContext.tsx # Authentication state
β β βββ DataContext.tsx # App data state
β β βββ ThemeContext.tsx # Theme management
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utilities and helpers
β βββ types/ # TypeScript type definitions
β βββ styles/ # Global styles
βββ server/
β βββ ai_server.py # FastAPI application
β βββ email_service.py # Email notification service
β βββ requirements.txt # Python dependencies
βββ .env # Environment variables
βββ .gitignore # Git ignore rules
βββ package.json # Node dependencies
βββ tsconfig.json # TypeScript configuration
βββ vite.config.ts # Vite configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ README.md # This file
npm run dev # Start development server (port 5173)
npm run build # Build production bundle
npm run preview # Preview production build locally
npm run lint # Run ESLint
npm run format # Format code with Prettier# Development
python3 -m uvicorn ai_server:app --reload
# Production
gunicorn -w 4 -b 0.0.0.0:4000 server.ai_server:app-
Enable 2-Factor Authentication
- Go to Google Account Security
- Enable 2-Step Verification
-
Generate App Password
- Visit App Passwords
- Select "Mail" and "Other (Custom name)"
- Name it "TrackMyProgress"
- Copy the 16-character password
-
Update
.env
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-16-char-app-password
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
ADMIN_EMAIL=your-email@gmail.com| Provider | SMTP Host | Port |
|---|---|---|
| Outlook | smtp-mail.outlook.com | 587 |
| Yahoo | smtp.mail.yahoo.com | 587 |
| SendGrid | smtp.sendgrid.net | 587 |
| Mailgun | smtp.mailgun.org | 587 |
- Push to GitHub
git add .
git commit -m "Initial commit"
git push origin main-
Connect to Vercel
- Go to vercel.com
- Import your repository
- Configure build settings:
- Framework: Vite
- Build Command:
npm run build - Output Directory:
dist
-
Add Environment Variables
- Add
VITE_API_BASEwith your backend URL
- Add
Option 1: Render.com
# Deploy as Web Service
# Build Command: pip install -r requirements.txt
# Start Command: gunicorn -w 4 -b 0.0.0.0:$PORT server.ai_server:appOption 2: Railway.app
# Railway automatically detects FastAPI
# Add environment variables in dashboardOption 3: AWS/GCP/Azure
- Use Docker or deploy directly with gunicorn
- Configure environment variables
- Set up HTTPS with SSL certificates
- β Verify Gmail 2FA is enabled
- β Check App Password is correct (16 characters, no spaces)
- β Confirm SMTP settings match your provider
- β Check spam/junk folder for test emails
# Find process using port
lsof -i :4000
# Kill the process
kill -9 <PID>
# Or use different port in .env
PORT=5000- β
Backend must run on
http://localhost:4000 - β
Frontend must run on
http://localhost:5173 - β
Check
VITE_API_BASEin.envmatches backend URL - β
Verify CORS settings in
ai_server.py
- β
Ensure all dependencies in
package.jsonare correct - β Check Node.js version compatibility
- β Review build logs for specific errors
- β
Verify
vite.config.tsis properly configured
β
No Client Secrets - SMTP credentials never exposed to frontend
β
Input Validation - All form inputs sanitized
β
CORS Protection - Configured for specific origins
β
Safe Error Messages - No sensitive data in error responses
β
Email Verification - Confirmation emails for important actions
- Dashboard with progress overview
- Daily planning system
- Journey log for sessions
- Basic analytics and charts
- Authentication scaffold
- Advanced analytics with insights
- Goal tracking with milestones
- Calendar integration (Google Calendar)
- External time tracker sync (Toggl, RescueTime)
- Pomodoro timer integration
- Spaced repetition reminders
- Share progress with peers
- Study group features
- Public learning profiles
- Leaderboards and achievements
- Database migrations (PostgreSQL/MongoDB)
- Unit and integration tests
- CI/CD pipeline
- Performance monitoring
- OAuth providers (GitHub, Google)
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch
git checkout -b feat/amazing-feature
- Make your changes
- Write clean, documented code
- Follow existing code style
- Add tests if applicable
- Commit with clear messages
git commit -m "feat: add amazing feature" - Push to your fork
git push origin feat/amazing-feature
- Open a Pull Request
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting)refactor:Code refactoringtest:Adding testschore:Maintenance tasks
- Use TypeScript for type safety
- Follow ESLint and Prettier rules
- Write meaningful variable names
- Add comments for complex logic
- Keep functions small and focused
- FastAPI Documentation - Backend framework
- React Documentation - Frontend library
- Vite Documentation - Build tool
- Tailwind CSS - Styling framework
Manish Patel
- GitHub: @manishpatel
- Email: manishpatel953249@gmail.com
- Project: TrackMyProgress
Need help or have suggestions? We'd love to hear from you!
- π§ Email: manishpatel953249@gmail.com
- π¬ Discussions: Join our community discussions
Built with these amazing technologies:
- React - UI library
- FastAPI - Backend framework
- Tailwind CSS - Styling
- Radix UI - UI primitives
- Lucide Icons - Beautiful icons
- Vercel - Deployment platform
If you find this project helpful, please consider giving it a star on GitHub!
Made with β€οΈ for learners everywhere
Live Demo β’ Report Bug β’ Request Feature