Kaisen DS6 is a mobile inventory and sales application for Android, built with Flutter and Dart. The project combines a Flutter client, Supabase-backed data services, authentication, product management, stock-aware sales, and barcode scanning in one operational workflow.
This repository contains the final academic handoff and branding pass. It is shared as a portfolio project to document the mobile application, its Android delivery path, and the engineering decisions behind the implementation.
- Authentication and registration screens.
- Dashboard with operational inventory and sales information.
- Product catalog and product detail views.
- Sale registration with cart quantities and stock validation.
- Barcode and QR scanning through
mobile_scanner. - Sales history.
- Supabase client integration using runtime configuration.
- Android launcher icon and splash branding.
- Flutter tests and repeatable handoff validation scripts.
Authentication · Operations dashboard · Inventory catalog
Product creation · Sales history
- Flutter 3.44.6 / Dart 3.12.2
- Android Studio and Android SDK
- Supabase and PostgreSQL/RLS-backed services
- Provider for state management
sqflite,shared_preferences,http,crypto, andmobile_scanner
mobile/ Flutter application, Android project, assets, and tests
supabase/ Schema, setup notes, migrations, and smoke-test material
docs/ Architecture, UI, migration, and test documentation
scripts/ Validation and handoff packaging scripts
legacy_api/ Historical rollback/reference material
The active application is under mobile/. Runtime Supabase values are passed
at build or run time and are intentionally not committed to this repository.
cd mobile
flutter pub get
flutter run `
--dart-define=SUPABASE_URL=YOUR_SUPABASE_URL `
--dart-define=SUPABASE_PUBLISHABLE_KEY=YOUR_PUBLISHABLE_KEYFor the complete workstation and group handoff instructions, see SETUP_GROUP.md. To run the repository validation script:
powershell -ExecutionPolicy Bypass -File .\scripts\validate_handoff.ps1No service-role key, database password, signing key, or real runtime secret belongs in the Flutter client or in this repository. Use client-safe runtime values only, and keep private configuration outside Git.




