Skip to content

Repository files navigation

Astra ✨

Material You Expressive alternative for DSBmobile

App Icon

Stars Issues License Android Kotlin Website

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.


✨ Features

  • 🎨 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

📸 Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

⬇️ Download

Source Link
Obtainium Add repository
GitHub Releases Latest release
Website wolly.is-a.dev/dsbmaterial
F-Droid Coming soon

🧱 Built with

📂 Project structure

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

🛠️ Building from source

  1. Clone the repository
    git clone https://github.com/WollyDev24/DSBmaterial
  2. Open in Android StudioOpen an Existing Project, select the cloned directory
  3. Sync and build — let Gradle resolve dependencies, then Build → Make Project
  4. Run — connect a device or start an emulator, then press Run ▶️

Prefer the command line?

./gradlew assembleRelease

🤝 Contributing

Contributions are welcome! Please feel free to submit a pull request.

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/AmazingFeature
  3. Commit your changes: git commit -m 'Add some AmazingFeature'
  4. Push to the branch: git push origin feature/AmazingFeature
  5. Open a pull request

⭐ Special thanks

📄 License

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

About

Native Material3 Expressive replacement for DSBmobile

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages