๐ง Configuration Reference
Checked-in configuration for the non-GPU AceSense services.
:::info Scope GPU worker images, hardware, environment, and provider-console values are outside this audit. This page covers the Firebase, web, and Flutter boundary. :::
Shared platformโ
| Setting | Value | Source |
|---|---|---|
| Firebase project | acesense-prod | Firebase manifests |
| Functions region | europe-west1 | shared/config.ts and each function |
| Functions runtime | Node.js 22 | package.json / firebase.json |
| Storage bucket | acesense-prod.firebasestorage.app | shared/config.ts |
| Max upload metadata size | 2 GiB | shared/config.ts |
| Max duration | 2 hours | shared/config.ts |
| Accepted metadata formats | mp4, mov, avi, mkv | shared/config.ts |
| Signed download URL TTL | 30 minutes | shared/config.ts |
| Completed-session retention | 30 days | shared/config.ts |
| Export retention | 7 days | shared/config.ts |
Upload quotasโ
requestUploadPath enforces both entitlement/monthly limits and the atomic
daily/concurrent quota in shared/quota.ts.
| Plan key | Uploads/day | Concurrent |
|---|---|---|
free | 5 | 1 |
trial | 5 | 1 |
pro | 50 | 3 |
team | 200 | 5 |
Verified Stripe, App Store, and Google Play events write tier and limits;
syncTierToPlan mirrors premium and ultimate tiers to the legacy plan values
used by older consumers.
Frontendโ
- Flutter toolchain: 3.41.9; Dart constraint:
^3.10.3. - Generated Firebase options:
lib/firebase_options.dart. - Cloud Functions:
FirebaseFunctions.instanceFor(region: 'europe-west1'). - Release mock flag:
USE_MOCKdefaults to false. - Hosting target:
app; public directory:build/web.
Adminโ
- Firebase initialization:
src/config/firebase-app.ts. - Auth + Functions:
src/config/firebase-auth.ts. - Functions client:
getFunctions(app, 'europe-west1'). - Hosting site:
acesense-admin; public directory:dist.
Docs and launchpadโ
Both sites keep sensitive bundles inside their Function source and expose an empty Hosting public directory. Hosting rewrites every request through an admin session-cookie gate.
| Site | Function | Codebase | Built site copied to |
|---|---|---|---|
| Docs | docsServer | docs | acesense-docs/functions/site |
| Launchpad | launchpadServer | launchpad | acesense-launchpad/functions/site |
The server accepts either admin: true or a verified email in the canonical
allowlist. Session cookies are HttpOnly, Secure, SameSite=Lax, and expire after
five days.
Storage and Firestoreโ
videos/{uid}/{sessionId}/{file}
results/{uid}/{sessionId}/{file}
users/{uid}
jobs/{jobId}
sessions/{sessionId} # separate client-created history records
api_keys/{keyId}
coachLinks/{linkId}
coachNotes/{noteId}
Jobs are server-created. Owners can read their jobs and edit only presentation
fields; deletion goes through deleteSession. Results are owner-readable but
server/admin-written.
Live URLsโ
| Service | URL |
|---|---|
| Landing | https://acesense.io |
| App | https://app.acesense.io |
| Admin | https://acesense-admin.web.app |
| Docs | https://docs.acesense.io |
| API | https://api.acesense.io |