A3 Platform Architecture Reference
Overview
A3 is a full-featured SaaS platform for insurance agent management built by Trusted American Insurance Agency. It provides CRM, enrollment management, commission tracking, compliance tools, and agent support.
Tech Stack
| Layer |
Technology |
| Frontend |
Ember.js 6.9 (Octane) with TypeScript, Glimmer GTS components |
| Build |
Vite + Embroider |
| Styling |
Tailwind CSS 4 + Bootstrap 5 |
| State |
WarpDrive (next-gen Ember Data) |
| Database |
Cloud Firestore (NoSQL) |
| Realtime DB |
Firebase Realtime Database (status tracking) |
| File Storage |
Google Cloud Storage |
| Auth |
Firebase Authentication + ember-simple-auth |
| Backend |
Google Cloud Functions (Node.js 22, TypeScript) |
| Search |
Algolia |
| Payments |
Stripe |
| Email |
Mailgun |
| Documents |
PandaDoc |
| CRM Sync |
HubSpot, Salesforce |
| Error Tracking |
Sentry |
| Customer Support |
Intercom |
| State Machines |
XState 5 |
| Charts |
Highcharts 12 |
| Maps |
Google Maps |
| Deployment |
Netlify (frontend), GCP (backend) |
| IaC |
Terraform |
Directory Structure
A3/
├── app/ # Ember.js frontend application
│ ├── abilities/ (101) # ember-can permission definitions
│ ├── adapters/ (11) # Data source adapters
│ ├── builders/ (2) # API call builders
│ ├── components/ (436) # Glimmer GTS components
│ ├── config/ (5) # App configuration
│ ├── controllers/ (varies) # Controllers (only for query params)
│ ├── handlers/ (2) # Request handlers
│ ├── helpers/ (2) # Template helpers
│ ├── models/ (136) # Ember Data models
│ ├── modifiers/ (1) # DOM modifiers
│ ├── routes/ (333) # Route definitions
│ ├── serializers/ (16) # Data serializers
│ ├── services/ (12) # Application services
│ ├── session-stores/(1) # Auth session storage
│ ├── styles/ (1) # Tailwind CSS entry point
│ ├── templates/ (158) # GTS route templates
│ ├── transforms/ (5) # Attribute transforms
│ └── utils/ (19) # Utility functions
├── functions/ # Google Cloud Functions backend
│ ├── src/
│ │ ├── auth/ # Auth triggers
│ │ ├── database/ # Realtime DB triggers
│ │ ├── firestore/ # Firestore document triggers
│ │ ├── https/ # HTTPS endpoints
│ │ ├── pubsub/ # Pub/Sub triggers
│ │ ├── storage/ # Cloud Storage triggers
│ │ ├── models/ # TypeScript interfaces
│ │ ├── types/ # Type definitions
│ │ └── utils/ # Shared utilities
│ └── lib/ # Compiled output
├── tests/ # Test suites (807 files)
│ ├── acceptance/ # User flow tests
│ ├── integration/ # Component tests
│ └── unit/ # Logic tests
├── translations/ # i18n files
├── types/ # Global TypeScript types
├── algolia/ # Algolia search config
├── terraform/ # Infrastructure as Code
├── emulator-data/ # Firebase emulator snapshots
├── config/ # Ember.js config
├── docs/ # Documentation
└── public/ # Static assets
Data Flow Architecture
Read Flow (Frontend → Firestore)
User visits route
→ Route.model() calls store.query() or store.findRecord()
→ WarpDrive Store dispatches to adapter
→ CloudFirestoreAdapter reads from Firestore
→ CloudFirestoreSerializer normalizes response
→ Store caches record
→ GTS template renders via @model
→ Glimmer component displays data
Write Flow (Frontend → Firestore → Triggers)
User submits form
→ Component @action or ember-concurrency task
→ model.save() via WarpDrive Store
→ CloudFirestoreAdapter writes to Firestore
→ Firestore document created/updated
→ Cloud Function trigger fires
→ Side effects: email, Algolia sync, audit trail, webhooks
→ Real-time listener updates frontend Store
→ Component re-renders with updated data
Third-Party Integration Flow
Frontend component → REST adapter (adapter/firebase.ts)
→ Cloud Function HTTPS endpoint
→ Third-party API (Stripe, Mailgun, PandaDoc, etc.)
→ Response → Firestore document update
→ Real-time listener → Frontend update
Domain Model Map
Core Entities
- Agency — Insurance agency (primary organizational unit)
- User — Platform user (agent, admin, super admin)
- Client — Contact/person being insured
- Carrier — Insurance carrier company
Business Entities
- Enrollment — Insurance enrollment record
- Contract — Agent-carrier contract
- Group — Group insurance plan
- Quote — Insurance quote
- Membership — Client membership
Financial
- Statement — Commission statement
- Transaction — Financial transaction
Communication
- Activity — Audit trail / activity log
- Message — Internal messaging
- Ticket — Support ticket
- Inquiry — Lead inquiry
Associations
- Affiliation — Agent-agency relationship
- License — Agent license record
- Event — Calendar/marketing event
Attachment Patterns
Most entities have associated:
*-file — File attachments (stored in Cloud Storage)
*-note — Text notes
activity — Audit trail entries
Route Map
Public Routes
| Route |
Purpose |
/login |
User authentication |
/register |
New user registration |
/reset |
Password reset |
/onboarding |
Post-registration setup |
/client/:id |
Public client profile |
/client-form/:id |
Public client form |
/order/:id |
Order page |
/session |
Session management |
Authenticated Routes (/a3/...)
| Route |
Purpose |
/a3 |
Dashboard |
/a3/clients |
Client (contact) management |
/a3/enrollments |
Enrollment management |
/a3/groups |
Group management |
/a3/agencies |
Agency management |
/a3/carriers |
Carrier information |
/a3/contracting |
Contract management |
/a3/statements |
Commission statements |
/a3/settings |
User settings |
/a3/tools |
Quote tools |
/a3/calendar |
Calendar |
/a3/leads |
Lead management |
/a3/notifications |
Notifications |
/a3/search |
Global search |
/a3/support |
Support tickets |
/a3/resources |
Resources |
/a3/knowledge-hub |
Knowledge base |
/a3/marketing-events |
Marketing events |
/a3/readiness-report |
Readiness report |
/a3/services |
Services (websites) |
Admin Routes (/admin/...)
| Route |
Purpose |
/admin/accounting |
Financial management |
/admin/agencies |
Agency administration |
/admin/carriers |
Carrier management |
/admin/clients |
Client administration |
/admin/contracting |
Contract admin |
/admin/enrollments |
Enrollment admin |
/admin/enrollment-issues |
Issue tracking |
/admin/events |
Event management |
/admin/groups |
Group admin |
/admin/inquiries |
Lead/inquiry management |
/admin/marketing |
Marketing tools |
/admin/messages |
Messaging |
/admin/notifications |
Notification management |
/admin/products |
Product management |
/admin/reporting |
Reports |
/admin/search |
Admin search |
/admin/settings |
System settings |
/admin/tickets |
Support ticket admin |
/admin/users |
User management |
Service Map
| Service |
File |
Purpose |
store |
app/services/store.ts |
WarpDrive data store with custom aggregation methods |
session |
app/services/session.ts |
Firebase Auth + MFA + ember-simple-auth |
current-user |
app/services/current-user.ts |
Loaded user data and permissions |
search |
app/services/search.ts |
Algolia search integration |
pdf |
app/services/pdf.ts |
PDF generation/manipulation |
csv |
app/services/csv.ts |
CSV export |
xlsx |
app/services/xlsx.ts |
Excel export |
analytics |
app/services/analytics.ts |
Event tracking |
tour |
app/services/tour.ts |
Shepherd.js onboarding tour |
recent-records |
app/services/recent-records.ts |
Recently viewed record tracking |
Key Configuration Files
| File |
Purpose |
app/config/environment.js |
Firebase config, API endpoints, feature flags |
firebase.json |
Firebase project config, emulator settings |
firestore.rules |
Firestore security rules (~101KB) |
firestore.indexes.json |
Composite indexes (~235KB) |
storage.rules |
Cloud Storage security rules |
database.rules.json |
Realtime Database rules |
ember-cli-build.js |
Build config (Embroider, split routes) |
vite.config.mjs |
Vite build config (Tailwind, PWA) |
app/router.ts |
Route definitions |
tsconfig.json |
TypeScript configuration |
netlify.toml |
Netlify deployment config |
Development Environment
- Frontend dev:
ember serve or vite dev
- Backend dev: Firebase Emulator Suite (auth, firestore, functions, storage, pubsub)
- Emulator data:
emulator-data/ contains snapshots for seeding
- Tests:
ember test (runs in browser via testem)
- Linting: ESLint, Prettier, Stylelint, ember-template-lint
Further Investigation Links
When you need deeper knowledge about specific areas:
1---2name: a3-architecture3description: Complete architecture reference for the A3 insurance platform — file locations, data flow, conventions, microservice map, and fullstack patterns4version: 0.1.05---67# A3 Platform Architecture Reference89## Overview1011A3 is a full-featured SaaS platform for insurance agent management built by Trusted American Insurance Agency. It provides CRM, enrollment management, commission tracking, compliance tools, and agent support.1213## Tech Stack1415| Layer | Technology |16|-------|-----------|17| Frontend | Ember.js 6.9 (Octane) with TypeScript, Glimmer GTS components |18| Build | Vite + Embroider |19| Styling | Tailwind CSS 4 + Bootstrap 5 |20| State | WarpDrive (next-gen Ember Data) |21| Database | Cloud Firestore (NoSQL) |22| Realtime DB | Firebase Realtime Database (status tracking) |23| File Storage | Google Cloud Storage |24| Auth | Firebase Authentication + ember-simple-auth |25| Backend | Google Cloud Functions (Node.js 22, TypeScript) |26| Search | Algolia |27| Payments | Stripe |28| Email | Mailgun |29| Documents | PandaDoc |30| CRM Sync | HubSpot, Salesforce |31| Error Tracking | Sentry |32| Customer Support | Intercom |33| State Machines | XState 5 |34| Charts | Highcharts 12 |35| Maps | Google Maps |36| Deployment | Netlify (frontend), GCP (backend) |37| IaC | Terraform |3839## Directory Structure4041```42A3/43├── app/ # Ember.js frontend application44│ ├── abilities/ (101) # ember-can permission definitions45│ ├── adapters/ (11) # Data source adapters46│ ├── builders/ (2) # API call builders47│ ├── components/ (436) # Glimmer GTS components48│ ├── config/ (5) # App configuration49│ ├── controllers/ (varies) # Controllers (only for query params)50│ ├── handlers/ (2) # Request handlers51│ ├── helpers/ (2) # Template helpers52│ ├── models/ (136) # Ember Data models53│ ├── modifiers/ (1) # DOM modifiers54│ ├── routes/ (333) # Route definitions55│ ├── serializers/ (16) # Data serializers56│ ├── services/ (12) # Application services57│ ├── session-stores/(1) # Auth session storage58│ ├── styles/ (1) # Tailwind CSS entry point59│ ├── templates/ (158) # GTS route templates60│ ├── transforms/ (5) # Attribute transforms61│ └── utils/ (19) # Utility functions62├── functions/ # Google Cloud Functions backend63│ ├── src/64│ │ ├── auth/ # Auth triggers65│ │ ├── database/ # Realtime DB triggers66│ │ ├── firestore/ # Firestore document triggers67│ │ ├── https/ # HTTPS endpoints68│ │ ├── pubsub/ # Pub/Sub triggers69│ │ ├── storage/ # Cloud Storage triggers70│ │ ├── models/ # TypeScript interfaces71│ │ ├── types/ # Type definitions72│ │ └── utils/ # Shared utilities73│ └── lib/ # Compiled output74├── tests/ # Test suites (807 files)75│ ├── acceptance/ # User flow tests76│ ├── integration/ # Component tests77│ └── unit/ # Logic tests78├── translations/ # i18n files79├── types/ # Global TypeScript types80├── algolia/ # Algolia search config81├── terraform/ # Infrastructure as Code82├── emulator-data/ # Firebase emulator snapshots83├── config/ # Ember.js config84├── docs/ # Documentation85└── public/ # Static assets86```8788## Data Flow Architecture8990### Read Flow (Frontend → Firestore)91```92User visits route93 → Route.model() calls store.query() or store.findRecord()94 → WarpDrive Store dispatches to adapter95 → CloudFirestoreAdapter reads from Firestore96 → CloudFirestoreSerializer normalizes response97 → Store caches record98 → GTS template renders via @model99 → Glimmer component displays data100```101102### Write Flow (Frontend → Firestore → Triggers)103```104User submits form105 → Component @action or ember-concurrency task106 → model.save() via WarpDrive Store107 → CloudFirestoreAdapter writes to Firestore108 → Firestore document created/updated109 → Cloud Function trigger fires110 → Side effects: email, Algolia sync, audit trail, webhooks111 → Real-time listener updates frontend Store112 → Component re-renders with updated data113```114115### Third-Party Integration Flow116```117Frontend component → REST adapter (adapter/firebase.ts)118 → Cloud Function HTTPS endpoint119 → Third-party API (Stripe, Mailgun, PandaDoc, etc.)120 → Response → Firestore document update121 → Real-time listener → Frontend update122```123124## Domain Model Map125126### Core Entities127- **Agency** — Insurance agency (primary organizational unit)128- **User** — Platform user (agent, admin, super admin)129- **Client** — Contact/person being insured130- **Carrier** — Insurance carrier company131132### Business Entities133- **Enrollment** — Insurance enrollment record134- **Contract** — Agent-carrier contract135- **Group** — Group insurance plan136- **Quote** — Insurance quote137- **Membership** — Client membership138139### Financial140- **Statement** — Commission statement141- **Transaction** — Financial transaction142143### Communication144- **Activity** — Audit trail / activity log145- **Message** — Internal messaging146- **Ticket** — Support ticket147- **Inquiry** — Lead inquiry148149### Associations150- **Affiliation** — Agent-agency relationship151- **License** — Agent license record152- **Event** — Calendar/marketing event153154### Attachment Patterns155Most entities have associated:156- `*-file` — File attachments (stored in Cloud Storage)157- `*-note` — Text notes158- `activity` — Audit trail entries159160## Route Map161162### Public Routes163| Route | Purpose |164|-------|---------|165| `/login` | User authentication |166| `/register` | New user registration |167| `/reset` | Password reset |168| `/onboarding` | Post-registration setup |169| `/client/:id` | Public client profile |170| `/client-form/:id` | Public client form |171| `/order/:id` | Order page |172| `/session` | Session management |173174### Authenticated Routes (`/a3/...`)175| Route | Purpose |176|-------|---------|177| `/a3` | Dashboard |178| `/a3/clients` | Client (contact) management |179| `/a3/enrollments` | Enrollment management |180| `/a3/groups` | Group management |181| `/a3/agencies` | Agency management |182| `/a3/carriers` | Carrier information |183| `/a3/contracting` | Contract management |184| `/a3/statements` | Commission statements |185| `/a3/settings` | User settings |186| `/a3/tools` | Quote tools |187| `/a3/calendar` | Calendar |188| `/a3/leads` | Lead management |189| `/a3/notifications` | Notifications |190| `/a3/search` | Global search |191| `/a3/support` | Support tickets |192| `/a3/resources` | Resources |193| `/a3/knowledge-hub` | Knowledge base |194| `/a3/marketing-events` | Marketing events |195| `/a3/readiness-report` | Readiness report |196| `/a3/services` | Services (websites) |197198### Admin Routes (`/admin/...`)199| Route | Purpose |200|-------|---------|201| `/admin/accounting` | Financial management |202| `/admin/agencies` | Agency administration |203| `/admin/carriers` | Carrier management |204| `/admin/clients` | Client administration |205| `/admin/contracting` | Contract admin |206| `/admin/enrollments` | Enrollment admin |207| `/admin/enrollment-issues` | Issue tracking |208| `/admin/events` | Event management |209| `/admin/groups` | Group admin |210| `/admin/inquiries` | Lead/inquiry management |211| `/admin/marketing` | Marketing tools |212| `/admin/messages` | Messaging |213| `/admin/notifications` | Notification management |214| `/admin/products` | Product management |215| `/admin/reporting` | Reports |216| `/admin/search` | Admin search |217| `/admin/settings` | System settings |218| `/admin/tickets` | Support ticket admin |219| `/admin/users` | User management |220221## Service Map222223| Service | File | Purpose |224|---------|------|---------|225| `store` | `app/services/store.ts` | WarpDrive data store with custom aggregation methods |226| `session` | `app/services/session.ts` | Firebase Auth + MFA + ember-simple-auth |227| `current-user` | `app/services/current-user.ts` | Loaded user data and permissions |228| `search` | `app/services/search.ts` | Algolia search integration |229| `pdf` | `app/services/pdf.ts` | PDF generation/manipulation |230| `csv` | `app/services/csv.ts` | CSV export |231| `xlsx` | `app/services/xlsx.ts` | Excel export |232| `analytics` | `app/services/analytics.ts` | Event tracking |233| `tour` | `app/services/tour.ts` | Shepherd.js onboarding tour |234| `recent-records` | `app/services/recent-records.ts` | Recently viewed record tracking |235236## Key Configuration Files237238| File | Purpose |239|------|---------|240| `app/config/environment.js` | Firebase config, API endpoints, feature flags |241| `firebase.json` | Firebase project config, emulator settings |242| `firestore.rules` | Firestore security rules (~101KB) |243| `firestore.indexes.json` | Composite indexes (~235KB) |244| `storage.rules` | Cloud Storage security rules |245| `database.rules.json` | Realtime Database rules |246| `ember-cli-build.js` | Build config (Embroider, split routes) |247| `vite.config.mjs` | Vite build config (Tailwind, PWA) |248| `app/router.ts` | Route definitions |249| `tsconfig.json` | TypeScript configuration |250| `netlify.toml` | Netlify deployment config |251252## Development Environment253254- **Frontend dev**: `ember serve` or `vite dev`255- **Backend dev**: Firebase Emulator Suite (auth, firestore, functions, storage, pubsub)256- **Emulator data**: `emulator-data/` contains snapshots for seeding257- **Tests**: `ember test` (runs in browser via testem)258- **Linting**: ESLint, Prettier, Stylelint, ember-template-lint259260## Further Investigation Links261262When you need deeper knowledge about specific areas:263264- **Ember.js**: https://guides.emberjs.com/release/265- **Glimmer Components**: https://guides.emberjs.com/release/components/266- **WarpDrive/Ember Data**: https://api.emberjs.com/ember-data/release267- **Firestore**: https://firebase.google.com/docs/firestore268- **Cloud Functions**: https://firebase.google.com/docs/functions269- **Tailwind CSS**: https://tailwindcss.com/docs270- **ember-cloud-firestore-adapter**: https://github.com/nickersk/ember-cloud-firestore-adapter271- **ember-simple-auth**: https://ember-simple-auth.com/272- **ember-can**: https://github.com/minutebase/ember-can273- **ember-concurrency**: https://ember-concurrency.com/274- **XState**: https://stately.ai/docs