Project Structure
The app is organized into logical packages following Android best practices:Architecture Layers
Presentation Layer (UI)
The presentation layer is built entirely with Jetpack Compose and includes:- Screens: Full-screen composables for each navigation destination
- Components: Reusable UI components like
BottomBar - Theme: Material Design 3 theming configuration
Data Layer
Currently uses FakeData to simulate backend responses:- Models: Data classes representing domain entities
- FakeData: Mock data provider for development
The data layer will be migrated to Supabase in a future release for real backend integration.
Navigation Layer
Manages screen navigation using Navigation Compose:- AppScreens: Sealed class defining all navigation routes
- AppNavigation: NavHost setup and route-to-screen mapping
Single-Activity Architecture
The app uses a singleMainActivity that hosts all screens through Compose navigation:
MainActivity.kt
Key Benefits
Simplified Navigation
All navigation is handled through Compose, eliminating fragment transactions
Shared State
Easy state sharing between screens without complex fragment communication
Lifecycle Management
Single activity lifecycle simplifies state preservation and restoration
Modern UI
Full Compose UI with Material Design 3 components
Technology Stack
- Language: Kotlin
- UI Framework: Jetpack Compose
- Navigation: Navigation Compose
- Design System: Material Design 3
- Minimum SDK: 21 (Android 5.0 Lollipop)
Current Features
The app currently implements four main screens:| Screen | Route | Purpose |
|---|---|---|
| Home | home | Shows current class and upcoming schedule |
| Schedule | schedule | Displays full day schedule with colored cards |
| Map | map | Campus building search and location |
| Profile | profile | Student information and academic details |
