Auth via Firebase client SDK; requests go through a centralized Axios apiClient (frontend/lib/api-client.ts) which injects Authorization (Firebase ID token) and x-organization-id headers.
Backend: Node.js + Express (TypeScript) in backend/
Mounted route prefixes like app.use('/api/google-ads', googleAdsRoutes) in backend/src/index.ts
Multi-tenant via tenantMiddleware that expects x-organization-id
Controllers in backend/src/controllers/*, services in backend/src/services/*
Database: PostgreSQL (Cloud SQL in production) accessed via helpers in backend/src/lib/database
Hosting/Infra: Cloud Run for backend. Frontend uses a public host (set NEXT_PUBLIC_API_URL to backend URL)