A graphical tool to track, visualize, and analyze your learning progress.
Project description
๐ 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file learning_tracker_app-1.0.0.tar.gz.
File metadata
- Download URL: learning_tracker_app-1.0.0.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e19fcb885bac4c66500fe115259faad2e207d05a4fbb37a1f9ee1c432be0fe0d
|
|
| MD5 |
da9d7621fdd5cf50e087aa76a75b3366
|
|
| BLAKE2b-256 |
2709cc48d769de11a6b1030c79b62c6ded3641f8bc049df66ed54babceb98b79
|
File details
Details for the file learning_tracker_app-1.0.0-py3-none-any.whl.
File metadata
- Download URL: learning_tracker_app-1.0.0-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acd51c72d0df8ff46212f20b63bf812fe4291470983bb09ec58cfd8e46c2f5f4
|
|
| MD5 |
559ebb08bc8a0c18bd034b3d29698ecf
|
|
| BLAKE2b-256 |
041824637e13b3ea6f93aa5abc2cefc1f512b62ed2f06acb9b36393e30e1f210
|