Skip to main content

A graphical tool to track, visualize, and analyze your learning progress.

Project description

๐Ÿ“ˆ Learning Progress Tracker

PyPI version License: MIT Python Version

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

learning_tracker_app-1.0.0.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

learning_tracker_app-1.0.0-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

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

Hashes for learning_tracker_app-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e19fcb885bac4c66500fe115259faad2e207d05a4fbb37a1f9ee1c432be0fe0d
MD5 da9d7621fdd5cf50e087aa76a75b3366
BLAKE2b-256 2709cc48d769de11a6b1030c79b62c6ded3641f8bc049df66ed54babceb98b79

See more details on using hashes here.

File details

Details for the file learning_tracker_app-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for learning_tracker_app-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 acd51c72d0df8ff46212f20b63bf812fe4291470983bb09ec58cfd8e46c2f5f4
MD5 559ebb08bc8a0c18bd034b3d29698ecf
BLAKE2b-256 041824637e13b3ea6f93aa5abc2cefc1f512b62ed2f06acb9b36393e30e1f210

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page