Flutter mobile app for architects preparing for NCARB ARE 5.0 — 1,100 questions, 300 flashcards, mock exam, AI coach, and progress analytics with an NYC Building Code focus.
Screenshots coming once the app is on TestFlight / Play Store internal track. See the Getting Started section to run it locally now.
| Feature | Status |
|---|---|
| 1,100-question bank — 6 ARE divisions + NYC codes, with explanations & NCARB topic tags | ✅ |
| Mock Exam Mode — 65 Qs, 130-min countdown, per-division score report | ✅ |
| Practice tests — Quick Quiz, By Division, Timed session | ✅ |
| Flashcards — 300 cards, SM-2 spaced repetition, exam tips | ✅ |
| Progress Insights — score trend chart, accuracy by division, weak spots | ✅ |
| Study Plan — exam countdown, daily card & question targets | ✅ |
| AI Coach — chat + voice (STT / TTS), backed by Cloud Function | ✅ |
| Daily study reminder — time-picker, persisted, rescheduled on change | ✅ |
| Readiness score & section trend analytics | ✅ |
| Attempt history with pagination | ✅ |
| NCARB scaled-score calculator | ✅ |
| Firebase Auth — email/password + anonymous | ✅ |
| Firestore attempt persistence & weak-topic tracking | ✅ |
| Offline fallback — bundled JSON + Hive cache | ✅ |
| Dark / light theme | ✅ |
| In-app purchase paywall (premium + token top-up) | ✅ |
| Question flag / report pipeline | ✅ |
1,100 questions — 4-option MCQ, detailed explanations, citations to official standards, and NCARB-aligned topic tags for sub-division analytics.
| Division | Code | Questions |
|---|---|---|
| Practice Management | PcM | 161 |
| Project Management | PjM | 165 |
| Programming & Analysis | PA | 165 |
| Project Planning & Design | PPD | 165 |
| Project Docs & Delivery | PDD | 165 |
| Construction & Evaluation | CE | 165 |
| NYC Building Codes | NYC | 114 |
| Total | 1,100 |
| Level | Count | Share |
|---|---|---|
| Easy | 248 | 23% |
| Medium | 538 | 49% |
| Hard | 314 | 29% |
examWeight is a 1-20 relative topic-priority score used as metadata for future weighted study selection, mock-exam balancing, and weak-area analytics. It is not a point value, not a scoring percentage, and not an NCARB-published weight. Higher values mean the question covers a more exam-critical, high-yield, or code/contract-risk-heavy concept.
Many questions cite more than one source, so the counts below overlap and sum to more than 1,100.
| Source | Qs | Link |
|---|---|---|
| NCARB ARE 5.0 Guidelines | 859 | ncarb.org/ARE |
| AIA Contract Documents (A101, A201, B101, C401…) | 394 | aia.org |
| NYC Building Code / DOB / Zoning / Local Laws | 147 | nyc.gov/buildings |
| IBC (2021; NYC-amended 2015) | 98 | codes.iccsafe.org |
| ASHRAE 90.1 / 62.1 / 55 | 61 | ashrae.org |
| CSI MasterFormat / Specifications | 48 | csiresources.org |
| ASCE 7-22 / ACI / FEMA | 36 | asce.org |
| ADA Standards for Accessible Design 2010 | 18 | ada.gov |
| NFPA 13 / 70 / 110 | 9 | nfpa.org |
Sample questions by division
Practice Management (PcM)
- AIA B101-2017 §2.2 — Standard of care and professional liability
- AIA Code of Ethics Canon IV, Rule 4.101 — Conflict of interest disclosure
- NCARB Model Law §14; NY Education Law §7304 — Stamping plans in NY
Project Management (PjM)
- AIA A201-2017 §4.2.14 — Architect's authority during construction administration
- AIA A201-2017 §7.3 — Construction change directives vs. change orders
- AIA A201-2017 §9.8 — Substantial completion and punch lists
Programming & Analysis (PA)
- IBC 2021 Chapter 11; 2010 ADA §101 — Accessible route requirements
- FEMA FIRM; IBC 2021 §1612; ASCE 7-22 Ch.5 — Flood hazard areas
- ASHRAE 90.1 — Energy use intensity benchmarks
Project Planning & Design (PPD)
- ASHRAE 62.1-2022; IBC 2021 §1202 — Minimum ventilation rates
- ASCE 7-22 Table 12.2-1; IBC 2021 Ch.16 — Seismic design categories
- ACI 318-19 Ch.26 — Concrete mix design documentation
Project Docs & Delivery (PDD)
- NYC Building Code 2022 §1005.1 — Means of egress width calculations
- NYC Building Code 2022 §903.2.8 — Automatic sprinkler requirements
- CSI Project Delivery Practice Guide — Division 01 general requirements
Construction & Evaluation (CE)
- AIA A201-2017 §7.2 + AIA G701 — Change order execution
- NYC Building Code 2022 §1705.2 — Special inspection programs
- AIA A201-2017 §15.1.4 — Claim and dispute resolution sequence
NYC Building Codes
- NYC Local Law 97 (2019) — Carbon emissions limits for large buildings
- NYC Local Law 11/1998 (FISP) — Facade inspection safety program cycles
- NYC Zoning Resolution §52-00 — Non-conforming uses and lot coverage
300 cards — front/back format, exam tip on every card, SM-2 spaced-repetition scheduling.
| Division | Cards |
|---|---|
| Project Planning & Design | 50 |
| Practice Management | 45 |
| Project Management | 45 |
| Programming & Analysis | 45 |
| NYC Building Codes | 45 |
| Project Docs & Delivery | 35 |
| Construction & Evaluation | 35 |
| Total | 300 |
are_coach/
├── lib/
│ ├── main.dart Firebase + Hive bootstrap, auth stream
│ ├── app.dart Root MaterialApp, theme management
│ ├── core/
│ │ ├── providers.dart Riverpod providers (auth, questions, progress, insights)
│ │ ├── readiness.dart Readiness score computation
│ │ ├── result.dart Result<T, E> type
│ │ ├── theme/app_theme.dart Design tokens — colors, typography
│ │ └── ui/app_chrome.dart Shared glass-card widgets
│ ├── models/
│ │ ├── quiz_question.dart
│ │ ├── flashcard.dart
│ │ └── chat_message.dart
│ ├── services/
│ │ ├── auth_service.dart
│ │ ├── coach_service.dart HTTP → Cloud Function with local fallback
│ │ ├── voice_service.dart speech_to_text + flutter_tts
│ │ ├── question_repository.dart Firestore → JSON asset → seed fallback chain
│ │ ├── flashcard_repository.dart Hive-backed SM-2 spaced repetition
│ │ ├── progress_repository.dart Attempt save, weak-topic analytics, insights
│ │ ├── iap_service.dart In-app purchase + server-side receipt validation
│ │ ├── notification_service.dart Daily reminder — schedule, persist, cancel
│ │ └── report_repository.dart Question flag / report pipeline
│ ├── screens/
│ │ ├── home_shell.dart Bottom-nav shell (5 tabs)
│ │ ├── dashboard_screen.dart Readiness score, study plan, weak sections, trends
│ │ ├── insights_screen.dart Score trend chart, accuracy by division, flashcard mastery
│ │ ├── tests_screen.dart Quick / Section / Timed / Mock exam config
│ │ ├── test_session_screen.dart Live quiz session with timer
│ │ ├── test_result_screen.dart Post-quiz result (section / timed mode)
│ │ ├── mock_exam_result_screen.dart Post-mock verdict + per-division breakdown
│ │ ├── flashcards_screen.dart Flashcard deck browser and stats
│ │ ├── flashcard_session_screen.dart Flashcard study session (flip + SM-2 rating)
│ │ ├── attempt_history_screen.dart Paginated session history
│ │ ├── ncarb_calculator_screen.dart NCARB scaled-score calculator
│ │ ├── coach_screen.dart AI Coach chat (text + voice)
│ │ ├── profile_screen.dart Settings, theme, exam date, reminder, purchases
│ │ ├── paywall_screen.dart Premium upgrade screen
│ │ ├── onboarding_screen.dart
│ │ ├── splash_screen.dart
│ │ └── auth/
│ │ ├── login_screen.dart
│ │ └── register_screen.dart
│ ├── widgets/
│ │ └── flag_question_sheet.dart Question flag bottom sheet
│ └── data/
│ └── seed_questions.dart 3-question emergency fallback
├── assets/
│ ├── seeds/
│ │ ├── questions_ny.json 1,100-question bank
│ │ └── flashcards_ny.json 300-card flashcard deck
│ └── images/ App icons
├── functions/ Firebase Cloud Functions (AI Coach, quota)
├── firestore.rules Firestore security rules
├── firestore.indexes.json
└── docs/
├── ARCHITECTURE.md
├── FIREBASE_PHASE2.md
├── PHASE4_BACKEND.md
├── SECURITY_AUDIT.md
└── MONETIZATION_PREP.md
| Tool | Version |
|---|---|
| Flutter | ≥ 3.x (flutter --version) |
| Dart | ≥ 3.x |
| Android Studio or Xcode | for emulator / simulator |
| Firebase CLI | npm install -g firebase-tools |
No Firebase project required. The app loads the bundled 1,100-question JSON bank.
flutter pub get
flutter run# 1. Add your GoogleService-Info.plist (iOS) and google-services.json (Android)
# 2. Deploy Firestore rules
firebase deploy --only firestore:rules,firestore:indexes
# 3. Run with AI Coach endpoint
flutter run --dart-define=COACH_API_URL=https://<region>-<project>.cloudfunctions.net/coachFull guide → docs/FIREBASE_PHASE2.md
| Service | Purpose |
|---|---|
| Firebase Auth | Email/password + anonymous sign-in |
| Firestore | Attempt history, weak-topic analytics, usage counters |
| Firebase App Check | Play Integrity / DeviceCheck anti-abuse |
| Firebase Crashlytics | Production error reporting |
| Cloud Functions | Secure AI Coach — token-quota + per-minute throttle |
Full guide → docs/PHASE4_BACKEND.md · docs/SECURITY_AUDIT.md
- Firebase ID token validated on every Cloud Function request
- Daily AI quota enforced server-side via atomic Firestore counter
- AI API key stored in Cloud Secret Manager — never in the client bundle
- Firestore rules deny all client writes except the user's own data
- App Check blocks non-genuine clients (emulators, proxies)
Full guide → docs/MONETIZATION_PREP.md
| Tier | Price | Includes |
|---|---|---|
| Free | — | 10 questions/day · 50 AI messages/day |
| Premium | $9.99 / month | Unlimited questions · priority AI |
| Token top-up | $2.99 | +100 AI Coach messages |
IAP via in_app_purchase Flutter plugin. Receipt validation is server-side.
See CONTRIBUTING.md for the full branching and PR workflow.
Quick rules:
- No direct commits to
main— all changes via PR flutter analyzemust return 0 issues before mergeflutter testmust pass- No secrets in the repo
| File | Purpose |
|---|---|
| ARCHITECTURE.md | System design and data flow |
| FIREBASE_PHASE2.md | Firebase configuration guide |
| PHASE4_BACKEND.md | Secure AI backend setup |
| SECURITY_AUDIT.md | Security checklist and findings |
| MONETIZATION_PREP.md | IAP and quota design |
| CODE_REVIEW.md | Architecture review notes |
Questions and explanations are AI-assisted study aids. Always verify against official NCARB ARE 5.0 exam content outlines, current AIA contract documents, and the applicable edition of the NYC Building Code. This app is not affiliated with NCARB, AIA, or the City of New York.