How ilryaz/das-ist-ja-einfach works
Purpose and Entry Point
A Python/PySide6 desktop productivity application for tracking study time, per-subject weekly goals, calendar history, and quick-add sessions. The executable entry point is main.py, which initializes the Qt application and main window.
Application Shell
The main desktop UI is centered on app/main_window.py. It owns the Qt Widgets window lifecycle, assembles plugin-provided content, and applies the selected visual theme. app/__init__.py establishes the application package boundary.
Plugin Loading Boundary
app/plugin_manager.py is the extension boundary between the shell and feature modules. It discovers/loads plugins from plugins/, allowing domain functionality to be organized independently of the core window. Plugin package roots are plugins/__init__.py and plugins/school/__init__.py.
School/Study Domain Plugin
The currently material feature is the school plugin:
• plugins/school/plugin.py defines the plugin integration contract/registration with the host.
• plugins/school/page.py supplies the Qt page and user interactions for subject management, time controls, weekly progress, and calendar-oriented tracking.
• plugins/school/model.py contains the domain state and persistence-facing logic, separating study data from widget code.
Primary flow: user interaction in the school page updates the school model; the model persists changed state to JSON; refreshed model state drives progress and calendar UI.
Persistence and Defaults
The application uses local JSON files under data/, with default templates used to bootstrap missing mutable files. Global preferences are represented by data/settings.default.json and data/settings.json. School-specific persisted state is partitioned into:
• data/school/data.default.json for baseline subject/session data,
• data/school/week_config.json with week_config.default.json for weekly-goal configuration,
• data/school/time_buttons.json with time_buttons.default.json for customizable quick-add durations.
This creates a clear boundary: checked-in default templates define initial schema/content, while non-default JSON files hold user state.
Themes and Presentation Assets
Themes are data-driven palettes in themes/light.json, themes/dark.json, and themes/catppuccin.json. themes/template.qss is the shared Qt stylesheet template, likely populated from a selected palette before applying it to the Qt application. Theme selection is therefore separate from feature/plugin UI logic.
Runtime and External Dependencies
Runtime is local desktop Python using PySide6 and Qt Widgets; no server, database, or external API is indicated. Persistence is filesystem-based via JSON and pathlib. The main operational boundary is therefore the local machine: Qt event loop/UI on one side, JSON-backed application and plugin state on the other.
Main entry points: main_window.py Main window · model.py Study model · plugin.py School registration · plugin_manager.py Plugin manager
Components 16
Application Shell
- Desktop entry point · Initializes Qt and the main window.
main.py - Main window · Owns window lifecycle, plugin content, and theme application.
app/main_window.py - Plugin manager · Discovers and loads feature plugins.
app/plugin_manager.py - App package
app/__init__.py
School Plugin
- School registration · Registers the school feature with the host.
plugins/school/plugin.py - Study page · Handles subjects, timers, weekly progress, and calendar interactions.
plugins/school/page.py - Study model · Owns study state and JSON-backed updates.
plugins/school/model.py - Plugin packages
plugins/__init__.py - School package
plugins/school/__init__.py
Local JSON Storage
- Settings defaults · Bootstrap preferences schema and values.
data/settings.default.json - User settings · Persisted global preferences.
data/settings.json - School data defaults · Baseline subject and session data.
data/school/data.default.json - Weekly goals · Weekly-goal configuration and its defaults.
data/school/week_config.json - Quick-add durations · Customizable time-button configuration and defaults.
data/school/time_buttons.json
Theme Assets
- Theme palettes · Light, dark, and Catppuccin palette data.
themes/light.json - Qt stylesheet template · Shared stylesheet populated from the selected palette.
themes/template.qss
Connections 15
- Desktop entry point → Main window: starts
- Main window → Plugin manager: loads content through
- Plugin manager → School registration: discovers and loads
- School registration → Study page: provides
- Study page → Study model: updates and refreshes from
- Study model → School data defaults: bootstraps from
- Study model → Weekly goals: persists weekly goals
- Study model → Quick-add durations: persists quick-add settings
- Main window → User settings: uses preferences
- Settings defaults → User settings: bootstraps missing state
- Main window → Theme palettes: selects palette
- Theme palettes → Qt stylesheet template: populates
- Qt stylesheet template → Main window: applies Qt styling
- Plugin packages → School package: contains
- School package → School registration: contains