Classi is a local-first Flutter app for teachers. It stores groups, students,
grades, notes, checklists, and material tracking data in encrypted .classi
libraries. Automatic backup and restore to a WebDAV server keeps your data safe
and portable across devices.
- Android
- macOS
- Windows
- Linux
- SQLCipher-backed Drift database with passphrase setup and recovery key support
- Adaptive navigation for groups, notes, and settings
- Groups and students flow, including archive, unarchive, clone, and deletion
- Batch student creation and WebUntis class-list import
- Grade entry, chart-based grade history, checklist management, note management, and material tracking
- Avatar editing powered by
avatar_maker, persisted per student in the local database - WebDAV backup with automatic upload on lock and automatic restore on startup
- Configurable light, dark, and system theme
- Auto-update for desktop platforms (macOS, Windows, Linux) via the
updatpackage - English and German translations through
easy_localization
Classi stores your library in a .classi folder that you choose during the
first-run setup. The setup wizard always requires an explicit folder selection
so your data is never silently placed inside an app-private directory.
Recommended locations:
| Platform | Recommended folder |
|---|---|
| Android | A folder in shared storage such as Documents — not inside Android/data/, which is erased when the app is uninstalled |
| macOS (App Store) | ~/Documents/Classi or another location outside ~/Library/Containers/ |
| macOS / Windows / Linux | Any folder in your home directory or an accessible drive |
Classi can automatically back up your library to any WebDAV server (e.g. Nextcloud, ownCloud, or a self-hosted server). Configure the server URL, credentials, and remote folder path in Settings → Backups. Once saved:
- Auto-export uploads a
.classi-backuparchive whenever Classi locks or switches libraries. - Auto-import checks for a newer backup on startup and offers to restore it.
You can also trigger a manual restore from the setup screen by choosing Restore from WebDAV backup.
Linux desktop builds need native packages installed first:
sudo apt-get update
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libsecret-1-dev libssl-devflutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter analyze
flutter test
flutter run -d android
flutter run -d macos
flutter run -d windows
flutter run -d linuxmacOS desktop builds require Xcode on a Mac with command-line tools installed.
Releases are packaged with Fastforge:
dart pub global activate fastforge
fastforge package --platform android --targets apk
fastforge package --platform linux --targets appimage
fastforge package --platform macos --targets dmg
fastforge package --platform windows --targets exeOr run all platforms at once using the project release config:
fastforge release --name releaseSee CONTRIBUTING.md for local setup, pull request expectations, and release hygiene.
Three workflows are included:
-
ci.yml— runs on every push tomain/masterand on pull requests. It installs dependencies, runs Drift code generation, analyzes the code, and executes the test suite. -
build-pr.yml— triggered by posting a slash command as a comment on any pull request. Supported commands:/build android— builds and uploads an APK/build linux— builds and uploads an AppImage/build macos— builds and uploads a DMG/build windows— builds and uploads an EXE installer
Only the requested platform is built using Fastforge. Once the artifact is uploaded the workflow replies directly on the pull request with a link to download the artifact.
Android PR builds use the application ID
org.openpatch.classi.prso they can be installed alongside the production app without overwriting it. -
release.yml— triggered by version tags (v*). It generates a changelog withgit-cliff, commits an updatedCHANGELOG.md, builds release artifacts for Android (APK), Linux (AppImage), macOS (DMG), and Windows (EXE installer) using Fastforge, and publishes a GitHub Release with all artifacts attached.
Released under the MIT License.
