A modern, native Material You Expressive replacement for the official DSBmobile app. It shows your school's daily substitution plan in a clean, fast and fully customizable interface.
The official DSBmobile app hasn't been updated in two years and isn't native at all. Astra is built from scratch with Kotlin and Jetpack Compose.
- 🎨 Material You Expressive design — dynamic color, themes, motion
- 🎛️ Theme picker — many accent colors to choose from
- 🧩 Home-screen widget — the latest substitution plan at a glance
- 🔄 Automatic background refresh — always up to date
- 🗄️ Archive — browse past substitution plans
- 📅 Calendar view — see your schedule by date
- 🌐 Local webserver — share the plan on your home network
- 🐞 Debug mode — plus offline / state screens
| Source | Link |
|---|---|
| Obtainium | Add repository |
| GitHub Releases | Latest release |
| Website | wolly.is-a.dev/dsbmaterial |
| Coming soon |
- Kotlin + Jetpack Compose / Material 3
- OkHttp · jsoup · Gson
- DataStore
- Glance (widget)
- WorkManager · NanoHTTPD
app/src/main/
├── assets/webserver/ # Self-contained browser page for the local webserver
├── res/
│ ├── font/google_sans_flex.ttf # Bundled variable font (SIL OFL 1.1)
│ └── ... # Layouts, values, themes, app icon
└── java/dev/wolly/dsbmaterial/
├── api/
│ └── DSBMobileAPI.kt # API client for DSBmobile (GZIP/HTML parsing)
├── data/
│ ├── DataStoreManager.kt # Persistent storage for settings & credentials
│ └── Models.kt # Data classes for substitution entries
├── ui/
│ ├── theme/ # Material 3 Theme, Color, Type, Shape, Motion
│ ├── components/ # Shared UI components (sliders, buttons, layout)
│ ├── screens/ # Home, Substitutions, Archive, Calendar, Settings,
│ │ # Theme picker, About, Share card, Debug mode, State screens
│ └── MainViewModel.kt # Business logic and UI state
├── AutoFetchWorker.kt # Background auto-refresh of the substitution plan
├── LocalWebServer.kt # NanoHTTPD server serving the plan over the local network
├── DSBWidget.kt / DSBWidgetReceiver.kt # Home-screen widget
├── DSBApp.kt # Application class
└── MainActivity.kt # Main entry point and all Compose UI screens
- Clone the repository
git clone https://github.com/WollyDev24/DSBmaterial
- Open in Android Studio — Open an Existing Project, select the cloned directory
- Sync and build — let Gradle resolve dependencies, then Build → Make Project
- Run — connect a device or start an emulator, then press Run
▶️
Prefer the command line?
./gradlew assembleRelease
Contributions are welcome! Please feel free to submit a pull request.
- Fork the repository
- Create your feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m 'Add some AmazingFeature' - Push to the branch:
git push origin feature/AmazingFeature - Open a pull request
- Tenner/dsbmobile — understanding and usage of the DSBmobile API
This project is licensed under the Apache 2.0 License — see the LICENSE file for details. Third-party attributions are listed in the NOTICE file.
Made with ❤️ by WollyDev24



