📈 Learning Progress Tracker
A premium, interactive desktop GUI application built in Python (using standard Tkinter) to map, visualize, track, and analyze your learning progress.
Create custom question-concept networks, track when you master items, see incremental snapshots of your growth, and automatically export gorgeous, interactive analytics dashboards.
✨ Key Features
- 🧠 Interactive Mind Mapping: Drag and drop nodes, double-click to view details, and draw directed learning dependencies dynamically.
- 🎨 State-of-the-Art Visuals:
- Difficulty-based node shapes (Circular for Easy, Rectangular for Medium, Triangular for Hard, Diamond for Challenging, and Star-shaped for Extreme).
- Snapshot-based heatmaps (automatically ranges node colors from light red to light blue depending on when you created them relative to your learning journey).
- Visual cues like bold checkmark badges on mastered nodes.
- ⏱️ Professional History Engine: Full multi-level Undo (
Ctrl+Z) and Redo (Ctrl+Y) operations for all layout, connection, and data updates. - 📊 Premium Interactive Dashboard: Generates Plotly-powered charts:
- Pie chart of answered vs unanswered questions (overall and snapshot-specific).
- Bar chart timeline of concept creation trends.
- Scatter-line chart mapping node connectivity (in-degree and out-degree analysis).
- Fully responsive HTML sidebar-driven multi-dashboard uniting all analytics.
- 📂 Clean File Persistence: Custom JSON save/load system allowing multiple distinct learning graphs.
📂 Project Directory Structure
The application has been restructured using the modern Python src/ layout recommended for robust, conflict-free packaging and publishing:
LearningTrackerApp/
├── src/
│ └── learning_tracker/
│ ├── __init__.py # Package exports & metadata
│ ├── main.py # Application launcher and logger init
│ ├── models.py # Dataclasses (QuestionNode, LearningGraph)
│ ├── storage.py # JSON I/O and export directories
│ ├── utils.py # Subgraph traversals & timestamp binning
│ ├── statistics_engine.py # Plotly dashboards HTML generator
│ ├── gui_main.py # Main window & toolbars orchestration
│ ├── gui_canvas.py # Custom canvas with drag, shift-drag cues
│ └── gui_popups.py # Popups for node details creation/edits
├── pyproject.toml # Modern PEP 621 packaging metadata
├── LICENSE # MIT License
└── README.md # Comprehensive product guide
🚀 Installation
You can install the package directly using standard pip tools once published.
Core GUI Only
To keep dependencies extremely light (GUI runs entirely on built-in standard library tools), run:
pip install learning-tracker-app
Full Analytical Dashboard Support (Recommended)
To enable generating interactive Plotly dashboards and data reports, install with the stats extras:
pip install learning-tracker-app[stats]
🎮 Running the Application
After installing, run the app directly from your terminal using the custom CLI entry point:
learning-tracker
Alternatively, you can run the package module:
python -m learning_tracker
🖱️ Quick Controls Cheat Sheet
| Interaction | Action |
|---|---|
| Right-Click on empty canvas | Create a new standalone node |
| Shift + Left-Click + Drag from a node to empty canvas | Create a new node and draw a connection to it instantly |
| Shift + Left-Click + Drag from a node to another node | Draw a directed edge (learning dependency) |
| Left-Click on a node | Open detail editor (view dates, edit question/answers, set difficulty, mark completed) |
| Left-Click + Drag on a node | Reposition node on the canvas smoothly |
Ctrl + Z / Ctrl + Y |
Undo / Redo any action |
📦 Publishing to PyPI
Here is the quick guide to build and upload your package. Make sure you have build and twine installed:
pip install --upgrade build twine
1. Build the Distribution
Run the build script from the project root folder (where pyproject.toml resides):
python -m build
This generates .tar.gz (source distribution) and .whl (built distribution) packages in the dist/ directory.
2. Verify Your Build
Ensure package descriptions are formatted correctly and metadata matches PyPI rules:
twine check dist/*
3. Upload to TestPyPI (Recommended first step)
Verify everything looks correct on the test repository:
twine upload --repository testpypi dist/*
4. Upload to Production PyPI
Publish your app to the world!
twine upload dist/*
📄 License
Distributed under the MIT License. See LICENSE for more details.
Release files for learning-tracker-app 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| learning_tracker_app-1.0.0.tar.gz | 24.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| learning_tracker_app-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.4 kB
Release files / learning_tracker_app-1.0.0.tar.gz
| Download URL | learning_tracker_app-1.0.0.tar.gz |
|---|---|
| Size | 24.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e19fcb885bac4c66500fe115259faad2e207d05a4fbb37a1f9ee1c432be0fe0d
|
|
BLAKE2b-256 checksum How to use checksums |
2709cc48d769de11a6b1030c79b62c6ded3641f8bc049df66ed54babceb98b79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / learning_tracker_app-1.0.0-py3-none-any.whl
| Download URL | learning_tracker_app-1.0.0-py3-none-any.whl |
|---|---|
| Size | 25.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
acd51c72d0df8ff46212f20b63bf812fe4291470983bb09ec58cfd8e46c2f5f4
|
|
BLAKE2b-256 checksum How to use checksums |
041824637e13b3ea6f93aa5abc2cefc1f512b62ed2f06acb9b36393e30e1f210
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|