docs
/
EventOxygen

Project layout

Every folder and screen in the EventOxygen codebase, plus which root documents describe the current app and which are history.

Root: appmint_go/event_app. Platform folders present: android, ios, web, macos, windows, linux. scripts/ holds Node seed and fix utilities; test/ holds only the scaffold widget_test.dart.

lib/

FolderContents
config/environment.dart (endpoints, app credentials, org per environment), app_config.dart (re-export facade), haho_theme.dart, app_colors.dart, legal_urls.dart
models/user_model.dart, auth_response.dart
providers/auth_provider.dart, event_provider.dart
services/http_client.dart, api_service.dart, storage_service.dart, community_chat_service.dart, media_upload_service.dart, activity_tracking_service.dart, client_info_service.dart, stripe_service_mobile.dart (with a web stub)
widgets/share_sheet.dart, media_manager.dart, story_bar.dart, person_card.dart, user_avatar.dart, haho_navigation.dart (unused by the live shells)
screens/auth/, screens/customer/, screens/shared/Below

Screens

auth/

ClassPurpose
LoginScreenEmail and password; remembers the last email; inline 2FA code card; Forgot Password and Sign Up links; kDebugMode-only Fast Login
RegisterScreenEmail, password with confirmation, first and last name
ForgotPasswordScreenSends a temporary password (strategy=temporary_password)
ChangePasswordScreenForced after a temporary-password login; current password prefilled from AuthProvider.pendingPassword

customer/ — shells and events

ClassPurpose
PublicEventsShellSigned-out shell around EventsScreen
EventShellSigned-in, event-scoped shell with tabs and drawer; owns shellScaffoldKey
CustomerShell, CustomerHomeScreen, DiscoverScreenUnreachable from the live navigation graph
MyEventsScreenPost-login home; one card per ticketed event; its own drawer (Profile, All Tickets, Browse Events, legal, Help, About, Log out)
EventsScreenPublic catalogue → EventDetailScreen
EventDetailScreenPublic event page: image carousel, meta, About, schedule, venue and zones, speakers, ticket-type cards, "Get Tickets" → _PurchasePage, banner into EventShell
EventHomeScreenIn-event home: carousel, badge, title, date and time with timezone, address, venue, website, stat chips, quick actions (My ticket, Schedule, People, Media), tickets strip, About, organizers, people rows, tracks, zones
ScheduleScreentable_calendar week or month, sessions bucketed by day, track pills, session cards → SessionDetailScreen
SessionDetailScreenTitle, type, status, description, day and times, track, room, zone, capacity, tags
MediaGalleryScreenEvent media grid with full-screen viewer
TicketScreenWallet: QR per ticket, pinning (pinned_ticket_id), full-screen QR, View Event, Assign to someone
BookingSummaryScreenPost-purchase confirmation with per-ticket QR, transfer, share

customer/ — people and community

ClassPurpose
PeopleScreenDirectory with type chips (all, speaker, sponsor, exhibitor, vip, attendee, volunteer, press), search, 50-per-page infinite scroll, Connect / Follow / Message per card. Also hosts ParticipantProfilePage and _ScheduleMeetingPage
ParticipantProfilePageProfile with role badge, status chips, topics, social, sessions (ids resolved to titles), Connect, Message, Meet, follow
FeedScreenCommunity feed for the event's page: stories bar, composer row, posts with media, polls, like, comment, share sheet, bookmark, repost preview, owner menu
CreatePostScreenText, image, poll or link; media via MediaManager; poll builder
PostDetailScreenPost with threaded comments, like, save, share sheet
InboxScreenMessages (threads) and Notifications tabs; _NewMessageScreen picks a connection
ChatScreenOne-to-one chat over the socket with REST fallback; image messages
ConnectionsScreenConnections, pending and sent lists, stats, accept and reject, message
MeetingsScreenUpcoming and All; respond and cancel
BookmarksScreenSaved items with a targetType filter
AnnouncementsScreen(pageId)Page announcements — not referenced from any other screen
SearchScreenPosts (hashtag and trending), people (placeholder), events, pages
MeScreenOwn profile with Posts, Media library and About tabs; Edit Profile; QR
ProfileScreenProfile card, details, expertise, social, legal and support, log out, two-step Delete account
EditProfileScreenNames, bio, company, job title, phone, city, country
QRProfileScreenPersonal connect QR encoding community:connect:<email>

Root documents

FileWhat it is
README.mdUntouched Flutter template; no project content
COMMUNITY_PLATFORM.mdDesign note for the community as a standalone platform: pages, the shared-feed model, the thirteen community_* schemas and the /client/community controller the app now consumes
doc.mdEarly requirements spec for a "Luma-style" event app captured from a chat transcript; product background, not current state
STORE_LISTING.mdPlay Console fill pack under the name EventOS (package com.appmint.event_app). The shipped binaries are labelled EventOxygen; the naming drift is real
TEST_EVENTOXYGEN_2026-09-03.mdThe most recent manual test pass; source for Known issues

scripts/

seed_data.js, seed_participants.js, fix_images.js and variants, fix_participants.js, upload_avatars.js — Node utilities that populate an organization with demo events, participants and images. They are how the demo org got its 94 participants and 70 sessions.