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.md before 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.db inside 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 (and scripts/activate-pycache.sh for manual setups) automatically create bin/pycache and set PYTHONPYCACHEPREFIX so no __pycache__ folders appear in src/ or tests/.

  • PySide deployment can be prepared with the spec at deploy/pysidedeploy.spec. A typical run looks like:

    bash scripts/build.sh
    

    Pass additional flags after the script name if you need to tweak the deploy call. The spec already points exec_directory to bin/deploy, keeping executables outside the tracked source tree.

  • Avoid installing the project in editable mode to keep *.egg-info files out of src/. Use pip install -r requirements.txt instead.

Architecture Notes

See docs/architecture.md for the MVVM layer diagram, DI wiring and database bootstrap details.

Description
Projekt: Objektorientierte und funktionale Programmierung mit Python (DLBDSOOFPP01_D)
Readme 252 KiB
Languages
Python 80.7%
Shell 19.3%