- About The Project
- Features
- Built With
- Getting Started
- Usage
- Project Structure
- Database Schema
- Screenshots
- Contributing
- License
- Contact
- Acknowledgments
FitSight is a comprehensive fitness tracking web application designed to help users monitor their workout progress, visualize their gains, and achieve their fitness goals. Built with Django, this application provides an intuitive interface for logging workouts, tracking exercise performance, and analyzing training patterns over time.
This project was developed as a major academic project to demonstrate full-stack web development skills, database management, and modern web application architecture using the Django framework.
- Create a user-friendly fitness tracking system
- Implement secure user authentication and authorization
- Provide real-time workout logging capabilities
- Visualize user progress through interactive charts and graphs
- Design a responsive and modern user interface
- Demonstrate proficiency in Django framework and web development best practices
- User Registration & Authentication: Secure signup and login system
- Custom User Profile: Extended user model with fitness-specific fields (DOB, gender, height, weight)
- Profile Management: Update personal information and fitness metrics
- Live Workout Sessions: Real-time logging of exercises, sets, reps, and weights
- Exercise Library: Custom exercise database with muscle group categorization
- Auto-fill Feature: Automatically suggests last used weight and reps for each exercise
- Workout History: Complete history of all workout sessions with pagination
- Dashboard Overview: At-a-glance view of fitness statistics
- Progress Charts:
- Total volume lifted over time (line chart)
- Workout frequency (bar chart - weekly/monthly view)
- Muscle group distribution (pie chart)
- Exercise Progress Tracking: Individual exercise progression with max weight and total volume metrics
- Session Statistics: Total weight lifted and muscle groups targeted per session
- Responsive Design: Clean, modern interface that works across devices
- Interactive Charts: Dynamic visualizations using Chart.js
- Easy Navigation: Intuitive flow from session creation to workout logging
- Data Validation: Form validation to ensure data integrity
- Django 5.2.6 - High-level Python web framework
- SQLite3 - Lightweight database for development
- Python 3.x - Programming language
- HTML5 - Markup language
- CSS3 - Styling and layout
- JavaScript (ES6) - Client-side interactivity
- Chart.js - Data visualization library
- Django ORM - Database abstraction layer
- Django Forms - Form handling and validation
- Django Authentication - User authentication system
Before you begin, ensure you have the following installed:
- Python 3.8 or higher
- pip (Python package installer)
- Git
-
Clone the repository
# Clone the repository # Replace with your own fork if needed git clone https://github.com/GauravChanda7/fitsight.git cd fitsight
-
Create a virtual environment
# On Windows python -m venv venv venv\Scripts\activate # On macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Apply database migrations
python manage.py makemigrations python manage.py migrate
-
Create a superuser (admin account)
python manage.py createsuperuser
Follow the prompts to create your admin credentials.
-
Run the development server
python manage.py runserver
-
Access the application
- Open your browser and navigate to:
http://127.0.0.1:8000/ - Admin panel:
http://127.0.0.1:8000/admin/
- Open your browser and navigate to:
- Sign Up: Create a new account from the landing page
- Update Profile: Add your fitness metrics (height, weight, DOB)
- Create Exercise: Add exercises to your personal exercise library
- Start Workout: Begin a new workout session
- Log Sets: Record your sets with reps and weight
- View Progress: Check your dashboard for analytics and insights
- Navigate to Dashboard
- Click "Start a New Workout"
- Select the workout date
- Log your exercises and sets
- End session when complete
- Review your progress in the dashboard
- Recent Activity: View your last 5 workout sessions
- Monthly Statistics: See total sessions and workouts this month
- Volume Chart: Track total weight lifted over the last 100 days
- Frequency Chart: Toggle between weekly (7 days) and monthly (30 days) workout frequency
- Muscle Distribution: Pie chart showing muscle groups trained in the last 60 days
fitsight/
β
βββ accounts/
β βββ migrations/
β βββ static/
β β βββ accounts/
β β βββ css/
β β βββ js/
β βββ templates/
β β βββ accounts/
β βββ admin.py
β βββ forms.py
β βββ models.py
β βββ urls.py
β βββ views.py
β
βββ fitness_tracking/
β βββ migrations/
β βββ static/
β β βββ fitness_tracking/
β β βββ css/
β β βββ js/
β βββ templates/
β β βββ fitness_tracking/
β βββ admin.py
β βββ forms.py
β βββ models.py
β βββ urls.py
β βββ views.py
β
βββ fitsight_project/
β βββ __init__.py
β βββ asgi.py
β βββ settings.py
β βββ urls.py
β βββ wsgi.py
β
βββ templates/
β βββ base.html
β
βββ .gitignore
βββ manage.py
βββ README.md
βββ requirements.txt
- username: CharField (inherited)
- email: EmailField (unique)
- password: CharField (inherited)
- first_name: CharField (inherited)
- last_name: CharField (inherited)
- date_of_birth: DateField
- gender: CharField (choices: M/F/O/P)
- height_cm: FloatField
- weight_kg: FloatField- id: AutoField (PK)
- user: ForeignKey -> CustomUser
- date: DateField- id: AutoField (PK)
- user: ForeignKey -> CustomUser
- exercise_name: CharField
- muscle_group: CharField (choices: chest/back/legs/biceps/triceps/shoulders/core)
- unique_together: (user, exercise_name)- id: AutoField (PK)
- session: ForeignKey -> WorkoutSession
- exercise_name: ForeignKey -> Exercise
- reps: PositiveSmallIntegerField
- weight_kg: FloatFieldCustomUser (1) βββββ< (N) WorkoutSession
CustomUser (1) βββββ< (N) Exercise
WorkoutSession (1) β< (N) Set
Exercise (1) βββββββ< (N) Set
Clean, professional landing page introducing FitSight's key features
Comprehensive overview with charts showing progress, frequency, and muscle distribution
Real-time workout logging with auto-fill functionality
Detailed progress tracking for individual exercises
Paginated view of all past workout sessions
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Gaurav Chanda - gauravchanda2022@gmail.com
Project Link: https://fitsight-app.onrender.com
- My academic advisor and mentors for their guidance
- Fellow students for their feedback and support
- The Django and open-source community
- Full-stack web development using Django framework
- Database design and ORM implementation
- User authentication and authorization
- RESTful API design for AJAX requests
- Data visualization and front-end interactivity
- Form validation and error handling
- Responsive web design principles
- Backend: Python, Django, SQLite
- Frontend: HTML5, CSS3, JavaScript (ES6)
- Security: CSRF protection, authentication decorators, password validation
- Database: Relational database design, Django ORM, queries and aggregations
- Version Control: Git, GitHub
- Add PostgreSQL database for production
- Implement workout templates and programs
- Add social features (follow users, share workouts)
- Mobile app development (React Native)
- Add exercise video tutorials
- Implement REST API with Django REST Framework
- Add export functionality (CSV, PDF)
- Integrate nutrition tracking
- Add AI-powered workout recommendations
Developed with πͺ by Gaurav Chanda | Academic Year 2024-2025




