Study Dashboard
PySide6 based dashboard to keep track of study progress, built with a lightweight MVVM architecture, dependency injection and a local SQLite database that bootstraps itself with example data.
Copilot agents: read
.github/copilot-instructions.mdbefore making changes for a condensed list of mandatory workflows.
Stack Overview
- PySide6 for the GUI (widgets, signals/slots, Designer integration)
- dependency-injector for composing services, repositories and view models
- SQLite (local file
study.dbinside the repo) for persistence - pytest, mypy, flake8 and black for TDD-inspired workflows and quality gates
Development Environment (venv)
# Clone the project
git clone https://git.ghostnet.selfhost.eu/spektr/study-dashboard.git
cd study-dashboard
# Create/refresh the virtual environment and install requirements
bash scripts/bootstrap.sh
The script creates .venv if necessary, upgrades pip, and installs everything from requirements.txt. Re-run it whenever dependencies change.
Running the Application
Run the dashboard (the script takes care of PYTHONPYCACHEPREFIX and PYTHONPATH):
bash scripts/run-app.sh
On startup the app ensures the SQLite database exists, creates the schema if required and seeds demo modules, exams and calendar entries.
Tests & Quality
# optional pytest args are forwarded, e.g. "-k view_model"
bash scripts/run-qa.sh
run-qa.sh executes pytest, mypy, flake8 and black (check mode) with the correct environment so caches stay under bin/.
Cleanup
If another agent or IDE command ran outside the helper scripts and created __pycache__ folders inside src/ or tests/, clean them up with:
bash scripts/clean.sh
The script removes any stray bytecode caches or *.pyc files under the tracked source tree without touching other temporary files in the project root.
Generated Files & Deployment
-
All temporary build artefacts live under
bin/, which is ignored by git. The helper scripts (andscripts/activate-pycache.shfor manual setups) automatically createbin/pycacheand setPYTHONPYCACHEPREFIXso no__pycache__folders appear insrc/ortests/. -
PySide deployment can be prepared with the spec at
deploy/pysidedeploy.spec. A typical run looks like:bash scripts/build.shPass additional flags after the script name if you need to tweak the deploy call. The spec already points
exec_directorytobin/deploy, keeping executables outside the tracked source tree. -
Avoid installing the project in editable mode to keep
*.egg-infofiles out ofsrc/. Usepip install -r requirements.txtinstead.
Architecture Notes
See docs/architecture.md for the MVVM layer diagram, DI wiring and database bootstrap details.