Awlak Benjah
Offline-first-Tracker für Studienverlauf und Notendurchschnitt, gebaut als Turborepo-Monorepo aus einer Expo-React-Native-App und einer Astro-Showcase-Seite.
Architekturüberblick
graph TB
subgraph Monorepo["Turborepo + pnpm workspaces"]
A["apps/mobile<br/>Expo SDK 57"]
B["apps/showcase<br/>Astro + Tailwind"]
C["packages/typescript-config"]
D["packages/oxlint-config"]
end
subgraph Geraet["Auf dem Gerät"]
E["expo-sqlite"]
F["Drizzle ORM"]
G["Zustand-Store"]
end
A --> E
F --> E
A --> G
C --> A & B
D --> A & B
B --> H["Cloudflare Pages"]
Ein Tracker für Studienverlauf und Notendurchschnitt, der jede Berechnung auf dem Gerät belässt. Studierende bilden ihren Abschluss als Semester und Kurse ab, tragen Noten ein, sobald sie feststehen, und sehen den laufenden Durchschnitt sich aktualisieren — ohne Konto und ohne Netzwerkaufruf.
Das Repository ist ein Turborepo-Monorepo auf pnpm-Workspaces: Die Expo-App und die Astro-Landingpage teilen sich eine strikte TypeScript-Basis und eine einzige oxlint-Konfiguration, und jeder Task läuft über Turbos Cache.
Hauptfunktionen:
- Vollständig offline arbeitendes Datenmodell über
expo-sqliteund Drizzle ORM - Hierarchie aus Abschluss, Semester und Kurs mit Vorlagen-Overrides je Studiengang
- Laufende Durchschnitts- und Notenstatusberechnung mit grafischem Verlauf
- Mehrere Speicherstände, um Studienpläne parallel zu verfolgen
- Lokalisierte Oberfläche über i18next mit Spracherkennung des Geräts
- Bearbeitung per Bottom Sheet mit haptischem Feedback und Lottie-Animationen
- Statische Astro-Showcase, getrennt von der App ausgeliefert
Tech-Stack:
- Mobile: Expo SDK 57, React Native, Expo Router, TypeScript
- Daten: Drizzle ORM, expo-sqlite, Zustand, TanStack Query
- UI: HeroUI Native, Uniwind, Tailwind CSS, react-native-gifted-charts
- Showcase: Astro, Tailwind CSS, astro-icon, Cloudflare
- Werkzeuge: Turborepo, pnpm, oxlint, dependency-cruiser, Vitest, Zod
Ein früherer Web-Prototyp derselben Idee entstand mit React und Supabase, bevor das Projekt auf eine native, offline-first ausgelegte Architektur umgestellt wurde.