Flow is a small Python app to manage study sessions and pick the next task for you with a bit of randomness. It provides a simple Tkinter GUI and a lightweight session model that can be extended.
Features
- Create and edit tasks with a completion metric and weight
- Pick next task (uniform or weighted random)
- Save / load sessions as JSON
- Start random sessions from a provider and auto-advance when complete
Quickstart
-
Requirements: Python 3.8+ and Tkinter (on Linux install
python3-tk) -
Run the GUI:
- Windows: run
run.batorpython main_pyside.py - Linux/macOS: run
./run.shorpython3 main_pyside.py
- Windows: run
This project now includes a modern PySide6 (Qt) frontend. The old Tkinter UI
has been archived under legacy_tkinter/.
To run the PySide6 UI ensure PySide6 is installed and run python main_pyside.py.
-
Run unit tests:
python -m unittest discover -v
Development notes
- The core model is in
main.py(classes:Task,StudySession/Session). - The GUI is
gui.pyand usesbackend.py(SessionProvider/SessionController). - Sessions are serialized to JSON via
to_dict()/from_dict()helpers.
Packaging
This project has no external pip dependencies. If you want to package it, add
a pyproject.toml or setup.cfg with an entry point pointing at gui:main.
License
This project is provided as-is for demonstration purposes.