Skip to content
502ProxyPublic

About

A native macOS study workspace for organizing PDF lecture slides, taking page-specific Markdown/LaTeX notes, reviewing spaced-repetition flashcards, and compiling notes into structured study sheets. Built with SwiftUI, SwiftData, PDFKit, and bundled KaTeX.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

StudyApp

StudyApp is a native macOS study workspace for university students. It connects your timetable, your lecture material and your learning:

  • Timetable → modules: subscribe to your university calendar; every course becomes a module and every occurrence is linked to it.
  • Lecture autopilot: open the app during a lecture and the slides of that lecture are already open, at the page where you stopped.
  • Slides, notes and learning: annotate PDFs, write Markdown/LaTeX notes per page or per lecture, review flashcards with spaced repetition and compile study sheets.
  • Stud.IP: sign in (including two-factor authentication), link modules to courses and let new slides and files arrive automatically.
  • Organisation: assignments with deadlines, grades and ECTS per semester, semester archive, automatic updates.

All data stays on your Mac. There is no account, no backend and no analytics.

Quick start

Requirements: macOS 26.5 and Xcode 26 or later.

git clone https://github.com/502Proxy/StudyApp.git
cd StudyApp
open StudyApp.xcodeproj        # run the "StudyApp" scheme with ⌘R

Xcode resolves the only package dependency, Sparkle, on first build. For contributing, also install the quality tools once:

brew install swiftlint xcbeautify
scripts/qa.sh hooks            # commit-msg, pre-commit and pre-push hooks
scripts/qa.sh                  # SwiftLint (strict) + unit tests

Documentation

Document Contents
Features What the app does and where each feature lives in the code
Architecture Layers, dependency rule, composition root, concurrency, design patterns
Calendar iCalendar support, subscriptions, course detection
Stud.IP Sign-in (password or browser with 2FA), JSON:API endpoints, sync rules
Quality assurance scripts/qa.sh, Git hooks, CI, SwiftLint configuration
Releasing Building a DMG, signing updates, publishing the appcast
Design Colour tokens, dark mode rules and mockups
Contributing Issue workflow, labels, milestones, commit messages, code and test conventions
Security Reporting vulnerabilities
Changelog User-facing changes per version

Project structure

App/              Entry point, composition root (AppContainer), updater
Domain/           Entities, repository protocols (ports) and use cases – no UI or persistence frameworks
Data/             Adapters: SwiftData, files, PDFKit, iCalendar parser, Stud.IP client, keychain
Presentation/     SwiftUI views and observable view models, grouped by feature
StudyAppTests/    Swift Testing suites with in-memory fakes
Config/           Info.plist and entitlements
docs/             Documentation, release notes and the update feed (served via GitHub Pages)
scripts/          qa.sh (quality checks) and release.sh (DMG + update feed)

Data and privacy

  • Modules, notes, flashcards, study sheets, assignments, calendar events and the Stud.IP file catalog are stored with SwiftData in the app's sandbox container.
  • Imported PDFs and downloaded Stud.IP files live in ~/Library/Containers/<bundle id>/Data/Library/Application Support/StudyApp/Slides.
  • Network access is limited to calendar subscriptions, Stud.IP and the update feed. The Stud.IP password or session is kept in the macOS keychain only.

License

StudyApp is released under the Apache License 2.0. The bundled KaTeX distribution (Presentation/Resources/KaTeX) keeps its own MIT license; Sparkle is licensed under the MIT license.

About

A native macOS study workspace for organizing PDF lecture slides, taking page-specific Markdown/LaTeX notes, reviewing spaced-repetition flashcards, and compiling notes into structured study sheets. Built with SwiftUI, SwiftData, PDFKit, and bundled KaTeX.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages