Shared Authentication
All apps authenticate through Mana Core Auth using EdDSA JWT tokens.
Manacore is a multi-app ecosystem with shared infrastructure, enabling rapid development of interconnected applications.
┌─────────────────────────────────────────────────────────────────┐│ Client Layer │├─────────────────┬─────────────────┬─────────────────────────────┤│ Mobile Apps │ Web Apps │ Landing Pages ││ (Expo/RN) │ (SvelteKit) │ (Astro) │└────────┬────────┴────────┬────────┴──────────────┬──────────────┘ │ │ │ └─────────────────┼───────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ API Gateway ││ (Individual NestJS backends) │└─────────────────────────────┬───────────────────────────────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ▼ ▼ ▼┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Mana Core Auth │ │ Mana Search │ │ Mana Storage ││ (Port 3001) │ │ (Port 3021) │ │ (S3/MinIO) │└────────┬────────┘ └────────┬────────┘ └─────────────────┘ │ │ ▼ ▼┌─────────────────┐ ┌─────────────────┐│ PostgreSQL │ │ Redis ││ │ │ │└─────────────────┘ └─────────────────┘Shared Authentication
All apps authenticate through Mana Core Auth using EdDSA JWT tokens.
Independent Databases
Each service has its own PostgreSQL database for isolation.
Shared Packages
Common code lives in packages/ for reuse across apps.
Consistent Patterns
All apps follow the same architectural patterns and conventions.
| Layer | Technology | Purpose |
|---|---|---|
| Mobile | Expo SDK 52+, React Native | iOS & Android apps |
| Web | SvelteKit 2, Svelte 5 | Web applications |
| Landing | Astro 5 | Marketing pages |
| Styling | Tailwind CSS, NativeWind | Consistent design |
| Layer | Technology | Purpose |
|---|---|---|
| API | NestJS 10-11 | REST APIs |
| ORM | Drizzle ORM | Database access |
| Database | PostgreSQL | Data persistence |
| Cache | Redis | Sessions, caching |
| Storage | MinIO/Hetzner S3 | File storage |
| Component | Technology | Purpose |
|---|---|---|
| Package Manager | pnpm 9.15+ | Dependency management |
| Build System | Turborepo | Monorepo orchestration |
| Containerization | Docker | Local dev & deployment |
| CDN | Cloudflare Pages | Static hosting |
┌──────────┐ ┌──────────┐ ┌─────────────────┐│ Client │────>│ Backend │────>│ Mana Core Auth │└──────────┘ └──────────┘ └─────────────────┘ │ │ │ │ Bearer JWT │ POST /validate │ │ │ {token} │ │ │<───────────────────│ │ │ {valid, payload} │ │<──────────────│ │ │ Response │ │| Service | Port | Purpose |
|---|---|---|
| mana-core-auth | 3001 | Authentication |
| chat-backend | 3002 | Chat API |
| picture-backend | 3006 | Image generation |
| zitare-backend | 3007 | Quotes API |
| manadeck-backend | 3009 | Card management |
| contacts-backend | 3015 | Contacts API |
| calendar-backend | 3014 | Calendar API |
| mana-search | 3021 | Search service |