LAB 8 — Capstone Project: Build, Sign & Publish ================================================ Mobile Application Development | SUZA | Semester II 2025/2026 OBJECTIVE --------- Integrate everything learned so far into one complete, polished app that is ready to be installed on real devices. CHOOSE ONE APP IDEA (or propose your own) ----------------------------------------- A. Zanzibar Tourist Guide - Offline list of attractions (Room) - Each has photos, description, map location - Mark favourites, share an item B. Personal Expense Tracker - Add/edit/delete expenses (category, amount, date) - Monthly totals and a simple chart (e.g., bars via Canvas) - Export to CSV C. Weather Now - Fetch forecast for chosen city from OpenWeatherMap (free API key) - 5-day forecast UI, pull-to-refresh - Save last-searched city D. Notes + Reminders - Room-backed notes with markdown support - Schedule reminder notifications with AlarmManager REQUIRED FEATURES (must hit all) -------------------------------- [ ] Kotlin + Jetpack Compose, min SDK 24 [ ] At least 3 screens linked with Navigation-Compose [ ] MVVM: ViewModel + StateFlow + Repository [ ] Room OR a remote API via Retrofit (at least one) [ ] Material 3 theming + dark-mode support [ ] At least one animation (animate*AsState / AnimatedVisibility / Crossfade) [ ] Proper error / empty / loading states [ ] Strings externalized (res/values/strings.xml) [ ] Icon and app name set (you design the icon — use Image Asset Studio) [ ] At least 1 unit test and 1 UI test [ ] README with screenshots and build instructions BUILD, SIGN & PUBLISH --------------------- 1. Generate a release keystore: keytool -genkey -v -keystore release.jks -keyalg RSA \ -keysize 2048 -validity 10000 -alias 2. Configure signing in build.gradle.kts (module) — do NOT commit the keystore or its password. Store passwords in gradle.properties (gitignored). 3. Build > Generate Signed App Bundle / APK - Select "Android App Bundle" (.aab) - Pick your keystore, alias, password - Build variant: release 4. Install the signed APK on a real device: adb install app-release.apk 5. Create a (draft) entry in the Google Play Console: - Title, short & full description - Screenshots (at least 2 phone screenshots) - Feature graphic - Privacy policy URL (GitHub Pages is fine) - Data safety form - Content rating questionnaire You do NOT need to publish — a draft is enough to demonstrate the workflow. DELIVERABLES ------------ - GitHub repo "mad-capstone-" with full source + README + /docs - Signed AAB (uploaded to GitHub release, NOT the keystore) - Draft Play Console entry (screenshots attached in report) - 3-page report (PDF): 1. Idea & target user 2. Architecture diagram + screen flow 3. Challenges faced & how you solved them - 3-minute demo video showing the app end-to-end ASSESSMENT WEIGHT ----------------- Functionality (meets required features) .... 40% Code quality (architecture, naming, DRY) .... 20% UI/UX polish & accessibility ................ 15% Tests ....................................... 10% Documentation & demo ........................ 15%