HappyBean 2.0 (new stack)¶
The next-generation platform. Python FastAPI backend, Next.js web frontend, Flutter mobile app.
R&D phase
There is currently one deployed environment (prod-ce). Developers work locally and deploy manually.
URLs¶
| Production (Canada East) | |
|---|---|
| Web app | https://app-happybean-web-prod-ce.azurewebsites.net |
| API | https://app-happybean-api-prod-ce.azurewebsites.net |
| API docs (Swagger) | Disabled in production |
A friendly custom domain (e.g.
app.happybean.appor per-tenant subdomains) will replace the*.azurewebsites.netURL once cutover begins.
How login works¶
HappyBean 2.0 supports two ways to log in, and both end up at the same tenant-scoped app.
1. Direct via tenant subdomain (preferred for known tenants)¶
Go to https://<tenancy-name>.happybean.app (e.g. https://acme.happybean.app).
Enter your email + password — you're logged straight into that tenant.
This works the same way as the legacy app (subdomain-per-tenant) — handy for bookmarks, customer-facing links, and impersonation.
2. Via the central login page (when you don't know which tenant)¶
Go to the central login URL (no subdomain).
- Enter your email address.
- The system looks up which tenants you belong to:
- Zero tenants → "host" login (host admins only).
- One tenant → straight in, redirected to
<that-tenant>.happybean.app. - Multiple tenants → pick from a list, then redirected to the chosen
<tenant>.happybean.app.
- Enter your password (or use Google / Microsoft social login).
Key difference from legacy¶
In the legacy app, the admin user on demo.happybean.app is a completely separate account from the admin user on admin.happybean.app.
In HappyBean 2.0, a single email address can belong to multiple tenants. You log in once with your email, pick the tenant, and you're in. No more juggling separate accounts per customer.
Azure resources¶
| Resource group | rg-happybean-prod-ce |
| Region | Canada East |
| Web App Service | app-happybean-web-prod-ce |
| API App Service | app-happybean-api-prod-ce |
| Database | Azure Database for PostgreSQL (Flexible Server) |
| Container registry | GitHub Container Registry (ghcr.io) |
Tech stack¶
- Backend: Python 3.12, FastAPI, SQLAlchemy (async), Alembic, PostgreSQL 16
- Frontend: Next.js 15 (App Router), React 19, TypeScript, TailwindCSS, HeroUI
- Mobile: Flutter 3 / Dart 3
- Auth: JWT (HS256) in httpOnly cookies; Google + Microsoft social login
- Background jobs: Celery + Redis
- Integrations: Xero, QuickBooks Online, SendGrid
→ See Accounts for login credentials.