Multi-platform, mobile-first architecture built for speed, type safety, and a health-data trust model.
A single Dart codebase ships to iOS, Android, Web, and desktop. The type system enforces correctness across every pet health data surface.
Cross-platform iOS, Android, Web, Linux, macOS, Windows. Dart SDK ^3.9.2. Single codebase, type-safe.
Lightweight state management. Predictable, well-supported, low boilerplate.
On-device OCR. Nutrition label and document scanning with no server round-trip.
Camera-based QR and barcode scanning. Powers the product intelligence scanner.
PDF generation and viewing for shareable pet records and vet documents.
Scheduled push with full timezone support via flutter_timezone.
Migrating from Express 5.2.1 to Bun 1.3.5 + Elysia for 3-4x faster cold starts, native TypeScript, and end-to-end type-safe API routes. Better Auth handles sessions without vendor lock-in. Migration running in isolated Wave tracks with 117 CI tests on ArcHelm self-hosted runners.
Runtime replacing Node/Express. Native TypeScript, OpenAPI generation, composable module boundaries. Wave-by-wave migration with worktree isolation.
Email/password, Google OAuth, Apple Sign-in, Facebook. Handles sessions, CSRF, token rotation.
Transactional email for verification, password reset, and lifecycle.
Primary database. Document model fits flexible, evolving pet health schemas.
Simple, cost-efficient hosting for MVP velocity. Cloudflare handles edge delivery for static assets; DigitalOcean runs the API server. Lint, test, and secret-scan jobs run on ArcNode-M runners ([self-hosted, arcnode-m]); the Android build job runs on ArcHelm ([self-hosted, archelm]).
Staging server. Node.js auth server and API. Simple droplet setup for MVP velocity.
Static site hosting for the demo suite and future marketing. CDN-edge delivery, zero cold starts.
Lint, test, and secret-scan on ArcNode-M ([self-hosted, arcnode-m]). Android build on ArcHelm ([self-hosted, archelm]).
ArcGrid development infrastructure running on the ArcHelm Kubernetes cluster. Not part of the Packly product stack — used for dev-time AI tooling, project memory, and local model inference during development.
Kubernetes cluster at 10.20.10.29. Orchestrates all AI workloads.
Graph database for knowledge graph and entity memory. MCP server port 8005.
Persistent memory layer for AI agents. Port 8031.
Unified LLM proxy at 172.17.0.1:4000. Routes local and cloud models.
On-device inference at 172.17.0.1:8020. Llama3.1:8b, Qwen2.5-coder:32b, Qwen3-fast.
Web search integration for grounded, current AI responses.
Integrations identified for the next product phase. Sequencing driven by revenue impact and marketplace launch timing.
Documented decisions with the rationale and the trigger condition for revisiting each choice.
| Decision | Choice | Rationale | Revisit When |
|---|---|---|---|
| Mobile framework | Flutter | Type safety + cross-platform parity from a single codebase | Phase 3 web-first pivot |
| Auth | Better Auth | Self-hosted control, ESM-native, no vendor fee at scale | Series A scale requirements |
| Database | MongoDB Atlas | Schema flexibility during rapid health-data model iteration | Relational reporting requirements |
| AI inference | LightBrain local | Health-data privacy; pet records stay on-stack | Cloud burst needed for complex reasoning |
| Backend runtime | Bun 1.3.5 + Elysia | 3-4x cold start improvement, native TS, OpenAPI type safety over Node/Express | Stable — migration in progress via Wave tracks |
| Hosting | DigitalOcean + Cloudflare | MVP velocity with simple droplet setup and CDN edge | K8s full migration with ArcHelm at scale |