How elias-phy-ja/semestria works
Semestria is a local-first school companion: it reads a personal Schulnetz iCal feed, parses lessons, exams and appointments, then optionally syncs selected events to Outlook. Its WPF app also manages profiles, calendar entries, tasks and grade calculations, with a tray mode and update/news features. The main sync and persistence links are supported by excerpts or the source index; several UI feature links are documented in the README, since their implementation was not sampled.
Main entry points: SyncService.cs Sync service · App.xaml.cs App startup · AppState.cs App state · HttpFeedSource.cs iCal fetch
Components 24
Feed and events
- iCal fetch
SchulnetzSync.Core/Feed/HttpFeedSource.cs - iCal parser
SchulnetzSync.Core/Feed/FeedParser.cs - School events
SchulnetzSync.Core/Model/SchulnetzEvent.cs
Outlook sync
- Sync service
SchulnetzSync.UI/Services/SyncService.cs - Sync planner
SchulnetzSync.Core/Sync/SyncEngine.cs - Sync actions
SchulnetzSync.Core/Sync/SyncPlan.cs - Graph calendar
SchulnetzSync.Core/Calendar/GraphCalendarTarget.cs - Microsoft sign-in
SchulnetzSync.Core/Calendar/MsalAuthProvider.cs
App and profiles
- App startup
SchulnetzSync.UI/App.xaml.cs - Profile management
SchulnetzSync.Core/Profiles/Profile.cs - Profile paths
SchulnetzSync.Core/Profiles/DataPaths.cs - Sync configuration
SchulnetzSync.Core/Configuration/ConfigManager.cs - Local user data
SchulnetzSync.Core/Storage/LocalJsonStore.cs - App state
SchulnetzSync.UI/AppState.cs
School tools
- Calendar views
SchulnetzSync.UI/Pages/EventsPage.xaml.cs - Tasks and reminders
SchulnetzSync.UI/Pages/TasksPage.xaml.cs - Grades and promotion
SchulnetzSync.Core/Grades/PromotionRule.cs - Dashboard
SchulnetzSync.UI/Pages/DashboardPage.xaml.cs
App services
- System tray
SchulnetzSync.UI/TrayService.cs - News
SchulnetzSync.Core/News/HttpNewsSource.cs - Update checks
SchulnetzSync.Core/Update/UpdateGate.cs - Guides and help
SchulnetzSync.UI/Pages/HelpPage.xaml.cs
Other components
- Student
- Outlook calendar
Connections 25
- Student → App startup: opens
SchulnetzSync.UI/App.xaml.cs - App startup → Profile management: initializes
SchulnetzSync.UI/App.xaml.cs - Profile management → Profile paths: selects paths
SchulnetzSync.Core/Profiles/DataPaths.cs - App startup → System tray: starts
SchulnetzSync.UI/App.xaml.cs - App startup → News: loads news
SchulnetzSync.UI/App.xaml.cs - App startup → Update checks: checks updates
- Student → iCal fetch: provides feed
- iCal fetch → iCal parser: supplies iCal
SchulnetzSync.UI/Services/SyncService.cs - iCal parser → School events: creates events
SchulnetzSync.Core/Feed/FeedParser.cs - Sync service → iCal fetch: fetches feed
SchulnetzSync.UI/Services/SyncService.cs - Sync service → iCal parser: parses feed
SchulnetzSync.UI/Services/SyncService.cs - Sync service → Sync planner: builds plan
SchulnetzSync.UI/Services/SyncService.cs - Sync planner → Sync actions: returns actions
SchulnetzSync.Core/Sync/SyncEngine.cs - Sync service → Graph calendar: executes plan
SchulnetzSync.UI/Services/SyncService.cs - Graph calendar → Outlook calendar: reads and writes
- Sync service → Microsoft sign-in: acquires token
SchulnetzSync.UI/Services/SyncService.cs - Microsoft sign-in → Outlook calendar: authenticates
SchulnetzSync.Core/Calendar/MsalAuthProvider.cs - App state → Local user data: persists data
SchulnetzSync.UI/AppState.cs - App state → Sync configuration: loads config
SchulnetzSync.UI/AppState.cs - Student → Calendar views: views calendar
README.md - Student → Tasks and reminders: manages tasks
README.md - Tasks and reminders → App state: uses app state
SchulnetzSync.UI/Pages/TasksPage.xaml.cs - Student → Grades and promotion: calculates grades
README.md - Student → Dashboard: checks overview
README.md - Student → Guides and help: opens guidance
README.md