fragmject: Kotlin und Jetpack Compose am echten Beispiel lernen
fragmject ist ein Lernprojekt, das für Kotlin und Jetpack Compose erstellt wurde. | fragmject Kotlin Compose App fragmject Android Developer .
Auf einen Blick
- Was ist das?
- fragmject ist ein Lernprojekt, das Anfängern Kotlin und Jetpack Compose an einer fertigen App zeigt und dabei bewusst wenige Drittbibliotheken einsetzt; die Übungs-App deckt MVVM, MVI, adaptive Layouts und wiederverwendbare Komponenten ab.
- Für wen ist es gedacht?
- fragmject eignet sich für Kotlin- und Compose-Einsteiger, die einen kompakten, gut lesbaren Beispielcode suchen und lernen wollen, wie MVVM, MVI, Hilt und WindowSizeClass zusammenwirken. Vor dem Einstieg sollte man prüfen, ob die API-Aufrufe und Bibliotheksversionen noch zum aktuellen Android Studio passen, denn der letzte Push liegt im August 2021.
- Darf ich es kommerziell nutzen?
- Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 9 Tagen.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich Kotlin, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Lernprojekt aus einem fehlenden Beispiel heraus entstanden
fragmject ist ein Übungsprojekt für Kotlin und Jetpack Compose, das der Autor im Vorwort damit begründet, dass ihm zum Lernen ein komplettes Beispiel gefehlt hat. Bücher und Videos erklären die Sprache in Einzelpunkten; echte Open-Source-Apps sind dagegen voller Geschäftslogik und verschachtelter Abstraktionen, die ein Anfänger kaum durchsteigt. Das Repository will deshalb einen Mittelweg bieten: eine funktionsfähige App, die an der offenen Schnittstelle von WanAndroid hängt und nach den Vorlagen der offiziellen Android-Entwicklerdokumentation geschrieben ist.
Der Anspruch läuft auf zwei Punkte hinaus. Die App soll vollständig sein, also nicht nur einen Bildschirm zeigen, sondern einen typischen Ablauf mit Liste, Detailansicht und Einstellungen. Zugleich soll der Code einfach bleiben, ohne unnötige Kapselung. Wer das Projekt durcharbeitet, soll damit auch die Entwurfs- und Verpackungsideen anderer Projekte verstehen lernen.
Technologie-Stack: Kotlin 2.4.x, Compose, Navigation 3 und Hilt
Der technische Aufbau steht im README als Liste. Die Sprache ist Kotlin 2.4.x in Kombination mit Compose, die Architektur mischt MVVM und MVI und verteilt sich auf mehrere Module mit den Ebenen core, feature und app. Navigation 3 übernimmt die Wege zwischen den Bildschirmen, aufgebaut aus NavBackStack und NavDisplay. Die Oberfläche baut auf Material 3 auf und nutzt WindowSizeClass für die Anpassung an große Bildschirme.
Dazu kommen Hilt für die Abhängigkeitsinjektion, Room 3 für die Datenhaltung, Retrofit und OkHttp für das Netz und Gradle Kotlin DSL mit Version Catalog sowie Konventions-Plugins für den Build. An fortgeschrittenen Themen führt das README Bytecode-Instrumentierung mit ASM auf, etwa für das automatische Setzen von Tracking-Ereignissen, und ein eigenes Plugin für die Anpassung privatrelevanter Felder. Für ein Lernprojekt ist das ungewöhnlich viel, zugleich bleibt es bei den aufgezählten Bausteinen.
Bewusst wenige Drittbibliotheken, viele eigene Bausteine
Das auffälligste Prinzip ist die Zurückhaltung bei externen Abhängigkeiten. Der Autor nennt zwei Gründe: Bibliotheken wirken nach außen einfach, aber ihre Implementierung ist oft komplex, und wer früh in ihren Quellcode steigt, verliert schnell die Motivation. Außerdem verwechseln Anfänger gern die Fähigkeit der Bibliothek mit ihrer eigenen, und ohne die Bibliothek bleibt wenig übrig.
Deshalb implementiert das Projekt vieles selbst, auch wenn der Code nach eigener Einschätzung nicht immer elegant ausfällt. Zum Umfang gehören ein SharedFlowBus als Nachrichtenbus, der mit SharedFlowBus.with(objectKey).tryEmit(value) Meldungen sendet und über observe(owner) abonniert, dazu ein Bildeditor mit Beschnitt, Sticker, Graffiti und Unschärfe, ein Kalender mit calendarState sowie Rollen- und Datums-Wheels. Solche Komponenten lassen sich direkt in eigene Apps übernehmen, wenn man die gezeigten Klassen wie PictureEditorDialog oder PictureClipView als Vorlage nutzt.
Drei Layoutstrategien nach WindowSizeClass
Für große Bildschirme setzt das Projekt auf material3-window-size-class und verteilt die Navigation je nach Breite. Unter 600 dp kommt eine untere Navigationsleiste zum Einsatz, Detailseiten werden vollflächig eingeschoben. Zwischen 600 und 840 dp wechselt die Navigation auf ein Bedienelement links neben einem Surface, und ab 840 dp sitzt die Navigation in einem festen Seitenbereich. Erst in dieser Expanded-Stufe wird die Liste-Detail-Ansicht aktiv, Artikel, Nutzerprofile und Einstellungen erscheinen dann nicht mehr als eigene Seiten, sondern rechts in einem DetailPane.
Die Auswahl im Code läuft über LocalWindowSizeClass.current und eine when-Abfrage auf WindowWidthSizeClass.Compact, Medium oder Expanded. Die zuständigen Dateien sind im README benannt: LocalWindowSizeClass.kt in core/designsystem für die Injektion, WanNavGraph.kt im app-Modul für das Abfangen der Navigation und MainScreen.kt im feature/wan-Pfad für die Verteilung auf drei Layouts.
Projekt starten: Android Studio und die Voraussetzungen
Zum Ausführen empfiehlt das README eine aktuelle Version von Android Studio und verweist auf den offiziellen Download. Die Versionen werden zentral in gradle/libs.versions.toml geführt, dort lassen sich AGP und Compose an die eigene Umgebung anpassen. Als Vorkenntnisse sind Kotlin, ViewModel, Coroutines, Room und Compose verlinkt, jeweils mit den entsprechenden Seiten der Android-Dokumentation.
Die aktuelle APK liegt unter app/free/release/wan-release-1.6.0-free.apk direkt im Repository. Wer Compose noch nicht verwenden will, kann auf den Tag v1.3.0 wechseln. Die App selbst kennt nur eine einzige Aktivität namens WanActivity.kt; WanApplication.kt bildet den Einstieg für Hilt und WanNavGraph.kt baut die Navigationsstruktur auf. Ein Hinweis: Die letzte Änderung am Repository datiert auf August 2021, Teile des Codes können daher ältere Compose- und Navigationsversionen voraussetzen.
Alternativen und Einordnung für den Lernweg
Wer den Einstieg lieber mit offiziellen Materialien geht, findet bei Google Schritt-für-Schritt-Einführungen zu Compose, die isolierte Themen erklären. Genau dort setzt fragmject ein: Es liefert den Zusammenhang, der bei Einzel-Tutorials fehlt. Wer dagegen ein fortlaufend gepflegtes Beispiel sucht, kann sich an den offiziellen Google-Codelabs orientieren. Der Unterschied liegt in der Wartung: fragmject ist eine persönliche, seit 2021 unveränderte Codebasis, während die offiziellen Kurse regelmäßig aktualisiert werden.
Für die Arbeit mit fragmject selbst heißt das: Die Architekturideen, die adaptive Navigation und die selbstgebauten Komponenten bleiben wertvoll, auch wenn Bibliotheksversionen inzwischen weitergezogen sind. Wer die App in den aktuellen Android-Stack heben will, muss Gradle-Katalog, Compose-Version und mögliche API-Änderungen anfassen, das ist zugleich eine realistische Übung für den Berufsalltag. Die Apache-2.0-Lizenz erlaubt Nutzung, Änderung und Weitergabe; wer etwa den Bildeditor oder Kalender in eigene Apps übernimmt, muss die enthaltenen Lizenz- und Urhebervermerke fortführen. Eine Verpflichtung, eigene Änderungen zurückzugeben, besteht dabei nicht.
Fazit: Wer mit fragmject Kotlin und Compose lernt
fragmject passt zu Entwicklern, die Kotlin und Compose an einem echten, überschaubaren Beispiel lernen wollen und dabei verstehen möchten, wie MVVM, MVI, Hilt und WindowSizeClass zusammen funktionieren. Wer lieber mit fortlaufend gewarteten Beispieldaten arbeitet, sollte zu den offiziellen Google-Codelabs greifen.
Zu prüfen ist vor dem Start, ob die in gradle/libs.versions.toml gepflegten Versionen mit der installierten Android-Studio-Version kompatibel sind und ob die WanAndroid-Schnittstelle noch die erwarteten Daten liefert. Wer das Projekt durcharbeiten will, sollte die Liste der Vorkenntnisse zuerst abhaken, sonst bleiben Teile des Codes unverständlich. Langfristig hängt der Nutzen daran, die eigenen Implementierungen als Lernmaterial zu lesen, nicht sie unverändert als Produktionscode zu übernehmen.
Redaktionelles Fazit
fragmject eignet sich für Kotlin- und Compose-Einsteiger, die einen kompakten, gut lesbaren Beispielcode suchen und lernen wollen, wie MVVM, MVI, Hilt und WindowSizeClass zusammenwirken. Vor dem Einstieg sollte man prüfen, ob die API-Aufrufe und Bibliotheksversionen noch zum aktuellen Android Studio passen, denn der letzte Push liegt im August 2021.
Community-Notizen