docs
/
Appmint Mobile

Project layout

Every folder under lib, what each screen class is for, and which root documents are still accurate.

Root: appmint_go/appmint_mobile. 134 Dart files under lib/. Platform folders present: android, ios, web, macos, linux, windows.

lib/

FolderWhat lives there
config/environment.dart (endpoints per environment), home_apps.dart (launcher tiles and groups), haho_theme.dart (live theme), theme.dart (unused indigo theme), app_config.dart (facade plus legacy constants no service uses), legal_urls.dart
models/Typed models for the records the app edits; see Data models
providers/The thirteen ChangeNotifiers registered in main.dart, plus DataProvider('<datatype>') for generic lists
services/HTTP client, per-module API services, hardware services, thermal/ shim, storage, saved sessions, client info
screens/One folder per module, listed below
widgets/haho_navigation.dart, location_picker.dart, devices_indicator.dart and shared UI

Screens

auth/

ClassPurpose
LoginScreen (login_screen.dart)Org and email step, then password or magic code; saved-account tiles; the debug-only Fast Login button
QuickSignInScreen (quick_signin_screen.dart)Employee id + 6-digit passcode or NFC card tap; behaviour driven by the org's passcodeLoginSettings
RegisterScreenEmail/password sign-up

dashboard/, home/, more/, profile/, calendar/

ClassPurpose
DashboardScreenHome: live lead/customer/ticket counts, the app launcher, grid/list toggle, location picker, devices indicator, active-event strip
HomeScreenThe bottom-tab shell (IndexedStack)
MoreScreenSettings hub: Communications, Hardware, Security, System, Preferences, Help, Logout
ProfileScreenUser info, logout, delete account
CalendarScreenCalendar tab surface (stateless)

pos/, payments/

ClassPurpose
PosScreen (pos_screen.dart)Multi-tab carts, product grid with day-part chips, line editing, transfer/split/print/save/fire/settle, refunds sheet
CheckoutScreen + Tender (checkout_screen.dart)Tender splitting, tips, receipt delivery
TakePaymentScreen (take_payment_screen.dart)One-amount charge that synthesizes a PosOrder with a QUICK-SALE line and hands off to checkout

operations/

ClassPurpose
TabsScreenEvery open and closed tab at the location, grouped, with status chips
FloorPlanScreenService points on an InteractiveViewer canvas at their authored x/y; unpositioned points fall to a wrap below
ServicePointsScreenGrid of service points, kind filter chips, group-by-parent, long-press for dirty/clear/blocked, grid/floor toggle
ServicePointFormSheetCreate or edit a service point
OperationsQueueScreenReservations manager: Today / Upcoming / Past, Check in, Cancel; no longer writes queue statuses onto reservations
BookReservationScreenFour-step booking stepper: definition, service + date, slot, customer
CheckinScreenLive queue board for stage-0 tasks of reservation-checkin-pipeline; Notify / Assign / Leave / No-show / Walk-in
WorkflowTasksScreenGeneric pipeline board (kitchen display equivalent): pick a workflow, filter by station, advance or complete
OperationsDashboardScreenManager SLA health from wait times and escalations

events/

ClassPurpose
EventsScreenEvent list and picker
EventDetailScreenTickets, sessions, participants and check-in for one event
EventShellScreenTabbed admin shell: Overview / Scanner / Tickets / Schedule / People / More
EventDashboardScreenLive check-in and occupancy statistics
ScannerScreenTicket QR scanner
AccreditationScreenBadge data and issuance
ParticipantsScreenRoster by type
TicketsScreen, ScheduleScreen, InfoCenterScreen, ActivityScreenTicket list, session CRUD, info centre, activity log

CRM and communications

FolderClasses
leads/LeadsScreen, LeadDetailScreen, LeadFormScreen, AddLeadScreen
contacts/ContactsScreen (All / Appmint / Device tabs), ContactDetailScreen (edit and add-note are stubs)
customers/CustomerJourneyScreen — activity timeline and insights
tickets/SupportTicketsScreen, TicketFormScreen
tasks/TasksScreen, TaskFormScreen
meetings/ScheduleMeetingScreen
inbox/InboxScreen (Conversations / All Messages, channel chips), ConversationScreen
messages/EmailComposerScreen (Quill), SmsComposerScreen, SmsConversationsScreen
chat/LiveChatScreen (Inbox / Queue / AI Chats / Customers / Agents), ChatConversationScreen (takeover, assist AI, resume AI, end chat), LivePresenceScreen
phone/PhoneScreen — Keypad / Recent / Contacts softphone
social/SocialActivityScreen — comments, messages and engagement from synced social accounts
customer/WaitStatusScreen — the guest-facing "where am I in line" page reached by QR or SMS
scanner/CodeScannerScreen — generic QR/barcode scanner that pops the value

settings/

ClassConfigures
DevicesScreenPeripheral index with live status
PaymentsScreenFive-step Stripe Terminal reader pairing: Location, Prepare, Scan, Pairing, Done
PrinterSettingsScreenThermal printer pairing, paper width, test print
ScannerSettingsScreen, ScannerPairingScreenCamera switch, HID capture switch, BLE scanner pairing
NfcReaderPairingScreenBluetooth NFC reader for devices without NFC
PasscodeScreenYour own quick-login passcode and linked employee id
CardManagementScreenAdmin: issue, revoke and replace NFC access cards
MenuManagementScreenDay-parts and the 86 list per location
HomeLayoutScreenHide apps or groups on this device

Root documents

FileStatus
README.mdArchitecture and feature list. Stale: claims Hive offline caching that does not exist
USAGE_GUIDE.mdQuick start, auth flow and a lead walkthrough. Describes the older lead-centric app
ENVIRONMENT_CONFIG.mdEnvironment matrix and build commands. Stale: lists localhost:3300 for development; the code uses 192.168.1.239:3300
HARDWARE_OFFERINGS.mdShop-in-a-Box mobile and desktop units, add-on matrix, and a Publish Status section separating shipping from roadmap
STORE_LISTING.mdPlay and App Store fill pack. Stale: version listed as 1.0.0 (1); pubspec is 1.0.2+9
CHANGELOG.md, PROJECT_SUMMARY.mdRelease notes and summary
TEST_BUSINESSMADE_2026-09-02.mdThe most recent manual test pass; source for Known issues
`certs/` holds live credentials

The folder contains the VoIP push key, CSR, .p12, .pem and a Firebase admin SDK JSON, committed in-tree. Treat the repository as sensitive and rotate anything that has been shared.