Simple study tracker written in Flask. Specifically it was created for tracking CCIE topics but can be used for studies. This is a 80/20 Vibe coding project as I'm not this pro in Flask but needed a tool/app to track progress.
- Track study items with details like
- Title
- Notes
- Hours spent
- Progress
- Confidence levels
- Theoretical
- Practical
- App password protection (optional)
- Sortable item list
- Search study items by title
- Bulk and selective delete operations
- Summary statistics (total items, hours, average progress)
- Bulk import from Excel. This feature was added just for importing the CCIE practical exam topics excel that is provided by the Cisco team. Unfortunately not all study tracks has the same file content structure.
- Calendar (which is the most useful part)
- Key dates (exam, bootcamp, etc..) can be added to it and it shows on the main page and the remain days.
- Shows the updates on the different topics
- Dark/light theme toggle
- Stats on learning progress
app_walk-through.mp4
- Clone or download the project.
git clone https://github.com/routingalchemy/CCIE_study_tracker - Choose between native or docker run.
- Native: Install dependencies into a virtual environment:
cd CCIE_study_tracker python3 -m venv study_tracker source study_tracker/bin/activate pip install -r requirements.txt
- Docker (working docker install)
cd CCIE_study_tracker docker build -t ccie_tracker .
- The app will run on http://localhost:5000
Edit config.py or set environment variables:
ENABLE_PASSWORD_PROTECTION: Enable/disable password protection (default: True)APP_PASSWORD: Set the password (default: 'admin')SECRET_KEY: Flask secret key (change in production)DEBUG: Enable debug mode (default: False)DATABASE_PATH: SQLite database path (default: 'study_tracker.db')DEFAULT_THEME: Default theme 'light' or 'dark' (default: 'light')
#activate virtual environment
python3 app.pyThe app will run on http://localhost:5000
- build the image
docker build -t ccie_tracker . - simply running the container (for environmental variables check docker compose file)
docker run -d --name tracker -p 5000:5000 ccie_tracker:latest #minimal run
docker run -d --name tracker -p 5000:5000 -e ENABLE_PASSWORD_PROTECTION=False ccie_tracker:latest #no password authenticaltion
docker run -d --name tracker -p 5000:5000 -e APP_PASSWORD=iamcciegod ccie_tracker:latest #set awesome password- or using docker compose
#after editing the docker-compose.yml
docker-compose up -dSECRET_KEY: Change to a secure random string for productionAPP_PASSWORD: Set your application passwordENABLE_PASSWORD_PROTECTION: Set to 'false' to disable password protectionDEFAULT_THEME: Set to 'light' or 'dark'DEBUG= Set Flask Debug modeDATABASE_URL= Set desired database to use (never tested, only used sqlite)
The bulk import feature allows you to upload Excel files (.xlsx or .xls) and map columns to study item fields:
- Click "Import" in the navigation
- Upload an Excel file
- Select the worksheet to import from (if the file has multiple sheets)
- Specify the row number where your data starts (usually 2 if row 1 has headers)
- Map columns using Excel letters (A, B, C, etc.)
- Multiple columns can be selected for Title and Notes - they will be concatenated
- Rows with empty titles will be skipped automatically
- The system handles missing data gracefully with sensible defaults