- β Log daily workouts by category and exercise type
- π Track performance and progress over time
- π₯ Admin user management with authentication
- πΎ Uses SQLite β zero setup, file-based database
- π³ Containerised with Docker for effortless deployment
- βοΈ Environment-variable-driven configuration
- π‘οΈ Passwords hashed with
werkzeug.security
- Backend: Python 3.11, Flask, SQLAlchemy, Flask-Migrate
- Database: SQLite (customisable)
- Server: Waitress (production-ready WSGI server)
- Packaging: Docker & Docker Compose
- Python 3.11+
pip- Optional: virtualenv
git clone https://github.com/enrique-paulino/workout-tracker.git
cd workout-tracker
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtpython -m app.init_app
python run.pyOpen http://localhost:5000 in your browser.
Default admin credentials are:
- Username: admin
- Password: adminpass123
You can customise these via environment variables.
The image for this project can be found on Docker.
docker build -t workout-tracker .
docker run -d -p 5000:5000 \
-e PORT=5000 \
-e SQLITE_DB_PATH=sqlite:////app/app.db \
-v $(pwd)/app.db:/app/app.db \
workout-trackerCreate the file first at ./app.db so that docker doesn't assume its a directory.
version: '3.8'
services:
workout-tracker:
image: ennoluto/workout-tracker:latest
container_name: workout-tracker
ports:
- "5000:5000" # host:container (change host port if you want, e.g. "272:5000")
environment:
- PORT=5000
- SQLITE_DB_PATH=sqlite:////app/app.db
volumes:
- ./app.db:/app/app.dbStart with:
docker-compose up -d
The application uses environment variables for configuration. Below are the supported options:
| Environment Variable | Description | Default |
|---|---|---|
PORT |
Port the app listens on | 5000 |
SQLITE_DB_PATH |
SQLAlchemy DB URI | sqlite:///app.db |
ADMIN_USERNAME |
Admin account username | admin |
ADMIN_EMAIL |
Admin email | admin@example.com |
ADMIN_PASSWORD |
Admin password (hashed internally) | adminpass123 |
This project is licensed under the MIT License.
Made with πͺ by @enrique-paulino
Contributions, issues and feedback welcome!
