FitPulse Django Fitness Tracker with AI Coach | Final Year Project with Source Code
Back to ProjectSet aside about twenty minutes. Nothing here is complicated, but do the steps in order — skipping the seed commands is the number one reason people message us saying "the dashboard is empty."
python --version. If you see 3.10, 3.11, 3.12 or 3.13, you're good. If it says 2.7 or "not recognized," go to python.org, download the latest 3.x installer, and on Windows tick the "Add Python to PATH" checkbox during install. That checkbox matters more than anything else on the screen.pip --version.Extract the zip you downloaded. Right-click inside the extracted folder and open a terminal there, or cd into it manually. You should see manage.py when you run dir on Windows or ls on macOS and Linux. If you don't see it, you're one folder too high — go one level deeper.
This keeps FitPulse's packages separate from everything else on your system.
python -m venv venv
Now activate it. The command depends on what you're using:
venv\Scripts\Activate.ps1source venv/Scripts/activatesource venv/bin/activateYou'll know it worked because (venv) shows up at the start of your terminal line. Every command from here on assumes you can see that.
pip install -r requirements.txt
This pulls in Django 5.2, Django REST Framework, django-axes, django-htmx, django-ratelimit, the Groq client, WeasyPrint, Celery, python-decouple and pytest-django. Takes a couple of minutes on decent internet. Grab water.
Copy the example file:
cp .env.example .env
On Windows PowerShell use copy .env.example .env instead.
Open .env in your editor. You must set SECRET_KEY. Generate a proper one with:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
Copy the string it prints and paste it after SECRET_KEY=. No quotes needed.
If you have a Groq key, paste it into GROQ_API_KEY= as well. Leave EMAIL_HOST blank — that makes Django print verification emails to your terminal instead of trying to send real ones, which is exactly what you want during development.
python manage.py migrate
This creates db.sqlite3 and all the tables. You should see a long list of "Applying..." lines ending in OK.
Run these five, one at a time. Skipping any one of them leaves a section of the app empty.
python manage.py seed_exercises
python manage.py seed_workout_templates
python manage.py seed_foods
python manage.py seed_recipes
python manage.py seed_challenges
python manage.py seed_demo_data
This creates four fully onboarded users with roughly ten logged workout sessions each, personal records, a week of meals and water, eight weeks of body measurements, and community activity linking them together. It's safe to run more than once. Without it your charts are blank lines and your feed is empty, which looks bad in a demo.
python manage.py createsuperuser
Enter an email and a password. The password won't show as you type it — that's normal, keep typing.
python manage.py runserver
Open http://127.0.0.1:8000/ in your browser. That's the landing page. Then go to http://127.0.0.1:8000/accounts/login/ and log in with:
demo@fitpulse.appDemo@12345Django admin lives at http://127.0.0.1:8000/admin/ with the superuser you just created.
This is WeasyPrint asking for GTK, and it's the single most common problem on Windows. Download the GTK3 runtime installer (search for "gtk3-runtime win64 installer" — the tschoonj GitHub release is the standard one), install it, then close your terminal completely and open a fresh one before running the server again. Restarting the terminal matters; the PATH change won't apply to the window you already have open. On macOS use brew install pango. On Ubuntu use sudo apt install libpango-1.0-0 libpangoft2-1.0-0.
Either you forgot Step 4, or your .env file got saved as .env.txt. Windows loves doing this quietly. Turn on file extension display in Explorer, check the actual filename, and rename it if needed.
It's not supposed to. With EMAIL_HOST blank, Django prints the whole email into the terminal running runserver. Scroll up in that terminal, find the line containing /accounts/verify/, copy that full URL and paste it into your browser. Account verified.
That's django-axes doing its job. Run python manage.py axes_reset and try again.
Another server is running somewhere. Either close it or just use a different port: python manage.py runserver 8001.
Run the test suite first:
python -m pytest -q
All 87 tests should pass. If they do, your setup is correct and you can stop worrying.
Then do a quick manual check as demo@fitpulse.app:
All seven working means you're done. Go rehearse your viva.
Our team is here to assist you with installation and setup.