Skip to content

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepNorth Mobile (Flutter)

Mobile (Android-first) clone of the user-facing parts of the Next.js DeepNorth OTA app (../OTA). Uses the same Firebase project (ota-db) and the same Flask camera server — the database and ESP32 firmware are untouched; this app is only an additional client.

Features: Beranda (hero, live "Kondisi Laut" strip, destinasi + filter), Detail destinasi, Monitoring (kamera AI MJPEG, sensor RTDB, statistik karang), Booking (form + riwayat + bayar/batal mock), Profil/Auth (email-password).

Stack: Flutter · Riverpod (2.6.x) · firebase_core/auth/firestore/database · google_fonts · intl · http · flutter_mjpeg · cached_network_image.

Setup (one-time, run by you)

The app cannot connect to Firebase until you generate lib/firebase_options.dart and register a native Android app under project ota-db:

npm i -g firebase-tools
dart pub global activate flutterfire_cli
firebase login                       # account with access to project ota-db
cd ota_mobile
flutterfire configure --project=ota-db --platforms=android,ios

Then enable Email/Password in Firebase Console → Authentication → Sign-in method.

Finish wiring main.dart (Task 0.4)

main.dart currently omits Firebase init so the project stays analyzer-clean before firebase_options.dart exists. After flutterfire configure, add the two imports and the init call:

import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); // add this
  await initializeDateFormatting('id_ID');
  runApp(const ProviderScope(child: DeepNorthApp()));
}

Run

flutter run                 # with an Android emulator/device connected

Camera (monitoring)

The "Kamera AI Deteksi Karang" stream + "Statistik" come from the Flask server (../Proyek_Karang/app_web.py). Default URL is http://10.0.2.2:5001 (host localhost as seen from the Android emulator). On a physical device, tap the ⚙ icon on the camera panel and set your laptop's LAN IP (e.g. http://192.168.1.10:5001).

Deferred (post-MVP)

  • Google Sign-In (button present but disabled; needs SHA-1 registration + google_sign_in).
  • iOS run (config generated by flutterfire configure; needs Xcode signing).
  • Restyle the bottom nav's center "Booking" tab to match the web's elevated button.

See ../docs/superpowers/specs/ and ../docs/superpowers/plans/ for the full design and implementation plan.

About

Flutter companion app for the OTA platform — destination browsing, booking, and coral reef monitoring on a shared Firebase backend.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages