Skip to content

manishpatel00/TrackMyProgress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 TrackMyProgress

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


🌟 Why TrackMyProgress?

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.


✨ Key Features

πŸ“š Core Learning Tools

  • 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

πŸ—οΈ Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite
Styling Tailwind CSS, Radix UI, Lucide Icons
Backend FastAPI (Python 3.9+)
Email SMTP (Gmail, Outlook, SendGrid)
State Management React Context API
Routing React Router v7
Deployment Vercel (Frontend), Custom (Backend)

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ with npm
  • Python 3.9+
  • Gmail Account (for email notifications - optional)

Installation

  1. Clone the repository
git clone https://github.com/manishpatel00/TrackMyProgress.git
cd trackmyprogress
  1. Install dependencies
# Frontend dependencies
npm install

# Backend dependencies
cd server
python3 -m pip install -r requirements.txt
cd ..
  1. 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
  1. Start the application

Option A: Using start script

chmod +x start.sh
./start.sh

Option B: Manual start (2 terminals)

Terminal 1 - Backend:

cd server
python3 -m uvicorn ai_server:app --host 0.0.0.0 --port 4000 --reload

Terminal 2 - Frontend:

npm run dev
  1. Access the application

πŸ“ Project Structure

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

πŸ”§ Available Scripts

Frontend

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

Backend

# Development
python3 -m uvicorn ai_server:app --reload

# Production
gunicorn -w 4 -b 0.0.0.0:4000 server.ai_server:app

πŸ” Setup Guides

πŸ“§ Gmail SMTP Setup

  1. Enable 2-Factor Authentication

  2. Generate App Password

    • Visit App Passwords
    • Select "Mail" and "Other (Custom name)"
    • Name it "TrackMyProgress"
    • Copy the 16-character password
  3. 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

🌐 Other Email Providers

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

πŸš€ Deployment

Deploy to Vercel (Frontend)

  1. Push to GitHub
git add .
git commit -m "Initial commit"
git push origin main
  1. Connect to Vercel

    • Go to vercel.com
    • Import your repository
    • Configure build settings:
      • Framework: Vite
      • Build Command: npm run build
      • Output Directory: dist
  2. Add Environment Variables

    • Add VITE_API_BASE with your backend URL

Deploy Backend

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:app

Option 2: Railway.app

# Railway automatically detects FastAPI
# Add environment variables in dashboard

Option 3: AWS/GCP/Azure

  • Use Docker or deploy directly with gunicorn
  • Configure environment variables
  • Set up HTTPS with SSL certificates

πŸ› Troubleshooting

Email Not Sending

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

Port Already in Use

# Find process using port
lsof -i :4000

# Kill the process
kill -9 <PID>

# Or use different port in .env
PORT=5000

CORS Issues

  • βœ… Backend must run on http://localhost:4000
  • βœ… Frontend must run on http://localhost:5173
  • βœ… Check VITE_API_BASE in .env matches backend URL
  • βœ… Verify CORS settings in ai_server.py

Build Fails on Vercel

  • βœ… Ensure all dependencies in package.json are correct
  • βœ… Check Node.js version compatibility
  • βœ… Review build logs for specific errors
  • βœ… Verify vite.config.ts is properly configured

πŸ›‘οΈ Security Features

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


πŸ—ΊοΈ Roadmap

Phase 1: Core Features βœ…

  • Dashboard with progress overview
  • Daily planning system
  • Journey log for sessions
  • Basic analytics and charts
  • Authentication scaffold

Phase 2: Enhanced Features 🚧

  • Advanced analytics with insights
  • Goal tracking with milestones
  • Calendar integration (Google Calendar)
  • External time tracker sync (Toggl, RescueTime)
  • Pomodoro timer integration
  • Spaced repetition reminders

Phase 3: Collaboration πŸ“‹

  • Share progress with peers
  • Study group features
  • Public learning profiles
  • Leaderboards and achievements

Phase 4: Production Hardening πŸ“‹

  • Database migrations (PostgreSQL/MongoDB)
  • Unit and integration tests
  • CI/CD pipeline
  • Performance monitoring
  • OAuth providers (GitHub, Google)

🀝 Contributing

Contributions are welcome! Please follow these guidelines:

How to Contribute

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feat/amazing-feature
  3. Make your changes
    • Write clean, documented code
    • Follow existing code style
    • Add tests if applicable
  4. Commit with clear messages
    git commit -m "feat: add amazing feature"
  5. Push to your fork
    git push origin feat/amazing-feature
  6. Open a Pull Request

Commit Convention

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting)
  • refactor: Code refactoring
  • test: Adding tests
  • chore: Maintenance tasks

Code Style

  • Use TypeScript for type safety
  • Follow ESLint and Prettier rules
  • Write meaningful variable names
  • Add comments for complex logic
  • Keep functions small and focused

πŸ“š Resources & Documentation

Official Docs


πŸ‘¨β€πŸ’» Author

Manish Patel


πŸ“ž Support & Feedback

Need help or have suggestions? We'd love to hear from you!


πŸ™ Acknowledgments

Built with these amazing technologies:


⭐ Star History

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors