Mental Loadless Tech Stack — and Why We Made These Choices
React Native, Next.js, Azure Functions, OpenAI. Every choice has a reason. Here's the architecture of a production-grade AI app built solo, and the trade-offs we accepted.
When you build alone, technical choices are existential. One bad architecture decision can cost weeks. The wrong stack can make the app impossible to maintain. Here are the choices I made for Mental Loadless, and the logic behind each one.
Mobile: React Native + Expo
Why: one codebase for iOS and Android. Expo radically simplifies builds, OTA deployments, and updates without going through App Store review every time. The community is massive, documentation excellent, and AI support (for debugging, generating components) is superior to Flutter or pure native.
Trade-off accepted: performance on very complex animations is slightly below native. For a family coordination app, that's not an issue.
Web/Landing: Next.js + Azure Static Web Apps
Why: Next.js App Router with static export = ultra-fast, SEO-friendly site, deployed in seconds on Azure Static Web Apps. No server to manage, near-zero cost, global CDN included.
Trade-off accepted: server-side dynamic rendering is limited. For a bilingual marketing site, static export is more than enough.
Backend: Azure Functions (Node.js)
Why: serverless = no server to manage, usage-based billing, automatic scalability. Azure Functions integrates natively with the rest of the Azure ecosystem (Storage, Communication Services, Key Vault). For a solopreneur, that's a significant advantage.
Trade-off accepted: cold starts can add latency on first requests. Mitigated with the Flex Consumption plan.
AI: OpenAI GPT-4o via Azure OpenAI Service
Why Azure OpenAI instead of direct OpenAI API: data stays in EU region (GDPR compliance), enterprise SLA, native integration with other Azure services, and same pricing as OpenAI direct.
What we use it for: structured extraction from natural language, action plan generation, task distribution suggestions. We use function calling and structured outputs to guarantee app-usable responses.
Transactional emails: Azure Communication Services
Why: 1,000 free emails/month, native Azure integration, no third-party dependency. For app notifications (invitations, reminders), that's more than enough at launch.
Auth: Azure Active Directory B2C
Why: enterprise-grade identity management, native OAuth2/OIDC support, integration with all Microsoft apps. Free up to 50,000 MAU. For an app handling family data, identity security is non-negotiable.
What we didn't use (and why)
Firebase: excellent for fast prototyping, but Google vendor lock-in and limitations on complex queries ruled it out for production.
Supabase: tempting, but adding an external managed PostgreSQL service when Azure offers native Cosmos DB and SQL would have fragmented the infrastructure.
Vercel: perfect for Next.js, but the goal was to centralize everything on Azure to simplify management, billing, and compliance.
The real lesson
The best stack isn't the most technically performant one. It's the one you can maintain alone, evolve without rewriting, and explain clearly to an investor or future developer. Ecosystem consistency is worth more than the brilliance of individual components.
SmartAI Labs
We build AI that actually works.
Mental Loadless is our first consumer product. See how we're rethinking family coordination with AI.