- Port halo_tokens + halo_theme + HaloButton to mitra_app (rose palette, Bricolage display, Poppins body, JetBrainsMono). - Build S3a Input WhatsApp (figma-bestie BestieS3 first half) with +62 chip, leading-zero/62 normalization, allow '+' in input. - Build S3b OTP verification (6-digit, 60s resend timer, attempts hint, Focus(canRequestFocus:false) for maestro inputText compat) with full error branching (CODE_MISMATCH, OTP_EXPIRED, OTP_USED, ATTEMPTS_EXCEEDED, WRONG_FLOW, ACCOUNT_INACTIVE). - Add AccountInactive terminal screen for is_active=false mitras. - Typed MitraAuthError with Indonesian-first localized messages + retryAfterSeconds passthrough. - Rebuild home_screen.dart to match figma BestieHome (greeting + status card + Ganti Status CTA + Pengingat + 2-tile dark grid). - Backend: POST /internal/_test/seed-mitra (idempotent) and PATCH /internal/mitras/:id (display_name update). - Control center: inline Edit Nama on mitras row + expandable inline log table under clicked mitra (vs old below-table panel). - 5 maestro flows ts-mitra-A-01/03/04/05/06 covering invalid input, happy path, account inactive, phone-format normalization, and the back-to-S3a regression. All green. Plan + memory documented in: - requirement/phase4-mitra-prehome-plan.md - requirement/flow_mitra.md / flow_mitra.mermaid.md §A Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
89 lines
2.4 KiB
YAML
89 lines
2.4 KiB
YAML
name: mitra_app
|
|
description: Halo Bestie - Mitra App
|
|
|
|
publish_to: 'none'
|
|
version: 1.0.0+1
|
|
|
|
environment:
|
|
sdk: '>=3.0.0 <4.0.0'
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
|
|
# Firebase (Messaging only — Auth dropped in Phase 3.4, self-managed JWT now)
|
|
firebase_core: ^2.27.1
|
|
firebase_messaging: ^14.7.15
|
|
|
|
# Secure token storage (refresh + access)
|
|
flutter_secure_storage: ^9.2.2
|
|
|
|
# HTTP & WebSocket
|
|
dio: ^5.4.3
|
|
web_socket_channel: ^2.4.5
|
|
|
|
# State management
|
|
flutter_riverpod: ^2.6.1
|
|
hooks_riverpod: ^2.6.1
|
|
riverpod_annotation: ^2.6.1
|
|
flutter_hooks: ^0.20.5
|
|
|
|
# Navigation
|
|
go_router: ^13.2.1
|
|
flutter_local_notifications: ^21.0.0
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
flutter_lints: ^3.0.0
|
|
riverpod_generator: ^2.6.2
|
|
build_runner: ^2.4.13
|
|
custom_lint: ^0.7.0
|
|
riverpod_lint: ^2.6.2
|
|
# Generates launcher icons for Android + iOS from a single source PNG.
|
|
# Config block below; run `dart run flutter_launcher_icons` to regenerate.
|
|
flutter_launcher_icons: ^0.13.1
|
|
# In-repo lint rules — shared with client_app from the repo root. Adds
|
|
# the `no_ref_in_dispose` rule and any future repo-wide guardrails.
|
|
# See halo_lints/lib/halo_lints.dart and mitra_app/CLAUDE.md → Pitfalls.
|
|
halo_lints:
|
|
path: ../halo_lints
|
|
|
|
# Launcher-icon config. White background per the design-system rule
|
|
# documented in client_app/lib/core/theme/halo_tokens.dart: when the logo
|
|
# is full-color (mitra logo is pink on transparent), use surface #FFFFFF.
|
|
# Monochrome/white logos use brandLogoBg #FF699F (see client_app config).
|
|
flutter_launcher_icons:
|
|
android: true
|
|
ios: true
|
|
image_path: "assets/icons/logo.png"
|
|
remove_alpha_ios: true
|
|
background_color_ios: "#FFFFFF"
|
|
min_sdk_android: 24
|
|
adaptive_icon_background: "#FFFFFF"
|
|
adaptive_icon_foreground: "assets/icons/logo.png"
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
assets:
|
|
- assets/images/
|
|
- assets/images/splash/
|
|
- assets/fonts/
|
|
|
|
fonts:
|
|
- family: BricolageGrotesque
|
|
fonts:
|
|
- asset: assets/fonts/BricolageGrotesque-Variable.ttf
|
|
- family: Poppins
|
|
fonts:
|
|
- asset: assets/fonts/Poppins-Regular.ttf
|
|
- asset: assets/fonts/Poppins-Medium.ttf
|
|
weight: 500
|
|
- asset: assets/fonts/Poppins-SemiBold.ttf
|
|
weight: 600
|
|
- asset: assets/fonts/Poppins-Bold.ttf
|
|
weight: 700
|
|
- family: JetBrainsMono
|
|
fonts:
|
|
- asset: assets/fonts/JetBrainsMono-Variable.ttf
|