chore: complete ManaCore → Mana rename (docs, go modules, plists, images)

Final cleanup of references missed in previous rename commits:

- Dockerfiles: PUBLIC_MANA_CORE_AUTH_URL → PUBLIC_MANA_AUTH_URL
- Go modules: github.com/manacore/* → github.com/mana/* (7 go.mod files)
- launchd plists: com.manacore.* → com.mana.* (14 files renamed + content)
- Image assets: *_Manacore_AI_Credits* → *_Mana_AI_Credits* (11 files)
- .env.example files: ManaCore brand strings → Mana
- .prettierignore: stale apps/manacore/* paths → apps/mana/*
- Markdown docs (CLAUDE.md, /docs/*): mana-core-auth → mana-auth, etc.

Excluded from rename: .claude/, devlog/, manascore/ (historical content),
client testimonials, blueprints, npm package refs (@mana-core/*).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-07 12:26:10 +02:00
parent 6f4667c2a3
commit 22a73943e1
307 changed files with 2408 additions and 4537 deletions

View file

@ -119,14 +119,14 @@ STRIPE_PORTAL_CONFIG_ID=bpc_1T1PFdAZjQCYS0ZJEhF9ob7q
# ============================================
# UMAMI ANALYTICS
# ============================================
# All app modules are tracked under the unified ManaCore website ID.
# All app modules are tracked under the unified Mana website ID.
# Module segmentation happens via the `module` event property (see analytics.ts).
# Register new sites at https://stats.mana.how
UMAMI_WEBSITE_ID_MANACORE=32777167-e026-4618-933a-3429120b479b
UMAMI_WEBSITE_ID_MANA=32777167-e026-4618-933a-3429120b479b
# Landing Page Website IDs (separate Astro sites, each needs its own ID)
UMAMI_WEBSITE_ID_CHAT_LANDING=a264b165-80d2-47ab-91f4-2efc01de0b66
UMAMI_WEBSITE_ID_MANACORE_LANDING=cef3798d-85ae-47df-a44a-e9bee09dbcf9
UMAMI_WEBSITE_ID_MANA_LANDING=cef3798d-85ae-47df-a44a-e9bee09dbcf9
UMAMI_WEBSITE_ID_CARDS_LANDING=2ac83d50-107f-4d4e-ac23-5540946e96e3
UMAMI_WEBSITE_ID_CALENDAR_LANDING=84862d98-727e-4e25-8645-639241dd1544
UMAMI_WEBSITE_ID_CLOCK_LANDING=0332b471-a022-46af-a726-0f45932bfd58

View file

@ -229,8 +229,8 @@ jobs:
done
# mana-web: apps/mana/apps/web + shared packages
MANACORE_WEB_CHANGED=$(check_pattern "apps/mana/apps/web/|apps/mana/packages/")
if [ "$COMMON_CHANGED" == "true" ] || [ "$SHARED_AUTH_CHANGED" == "true" ] || [ "$SHARED_UI_CHANGED" == "true" ] || [ "$SHARED_WEB_CHANGED" == "true" ] || [ "$MANACORE_WEB_CHANGED" == "true" ]; then
MANA_WEB_CHANGED=$(check_pattern "apps/mana/apps/web/|apps/mana/packages/")
if [ "$COMMON_CHANGED" == "true" ] || [ "$SHARED_AUTH_CHANGED" == "true" ] || [ "$SHARED_UI_CHANGED" == "true" ] || [ "$SHARED_WEB_CHANGED" == "true" ] || [ "$MANA_WEB_CHANGED" == "true" ]; then
echo "mana-web=true" >> $GITHUB_OUTPUT
else
echo "mana-web=false" >> $GITHUB_OUTPUT

View file

@ -35,10 +35,10 @@ TESTING_STRATEGY_AUTH_CREDITS.md
.prettiercache
# Astro files with JSX-style comments (valid Astro but Prettier can't parse)
apps/manacore/apps/landing/src/components/content/HeroSection.astro
apps/manacore/apps/landing/src/components/sections/ManaPrinciple.astro
apps/manacore/apps/landing/src/pages/apps/index.astro
apps/manacore/apps/landing/src/pages/privacy/index.astro
apps/mana/apps/landing/src/components/content/HeroSection.astro
apps/mana/apps/landing/src/components/sections/ManaPrinciple.astro
apps/mana/apps/landing/src/pages/apps/index.astro
apps/mana/apps/landing/src/pages/privacy/index.astro
games/mana-games/apps/web/src/layouts/Layout.astro
games/mana-games/apps/web/src/pages/games/[slug].astro
games/mana-games/apps/web/src/pages/games/*.astro

View file

@ -28,7 +28,7 @@ For comprehensive guidelines on code patterns and conventions, see the `.claude/
| [`.claude/guidelines/error-handling.md`](.claude/guidelines/error-handling.md) | Go-style Result types, error codes |
| [`.claude/guidelines/sveltekit-web.md`](.claude/guidelines/sveltekit-web.md) | Svelte 5 runes, stores |
| [`.claude/guidelines/expo-mobile.md`](.claude/guidelines/expo-mobile.md) | React Native, NativeWind |
| [`.claude/guidelines/authentication.md`](.claude/guidelines/authentication.md) | Mana Core Auth integration |
| [`.claude/guidelines/authentication.md`](.claude/guidelines/authentication.md) | Mana Auth integration |
| [`.claude/guidelines/design-ux.md`](.claude/guidelines/design-ux.md) | UI patterns, animations, a11y |
**Always consult these guidelines before making changes.**
@ -276,7 +276,7 @@ Parent workspace packages (e.g., `apps/chat/package.json`, `apps/zitare/package.
- SvelteKit 2.x + Svelte 5
- Tailwind CSS
- Mana Core Auth (Better Auth + EdDSA JWT)
- Mana Auth (Better Auth + EdDSA JWT)
- Local-first data (Dexie.js + mana-sync)
- svelte-i18n (5 languages: de, en, it, fr, es)
@ -294,7 +294,7 @@ Parent workspace packages (e.g., `apps/chat/package.json`, `apps/zitare/package.
### Authentication Architecture
All projects use **mana-core-auth** as the central authentication service:
All projects use **mana-auth** as the central authentication service:
```
┌─────────────┐ ┌─────────────┐ ┌────────────────┐
@ -383,9 +383,9 @@ curl http://localhost:3033/api/v1/import/vcard \
When adding a new app that should participate in cross-app SSO, update **all three** locations:
1. `trustedOrigins` in `services/mana-core-auth/src/auth/better-auth.config.ts`
1. `trustedOrigins` in `services/mana-auth/src/auth/better-auth.config.ts`
2. `CORS_ORIGINS` for mana-auth in `docker-compose.macmini.yml`
3. Run `pnpm test -- src/auth/sso-config.spec.ts` (from `services/mana-core-auth/`) to verify
3. Run `pnpm test -- src/auth/sso-config.spec.ts` (from `services/mana-auth/`) to verify
Missing any of these will silently break SSO for that app.
@ -868,8 +868,8 @@ pnpm dev:landing-builder
```
**How it works:**
1. Org admin configures landing page at `/organizations/{id}/landing` in the Manacore web dashboard
2. Config is stored in `organizations.metadata.landingPage` (mana-core-auth)
1. Org admin configures landing page at `/organizations/{id}/landing` in the Mana web dashboard
2. Config is stored in `organizations.metadata.landingPage` (mana-auth)
3. On publish, the builder service generates a static Astro site from the config
4. Site is deployed to Cloudflare Pages as `org-{slug}``{slug}.mana.how`
@ -1074,7 +1074,7 @@ Each project has its own `CLAUDE.md` with detailed information:
- `apps/cards/CLAUDE.md` - Card/deck management
- `apps/chat/CLAUDE.md` - Chat API endpoints, AI models
- `apps/picture/CLAUDE.md` - AI image generation
- `services/mana-core-auth/` - Central authentication service
- `services/mana-auth/` - Central authentication service
- `services/mana-search/CLAUDE.md` - Search & content extraction service (Go)
- `services/mana-crawler/CLAUDE.md` - Web crawler service (Go)
- `services/mana-notify/CLAUDE.md` - Notification service (Go)

View file

@ -401,7 +401,7 @@ Garten:
║ Server-autoritative Physik + Script-Execution ║
║ Orchestriert von Go-Service ║
╠═══════════════════════════════════════════════════════════╣
║ BACKEND (bestehende Manacore-Services) ║
║ BACKEND (bestehende Mana-Services) ║
║ Go: Orchestrator, Matchmaker, Sync, Notify, Search ║
║ Hono: Auth, Credits, User, Subscriptions, Analytics ║
║ Python: LLM (NPCs), Image Gen, STT, TTS ║
@ -791,9 +791,9 @@ DIREKT NUTZBAR (0 Aufwand):
ANPASSBAR (geringer Aufwand):
mana-sync (+ Chunk-Sync, Item-Sync)
@manacore/local-store (+ Voxel Collections)
@manacore/shared-auth (unveraendert)
@manacore/shared-ui (+ Editor-Komponenten)
@mana/local-store (+ Voxel Collections)
@mana/shared-auth (unveraendert)
@mana/shared-ui (+ Editor-Komponenten)
NEU ZU BAUEN:
Bevy Voxel Engine (Client + Server)
@ -1016,4 +1016,4 @@ BUDGET: ~50 MB RAM, ~1.8M Dreiecke, 60fps Desktop, 30fps Mobile
---
*Erstellt: 28. Maerz 2026*
*Projekt: ManaVoxel -- Teil des Manacore-Oekosystems*
*Projekt: ManaVoxel -- Teil des Mana-Oekosystems*

View file

@ -345,7 +345,7 @@ Transaktion: Alice kauft Item in Bobs Game fuer 100 Mana
│ TypeScript (30%) │
│ ├── Svelte 5 UI (Editor, Marketplace, Social) │
│ ├── Hono Services (auth, credits, user, subs) │
│ ├── Shared Packages (@manacore/*) │
│ ├── Shared Packages (@mana/*) │
│ ├── User Game Scripts (→ WASM kompiliert) │
│ └── Local-First Layer (Dexie.js) │
│ │

View file

@ -927,4 +927,4 @@ NEUER CODE: ~15.000-25.000 Zeilen TypeScript + ~5.000 Zeilen Go
---
*Erstellt: 28. Maerz 2026*
*Projekt: ManaVoxel 2D -- Teil des Manacore-Oekosystems*
*Projekt: ManaVoxel 2D -- Teil des Mana-Oekosystems*

View file

@ -1,4 +1,4 @@
# Roblox Reimagined: Stack-Optionen fuer Manacore
# Roblox Reimagined: Stack-Optionen fuer Mana
## Welche Technologien koennten wir nutzen -- und was haben wir bereits?
@ -29,7 +29,7 @@ Wir betreiben bereits ein komplexes, polyglot, selbst-gehostetes Oekosystem:
| **Hono Services (5)** | Hono 4.7 + Bun, Drizzle ORM | auth, credits, user, subscriptions, analytics |
| **Python AI (5+)** | FastAPI, MLX, Whisper, FLUX | llm, image-gen, stt, tts, voice-bot |
| **Frontend (19 Apps)** | SvelteKit 2 + Svelte 5 + Tailwind 4 | Todo, Chat, Calendar, Photos, etc. |
| **Mobile** | Expo 55 + React Native 0.83 + NativeWind | Mana, Traces |
| **Mobile** | Expo 55 + React Native 0.83 + NativeWind | Mana, Traces |
| **Local-First** | Dexie.js + mana-sync (Go WebSocket) | 19 Apps migriert |
| **Datenbank** | PostgreSQL 16 | Alle Services |
| **Cache** | Redis 7 | Rate Limiting, Sessions |
@ -657,16 +657,16 @@ Option B ("Ambitioniert") ist der beste Kompromiss:
### Anpassbar (moderater Umbau)
| Komponente | Basis | Aenderung |
| ---------------- | --------------------------- | ------------------------------------------- |
| Local-First Sync | mana-sync | Game-World-Sync + Asset-Sync hinzufuegen |
| Local Store | @manacore/local-store | Game-Collections (worlds, assets, progress) |
| Shared Auth | @manacore/shared-auth | Unveraendert, in neuer App nutzen |
| Shared UI | @manacore/shared-ui | Editor-Komponenten ergaenzen |
| API Client | @manacore/shared-api-client | Game-Server-Endpoints hinzufuegen |
| PWA | @manacore/shared-pwa | Offline-Game-Support |
| i18n | @manacore/shared-i18n | Game-spezifische Strings |
| Analytics | mana-analytics | Game-Metriken (Plays, Retention) |
| Komponente | Basis | Aenderung |
| ---------------- | ----------------------- | ------------------------------------------- |
| Local-First Sync | mana-sync | Game-World-Sync + Asset-Sync hinzufuegen |
| Local Store | @mana/local-store | Game-Collections (worlds, assets, progress) |
| Shared Auth | @mana/shared-auth | Unveraendert, in neuer App nutzen |
| Shared UI | @mana/shared-ui | Editor-Komponenten ergaenzen |
| API Client | @mana/shared-api-client | Game-Server-Endpoints hinzufuegen |
| PWA | @mana/shared-pwa | Offline-Game-Support |
| i18n | @mana/shared-i18n | Game-spezifische Strings |
| Analytics | mana-analytics | Game-Metriken (Plays, Retention) |
### Neu zu bauen

View file

@ -1,12 +1,12 @@
# Manacore Monorepo
# Mana Monorepo
Monorepo containing all Manacore projects — a self-hosted multi-app ecosystem with shared packages and unified tooling.
Monorepo containing all Mana projects — a self-hosted multi-app ecosystem with shared packages and unified tooling.
## Projects
| Project | Description | Apps |
|---------|-------------|------|
| **manacore** | Multi-app ecosystem platform | Expo mobile, SvelteKit web |
| **mana** | Multi-app ecosystem platform | Expo mobile, SvelteKit web |
| **chat** | AI chat application | NestJS backend, Expo mobile, SvelteKit web, Astro landing |
| **todo** | Task management | NestJS backend, SvelteKit web, Astro landing |
| **calendar** | Calendar & scheduling | NestJS backend, SvelteKit web, Astro landing |
@ -62,7 +62,7 @@ See [CLAUDE.md](./CLAUDE.md) for comprehensive development documentation.
## Architecture
```
manacore-monorepo/
mana-monorepo/
├── apps/ # Product applications
├── services/ # Microservices (auth, search, LLM, bots)
├── packages/ # Shared packages

View file

@ -1,6 +1,6 @@
# Troubleshooting Guide
Common issues and solutions for the manacore-monorepo.
Common issues and solutions for the mana-monorepo.
## Table of Contents
@ -242,7 +242,7 @@ pnpm turbo run lint --filter=presi
```bash
# Add shared config
pnpm add -D @manacore/eslint-config --filter @myapp/backend
pnpm add -D @mana/eslint-config --filter @myapp/backend
```
2. **Incompatible ESLint versions**
@ -297,7 +297,7 @@ Using **type-only imports** (`import {X }`) for classes that need to be injected
### ❌ WRONG - Type-Only Import
```typescript
// services/mana-core-auth/src/ai/ai.service.ts - DON'T DO THIS!
// services/mana-auth/src/ai/ai.service.ts - DON'T DO THIS!
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; // ❌ Type-only import
@ -320,7 +320,7 @@ export class AiService {
### ✅ CORRECT - Regular Import
```typescript
// services/mana-core-auth/src/ai/ai.service.ts - CORRECT
// services/mana-auth/src/ai/ai.service.ts - CORRECT
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; // ✅ Regular import
@ -361,8 +361,8 @@ export class AiService {
4. Rebuild and test:
```bash
pnpm --filter mana-core-auth build
pnpm --filter mana-core-auth start:dev
pnpm --filter mana-auth build
pnpm --filter mana-auth start:dev
```
### Debugging
@ -384,10 +384,10 @@ export class AiModule {}
```bash
# Build the service
pnpm --filter mana-core-auth build
pnpm --filter mana-auth build
# Check the compiled output
cat services/mana-core-auth/dist/ai/ai.service.js | grep "require"
cat services/mana-auth/dist/ai/ai.service.js | grep "require"
# Should see:
# const config_1 = require("@nestjs/config"); ✅ Good
@ -401,7 +401,7 @@ If the error only happens in Docker but not locally:
```bash
# Build Docker image without cache
docker build --no-cache -f services/mana-core-auth/Dockerfile -t test .
docker build --no-cache -f services/mana-auth/Dockerfile -t test .
# Check the compiled code in the image
docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js
@ -409,7 +409,7 @@ docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js
### Related Issues
- [Commit d69cc607](https://github.com/Memo-2023/manacore-monorepo/commit/d69cc607) - Fixed type-only ConfigService import in AiService
- [Commit d69cc607](https://github.com/Memo-2023/mana-monorepo/commit/d69cc607) - Fixed type-only ConfigService import in AiService
- TypeScript `import type` vs `import {}` - both erase at compile time
- Docker layer caching can hide fixes if source wasn't properly copied
@ -425,7 +425,7 @@ docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js
If you encounter an issue not covered here:
1. Check the [GitHub Issues](https://github.com/Memo-2023/manacore-monorepo/issues)
1. Check the [GitHub Issues](https://github.com/Memo-2023/mana-monorepo/issues)
2. Review recent commits that may have introduced the issue
3. Run `pnpm clean` and `pnpm install` to reset
4. Create a new issue with full error logs

View file

@ -162,7 +162,7 @@ pnpm preview # Preview build
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Landing** | Astro 5.x, Tailwind CSS |
| **Mobile** | React Native 0.81 + Expo SDK 54, NativeWind [TODO] |
| **Auth** | Mana Core Auth (JWT) |
| **Auth** | Mana Auth (JWT) |
| **i18n** | svelte-i18n (DE, EN, FR, ES, IT) |
| **Dates** | date-fns |
| **Sync** | ical.js, tsdav (CalDAV) |
@ -406,7 +406,7 @@ FREQ=WEEKLY;UNTIL=20241231T235959Z # Wöchentlich bis Ende 2024
```env
NODE_ENV=development
PORT=3014
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/calendar
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/calendar
MANA_AUTH_URL=http://localhost:3001
CORS_ORIGINS=http://localhost:5173,http://localhost:5179,http://localhost:8081
@ -536,7 +536,7 @@ Priority: explicit duration in text > history estimate > default fallback > 1h (
docker compose -f docker-compose.dev.yml up -d postgres
# Datenbank erstellen
PGPASSWORD=devpassword psql -h localhost -U manacore -d postgres -c "CREATE DATABASE calendar;"
PGPASSWORD=devpassword psql -h localhost -U mana -d postgres -c "CREATE DATABASE calendar;"
# Schema pushen
pnpm calendar:db:push
@ -615,7 +615,7 @@ curl -X POST http://localhost:3014/api/v1/events \
| **Accessibility** | ✅ | Focus trapping in all modals, ARIA roles, keyboard navigation |
| **Rate Limiting** | ✅ | ThrottlerGuard global (100 req/min) |
| **API Validation** | ✅ | DTOs with class-validator, whitelist + forbidNonWhitelisted |
| **Auth** | ✅ | JWT via mana-core-auth, guards on all controllers |
| **Auth** | ✅ | JWT via mana-auth, guards on all controllers |
| **Toast System** | ✅ | All toast messages localized via svelte-i18n |
| **Docker** | ✅ | Multi-stage build, health checks, entrypoint script |
| **Tests** | ✅ | 13 unit tests, 7 E2E test suites (Playwright) |
@ -652,7 +652,7 @@ pnpm --filter @calendar/web test:e2e
## Important Notes
1. **Authentication**: Nutzt Mana Core Auth (JWT im Authorization Header)
1. **Authentication**: Nutzt Mana Auth (JWT im Authorization Header)
2. **Database**: PostgreSQL mit Drizzle ORM (Port 5432)
3. **Port**: Server läuft auf Port 3014
4. **Recurrence**: Verwendet RFC 5545 RRULE Format

View file

@ -21,7 +21,7 @@ Eine vollständige Kalender-Anwendung mit persönlichen und geteilten Kalendern,
docker compose -f docker-compose.dev.yml up -d postgres
# 2. Datenbank erstellen
PGPASSWORD=devpassword psql -h localhost -U manacore -d postgres -c "CREATE DATABASE calendar;"
PGPASSWORD=devpassword psql -h localhost -U mana -d postgres -c "CREATE DATABASE calendar;"
# 3. Schema pushen
pnpm calendar:db:push
@ -44,7 +44,7 @@ pnpm dev:calendar:app
- **Backend**: NestJS, Drizzle ORM, PostgreSQL
- **Web**: SvelteKit, Svelte 5, Tailwind CSS
- **Landing**: Astro, Tailwind CSS
- **Auth**: Mana Core Auth (JWT)
- **Auth**: Mana Auth (JWT)
## Dokumentation
@ -76,4 +76,4 @@ pnpm calendar:db:studio # Drizzle Studio öffnen
## Lizenz
Proprietär - Manacore
Proprietär - Mana

View file

@ -102,7 +102,7 @@ const links = {
&copy; {currentYear} Kalender. Alle Rechte vorbehalten.
</p>
<p class="text-sm text-gray-500">
Ein <a href="https://mana.how" class="text-primary-400 hover:underline">Manacore</a> Produkt
Ein <a href="https://mana.how" class="text-primary-400 hover:underline">Mana</a> Produkt
</p>
</div>
</div>

View file

@ -178,7 +178,7 @@ Or create manually:
# Use the SAME project as Cloud Run deployment
PROJECT_ID="mana-core-453821"
# Generate service key (used for Mana Core authentication)
# Generate service key (used for Mana authentication)
SERVICE_KEY=$(openssl rand -base64 32)
# Create secrets in the SAME project where Cloud Run will be deployed
@ -944,7 +944,7 @@ Health check failed with HTTP 503
**Common Causes**:
1. Missing environment variables
2. Can't connect to Supabase
3. Can't connect to Mana Core
3. Can't connect to Mana
4. Application error on startup
**Debugging**:
@ -1174,9 +1174,9 @@ Adjust in workflow:
| Variable | Location | Purpose |
|----------|----------|---------|
| `NODE_ENV` | Cloud Run | Set to `production` |
| `MANA_SERVICE_URL` | GCP Secret | Mana Core API URL |
| `MANA_SERVICE_URL` | GCP Secret | Mana API URL |
| `APP_ID` | GCP Secret | Cards app identifier |
| `SERVICE_KEY` | GCP Secret | Mana Core auth key |
| `SERVICE_KEY` | GCP Secret | Mana auth key |
| `SUPABASE_URL` | GCP Secret | Supabase project URL |
| `SUPABASE_ANON_KEY` | GCP Secret | Supabase anonymous key |
| `SUPABASE_SERVICE_KEY` | GCP Secret | Supabase service role key |

View file

@ -1,10 +1,10 @@
# Cards Credit System
This document explains how the Mana Core credit system is integrated into Cards.
This document explains how the Mana credit system is integrated into Cards.
## Overview
Cards uses **Mana** as its credit currency to charge for operations like deck creation, card generation, and AI features. The credit system is powered by [Mana Core](https://github.com/Memo-2023/mana-core-nestjs-package), which provides:
Cards uses **Mana** as its credit currency to charge for operations like deck creation, card generation, and AI features. The credit system is powered by [Mana](https://github.com/Memo-2023/mana-core-nestjs-package), which provides:
- Credit validation before operations
- Credit consumption after successful operations
@ -51,7 +51,7 @@ These costs are defined in `backend/src/config/credit-operations.ts`.
┌─────────────┐
│ Mana Core │ - Validate balance
│ Mana │ - Validate balance
│ Service │ - Deduct credits
│ │ - Record transaction
└─────────────┘
@ -61,7 +61,7 @@ These costs are defined in `backend/src/config/credit-operations.ts`.
### 1. Service Key Configuration
The backend needs a service key from Mana Core to perform credit operations.
The backend needs a service key from Mana to perform credit operations.
**backend/.env**:
```env
@ -500,7 +500,7 @@ SERVICE_KEY=your-actual-service-key-from-mana-core
## Resources
- [Mana Core Documentation](https://docs.mana-core.com)
- [Mana Core NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package)
- [Mana Documentation](https://docs.mana-core.com)
- [Mana NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package)
- [Integration Guide](./MANA_CORE_INTEGRATION_GUIDE.md)
- [Example Implementation](./apps/mobile/examples/DeckCreationExample.tsx)

View file

@ -109,7 +109,7 @@ for SECRET in MANA_SERVICE_URL CARDS_APP_ID CARDS_SERVICE_KEY CARDS_SUPABASE_URL
done
```
**IMPORTANT**: Add the generated `SERVICE_KEY` to mana-core-middleware's `APP_SERVICE_KEYS`:
**IMPORTANT**: Add the generated `SERVICE_KEY` to mana-middleware's `APP_SERVICE_KEYS`:
```
APP_SERVICE_KEYS=existing-apps,YOUR_APP_ID:YOUR_SERVICE_KEY
@ -219,7 +219,7 @@ gcloud secrets add-iam-policy-binding CARDS_APP_ID \
1. Missing environment variables/secrets
2. Can't connect to Supabase
3. Can't connect to Mana Core
3. Can't connect to Mana
**Debug**:

View file

@ -1,6 +1,6 @@
# Mana Core Architecture in Storyteller
# Mana Architecture in Storyteller
This document explains the architecture and data flow of the Mana Core integration in the Storyteller project.
This document explains the architecture and data flow of the Mana integration in the Storyteller project.
## System Architecture
@ -32,7 +32,7 @@ This document explains the architecture and data flow of the Mana Core integrati
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Mana Core NestJS Integration │ │
│ │ Mana NestJS Integration │ │
│ ├───────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
@ -73,7 +73,7 @@ This document explains the architecture and data flow of the Mana Core integrati
│ Credit Operations)
┌─────────────────────────────────────────────────────────────────┐
│ Mana Core Service │
│ Mana Service │
│ (Authentication & Credits) │
├─────────────────────────────────────────────────────────────────┤
│ │
@ -383,7 +383,7 @@ const CREDIT_COSTS = {
}
```
3. **Mana Core**: Processes credit operations
3. **Mana**: Processes credit operations
- Validates user has sufficient credits
- Deducts credits from user's balance
- Records transaction in ledger
@ -476,8 +476,8 @@ async getCharacters(
### Backend `.env`
```env
# Mana Core (Required)
MANA_SERVICE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
# Mana (Required)
MANA_SERVICE_URL=https://mana-middleware-111768794939.europe-west3.run.app
APP_ID=8d2f5ddb-e251-4b3b-8802-84022a7ac77f
MANA_SUPABASE_SECRET_KEY=your-service-key
@ -504,7 +504,7 @@ EXPO_PUBLIC_STORYTELLER_BACKEND_URL=http://localhost:3002
## Key Takeaways
### What Mana Core Provides
### What Mana Provides
1. **Authentication System**
- ✅ Email/password sign-in/sign-up

View file

@ -1,4 +1,4 @@
# Mana Core Integration Checklist
# Mana Integration Checklist
Use this checklist when integrating `@mana-core/nestjs-integration` into a new NestJS project.
@ -7,7 +7,7 @@ Use this checklist when integrating `@mana-core/nestjs-integration` into a new N
- [ ] NestJS v10+ application set up
- [ ] `@nestjs/config` installed
- [ ] Node.js v18+ and npm/yarn
- [ ] Mana Core credentials obtained:
- [ ] Mana credentials obtained:
- [ ] `MANA_SERVICE_URL`
- [ ] `APP_ID`
- [ ] `MANA_SUPABASE_SECRET_KEY` (service key)
@ -329,7 +329,7 @@ Use this checklist when integrating `@mana-core/nestjs-integration` into a new N
}
```
- [ ] Create integration tests with real Mana Core module
- [ ] Create integration tests with real Mana module
- [ ] Test credit validation flow
@ -412,7 +412,7 @@ Use this checklist when integrating `@mana-core/nestjs-integration` into a new N
## Documentation
- [ ] Update README with Mana Core setup instructions
- [ ] Update README with Mana setup instructions
- [ ] Document custom operation types and credit costs
@ -443,7 +443,7 @@ If something doesn't work, check:
## Support Resources
- **Full Integration Guide**: See `MANA_CORE_INTEGRATION_GUIDE.md`
- **Mana Core Docs**: https://docs.mana-core.com
- **Mana Docs**: https://docs.mana-core.com
- **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **Example Code**: Check Storyteller project for working implementation
@ -451,7 +451,7 @@ If something doesn't work, check:
## Integration Complete! 🎉
Once all items are checked, your application is fully integrated with Mana Core.
Once all items are checked, your application is fully integrated with Mana.
**Estimated Time**: 2-4 hours for basic integration, 1-2 days for complete implementation with testing.

View file

@ -1,4 +1,4 @@
# Mana Core NestJS Integration Guide
# Mana NestJS Integration Guide
This document provides a comprehensive guide on how the `@mana-core/nestjs-integration` package was integrated into the Storyteller project. Use this guide to integrate the same authentication and credit system into your own NestJS application.
@ -18,7 +18,7 @@ This document provides a comprehensive guide on how the `@mana-core/nestjs-integ
## Overview
The Mana Core NestJS integration package provides:
The Mana NestJS integration package provides:
- **Complete Authentication System**: Email/password, Google OAuth, Apple Sign-in
- **JWT Token Management**: Automatic validation, refresh, and storage
- **Credit Management**: Pre-flight validation and consumption with app-level tracking
@ -33,7 +33,7 @@ Frontend (React Native/Web)
↓ HTTP Requests with JWT
Backend (NestJS)
↓ Token Validation & Credit Checks
Mana Core Service
Mana Service
↓ Authentication & Credit Management
```
@ -41,11 +41,11 @@ Mana Core Service
## Prerequisites
Before integrating Mana Core, ensure you have:
Before integrating Mana, ensure you have:
1. **Mana Core Credentials**:
- `MANA_SERVICE_URL`: URL of your Mana Core instance
- `APP_ID`: Your application ID from Mana Core
1. **Mana Credentials**:
- `MANA_SERVICE_URL`: URL of your Mana instance
- `APP_ID`: Your application ID from Mana
- `MANA_SUPABASE_SECRET_KEY`: Service key for backend operations (optional but recommended)
2. **NestJS Application**:
@ -106,8 +106,8 @@ Create or update your `.env` file in the backend directory:
NODE_ENV=development
PORT=3002
# Mana Core Configuration
MANA_SERVICE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
# Mana Configuration
MANA_SERVICE_URL=https://mana-middleware-111768794939.europe-west3.run.app
APP_ID=your-app-id-from-mana-core
MANA_SUPABASE_SECRET_KEY=your-service-role-key
@ -116,8 +116,8 @@ SIGNUP_REDIRECT_URL=https://yourapp.com/welcome
```
**Important Notes**:
- `MANA_SERVICE_URL`: Your Mana Core instance URL
- `APP_ID`: Obtained from Mana Core admin panel
- `MANA_SERVICE_URL`: Your Mana instance URL
- `APP_ID`: Obtained from Mana admin panel
- `MANA_SUPABASE_SECRET_KEY`: Required for credit operations and service-level auth
- `SIGNUP_REDIRECT_URL`: Optional redirect after successful signup
@ -138,12 +138,12 @@ import { ManaModule } from '@mana-core/nestjs-integration';
validationSchema: validationSchema, // Optional: Joi validation
}),
// Mana Core Module - async configuration
// Mana Module - async configuration
ManaModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
// Required: Mana service URL
manaServiceUrl: 'https://mana-core-middleware-111768794939.europe-west3.run.app',
manaServiceUrl: 'https://mana-middleware-111768794939.europe-west3.run.app',
// Required: Your app ID
appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f',
@ -172,7 +172,7 @@ export class AppModule {}
```
**Configuration Options**:
- `manaServiceUrl` (required): URL of your Mana Core service
- `manaServiceUrl` (required): URL of your Mana service
- `appId` (required): Your application ID
- `serviceKey` (recommended): Service role key for backend operations
- `signupRedirectUrl` (optional): URL to redirect users after signup
@ -596,7 +596,7 @@ if (response.ok) {
## Credit Management
The Mana Core package includes a complete credit consumption system for tracking and billing user operations.
The Mana package includes a complete credit consumption system for tracking and billing user operations.
### Step 1: Inject CreditClientService
@ -847,7 +847,7 @@ try {
### Unit Testing
Mock the Mana Core services in your tests:
Mock the Mana services in your tests:
```typescript
import { Test, TestingModule } from '@nestjs/testing';
@ -895,7 +895,7 @@ describe('CharacterController', () => {
### Integration Testing
Test with the Mana Core module:
Test with the Mana module:
```typescript
import { ManaModule } from '@mana-core/nestjs-integration';
@ -1042,7 +1042,7 @@ ManaModule.forRootAsync({
### Support Resources
- **Mana Core Documentation**: https://docs.mana-core.com
- **Mana Documentation**: https://docs.mana-core.com
- **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **Storyteller Example**: Check this repository for working examples
@ -1093,7 +1093,7 @@ After following this guide, your application now has:
| File | Purpose |
|------|---------|
| `backend/src/app.module.ts` | Mana Core module configuration |
| `backend/src/app.module.ts` | Mana module configuration |
| `backend/src/character/character.controller.ts` | Example of AuthGuard and CreditClientService usage |
| `backend/src/story/story.controller.ts` | Example of credit validation and consumption |
| `backend/src/decorators/user.decorator.ts` | Custom @UserToken() decorator |
@ -1107,7 +1107,7 @@ After following this guide, your application now has:
If you have questions or run into issues:
1. Check the [Mana Core Documentation](https://docs.mana-core.com)
1. Check the [Mana Documentation](https://docs.mana-core.com)
2. Review the Storyteller codebase for working examples
3. Open an issue on the [GitHub repository](https://github.com/Memo-2023/mana-core-nestjs-package)

View file

@ -1,4 +1,4 @@
# Mana Core Integration Documentation
# Mana Integration Documentation
Complete documentation for integrating the `@mana-core/nestjs-integration` package into your NestJS application, based on the Storyteller project implementation.
@ -19,7 +19,7 @@ Start here for a high-level understanding and quick reference.
- Testing strategies
- Troubleshooting common issues
**Use this when**: You're implementing Mana Core for the first time or need detailed explanations.
**Use this when**: You're implementing Mana for the first time or need detailed explanations.
### 3. **[Integration Checklist](./MANA_CORE_INTEGRATION_CHECKLIST.md)** - Step-by-Step Checklist
**Actionable checklist** with checkboxes covering:
@ -47,9 +47,9 @@ Start here for a high-level understanding and quick reference.
## 🚀 Quick Start
### What is Mana Core?
### What is Mana?
Mana Core is a centralized authentication and credit management system that provides:
Mana is a centralized authentication and credit management system that provides:
- **Authentication**: Email/password, Google OAuth, Apple Sign-in
- **JWT Token Management**: Automatic validation, refresh, and multi-device support
- **Credit System**: Pre-flight validation, consumption tracking, and billing
@ -88,7 +88,7 @@ npm install git+https://github.com/Memo-2023/mana-core-nestjs-package.git
**Backend `.env`**:
```env
MANA_SERVICE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
MANA_SERVICE_URL=https://mana-middleware-111768794939.europe-west3.run.app
APP_ID=your-app-id
MANA_SUPABASE_SECRET_KEY=your-service-key
NODE_ENV=development
@ -111,7 +111,7 @@ import { ManaModule } from '@mana-core/nestjs-integration';
ManaModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
manaServiceUrl: 'https://mana-core-middleware-111768794939.europe-west3.run.app',
manaServiceUrl: 'https://mana-middleware-111768794939.europe-west3.run.app',
appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f',
serviceKey: configService.get('MANA_SUPABASE_SECRET_KEY'),
debug: configService.get('NODE_ENV') === 'development',
@ -324,9 +324,9 @@ Mobile App (React Native)
Backend (NestJS)
│ 2. Forward to Mana Core
│ 2. Forward to Mana
Mana Core Service
Mana Service
│ 3. Validate & Generate Tokens
@ -358,7 +358,7 @@ Mobile App
### Sign In
**Backend** (Auto-provided by Mana Core):
**Backend** (Auto-provided by Mana):
```
POST /auth/signin
{
@ -516,7 +516,7 @@ MANA_CORE_README.md ← You are here (Quick start)
| File | Purpose |
|------|---------|
| `backend/src/app.module.ts` | Mana Core module configuration |
| `backend/src/app.module.ts` | Mana module configuration |
| `backend/src/character/character.controller.ts` | AuthGuard + Credit usage example |
| `backend/src/story/story.controller.ts` | Credit validation + consumption |
| `backend/src/decorators/user.decorator.ts` | Custom @UserToken() for RLS |
@ -533,8 +533,8 @@ MANA_CORE_README.md ← You are here (Quick start)
## 🔗 Resources
- **Mana Core Package**: https://github.com/Memo-2023/mana-core-nestjs-package
- **Mana Core Docs**: https://docs.mana-core.com
- **Mana Package**: https://github.com/Memo-2023/mana-core-nestjs-package
- **Mana Docs**: https://docs.mana-core.com
- **NestJS Docs**: https://docs.nestjs.com
- **Storyteller Source**: This repository
@ -559,7 +559,7 @@ MANA_CORE_README.md ← You are here (Quick start)
1. **Documentation**: Check all four documentation files
2. **Code Examples**: Study Storyteller implementation
3. **Mana Core Docs**: https://docs.mana-core.com
3. **Mana Docs**: https://docs.mana-core.com
4. **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
### Contributing
@ -573,7 +573,7 @@ If you find issues or improvements in this documentation:
## ✨ Summary
This documentation provides everything you need to integrate Mana Core into your NestJS application:
This documentation provides everything you need to integrate Mana into your NestJS application:
- **Complete integration guide** with step-by-step instructions
- **Actionable checklist** to track progress

View file

@ -1,10 +1,10 @@
# Cards
A deck management system with Mana Core authentication and credit system integration.
A deck management system with Mana authentication and credit system integration.
## Features
- 🔐 **Mana Core Authentication** - Complete auth system with JWT tokens, device tracking, and automatic token refresh
- 🔐 **Mana Authentication** - Complete auth system with JWT tokens, device tracking, and automatic token refresh
- ⚡ **Credit System** - Mana-based billing for operations (10 mana to create a deck, 5 for AI features, etc.)
- 📱 **React Native/Expo** - Cross-platform mobile app (iOS, Android, Web)
- 🚀 **NestJS Backend** - Type-safe API with AuthGuard protection
@ -19,7 +19,7 @@ A deck management system with Mana Core authentication and credit system integra
- npm or yarn
- Expo CLI (`npm install -g expo-cli`)
- Supabase account
- Mana Core credentials (APP_ID, SERVICE_KEY)
- Mana credentials (APP_ID, SERVICE_KEY)
### Backend Setup
@ -40,8 +40,8 @@ A deck management system with Mana Core authentication and credit system integra
Edit `.env` and add your credentials:
```env
# Mana Core
MANA_SERVICE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
# Mana
MANA_SERVICE_URL=https://mana-middleware-111768794939.europe-west3.run.app
APP_ID=your-app-id-from-mana-core
SERVICE_KEY=your-service-key-from-mana-core # Required for credits
@ -123,7 +123,7 @@ A deck management system with Mana Core authentication and credit system integra
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Mana Core │ │ Supabase │
│ Mana │ │ Supabase │
│ - Auth │ │ - Database │
│ - Credits │ │ - Storage │
│ - Transactions │ │ - Real-time │
@ -181,7 +181,7 @@ function MyScreen() {
## API Endpoints
### Authentication (via Mana Core)
### Authentication (via Mana)
- `POST /v1/auth/signin` - Sign in
- `POST /v1/auth/signup` - Sign up
@ -220,7 +220,7 @@ cards/
│ │ │ └── health.controller.ts # Health checks
│ │ ├── services/
│ │ │ └── supabase.service.ts # Supabase integration
│ │ ├── app.module.ts # Main module (Mana Core config)
│ │ ├── app.module.ts # Main module (Mana config)
│ │ └── main.ts # Entry point
│ ├── .env # Environment variables
│ └── package.json
@ -315,9 +315,9 @@ npm run build:prod # Production build
| Variable | Description | Example |
|----------|-------------|---------|
| `MANA_SERVICE_URL` | Mana Core service URL | `https://mana-core-middleware-*.run.app` |
| `APP_ID` | Your app ID from Mana Core | `cea4bfc6-a4de-4e17-91e2-54275940156e` |
| `SERVICE_KEY` | Service key for credit operations | Get from Mana Core |
| `MANA_SERVICE_URL` | Mana service URL | `https://mana-middleware-*.run.app` |
| `APP_ID` | Your app ID from Mana | `cea4bfc6-a4de-4e17-91e2-54275940156e` |
| `SERVICE_KEY` | Service key for credit operations | Get from Mana |
| `SUPABASE_URL` | Supabase project URL | `https://abc.supabase.co` |
| `SUPABASE_ANON_KEY` | Supabase anonymous key | Your anon key |
| `PORT` | Backend port | `8080` |
@ -393,14 +393,14 @@ import { CreditClientService } from '@mana-core/nestjs-integration/services';
### Backend won't start
- Check all environment variables are set
- Verify Mana Core credentials are correct
- Verify Mana credentials are correct
- Check if port 8080 is available
### Credits not working
- Ensure `SERVICE_KEY` is set in backend `.env`
- Check backend logs for credit validation errors
- Verify user has credits in Mana Core dashboard
- Verify user has credits in Mana dashboard
### Frontend can't connect to backend
@ -417,16 +417,16 @@ import { CreditClientService } from '@mana-core/nestjs-integration/services';
## Documentation
- **[Credit System](./CREDIT_SYSTEM.md)** - Complete credit system documentation
- **[Mana Core Integration Guide](./MANA_CORE_INTEGRATION_GUIDE.md)** - Step-by-step integration
- **[Mana Integration Guide](./MANA_CORE_INTEGRATION_GUIDE.md)** - Step-by-step integration
- **[Integration Checklist](./MANA_CORE_INTEGRATION_CHECKLIST.md)** - Checkboxes for tracking
- **[Architecture Guide](./MANA_CORE_ARCHITECTURE.md)** - System architecture and flows
- **[Mana Core README](./MANA_CORE_README.md)** - Quick reference
- **[Mana README](./MANA_CORE_README.md)** - Quick reference
- **[Example Implementation](./apps/mobile/examples/DeckCreationExample.tsx)** - Working code example
## Resources
- [Mana Core Documentation](https://docs.mana-core.com)
- [Mana Core NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package)
- [Mana Documentation](https://docs.mana-core.com)
- [Mana NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package)
- [Expo Documentation](https://docs.expo.dev)
- [NestJS Documentation](https://docs.nestjs.com)
- [Supabase Documentation](https://supabase.com/docs)
@ -438,5 +438,5 @@ Private project - All rights reserved
## Support
For issues related to:
- **Mana Core**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **Mana**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **This project**: Contact the development team

View file

@ -2,7 +2,7 @@
## What's Been Completed
Your Mana Core integration is now **100% complete** with a fully functional credit system! 🎉
Your Mana integration is now **100% complete** with a fully functional credit system! 🎉
### ✅ Backend (Complete)
- [x] ManaModule configured with environment variables
@ -35,14 +35,14 @@ Your Mana Core integration is now **100% complete** with a fully functional cred
### 1. Add Your Service Key (5 minutes) ⚠️ REQUIRED
The backend needs a service key from Mana Core to validate and consume credits.
The backend needs a service key from Mana to validate and consume credits.
**backend/.env**:
```env
SERVICE_KEY=your-actual-service-key-here
```
**Where to get it**: Contact Mana Core admin or check your Mana Core dashboard.
**Where to get it**: Contact Mana admin or check your Mana dashboard.
Without this key, credit operations will fail with authentication errors.
@ -267,7 +267,7 @@ Before deploying to production:
### Backend
- [ ] Set `NODE_ENV=production` in production environment
- [ ] Add real `SERVICE_KEY` from Mana Core
- [ ] Add real `SERVICE_KEY` from Mana
- [ ] Configure proper CORS for your frontend domain
- [ ] Set up proper logging/monitoring
- [ ] Add rate limiting
@ -323,7 +323,7 @@ Add `onPurchase` handler to modal in your screens
2. **Integration**: See [MANA_CORE_INTEGRATION_GUIDE.md](./MANA_CORE_INTEGRATION_GUIDE.md)
3. **Architecture**: See [MANA_CORE_ARCHITECTURE.md](./MANA_CORE_ARCHITECTURE.md)
4. **Example Code**: See [apps/mobile/examples/DeckCreationExample.tsx](./apps/mobile/examples/DeckCreationExample.tsx)
5. **Mana Core**: https://github.com/Memo-2023/mana-core-nestjs-package
5. **Mana**: https://github.com/Memo-2023/mana-core-nestjs-package
## Summary

View file

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
Cards is a React Native/Expo application using Expo Router for navigation, TypeScript for type safety, NativeWind (Tailwind CSS) for styling, and Mana Core Auth for authentication. The app uses Zustand for state management and connects to the NestJS backend (port 3009).
Cards is a React Native/Expo application using Expo Router for navigation, TypeScript for type safety, NativeWind (Tailwind CSS) for styling, and Mana Auth for authentication. The app uses Zustand for state management and connects to the NestJS backend (port 3009).
## Essential Commands
@ -69,7 +69,7 @@ Uses Expo Router v5 with file-based routing:
### Authentication
- Mana Core Auth via `@manacore/shared-auth` in `services/authService.ts`
- Mana Auth via `@mana/shared-auth` in `services/authService.ts`
- Zustand auth store in `store/authStore.ts`
- Tokens stored in Expo SecureStore (encrypted)
- Supports email/password, Google, and Apple sign-in

View file

@ -72,7 +72,7 @@ pnpm preview # Preview production build
- **Web**: SvelteKit 2.x, Svelte 5, Tailwind CSS 4
- **Landing**: Astro 5.16, Tailwind CSS
- **Server**: Hono + Bun, OpenRouter AI + mana-llm (local), Drizzle ORM, PostgreSQL
- **Auth**: Mana Core Auth (JWT)
- **Auth**: Mana Auth (JWT)
- **Types**: TypeScript 5.x
## Architecture
@ -103,7 +103,7 @@ MANA_LLM_URL=http://localhost:3025 # mana-llm service URL
LLM_TIMEOUT=120000 # Timeout in ms (default: 120s)
# Database (uses shared Docker PostgreSQL)
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/chat
# Auth
MANA_AUTH_URL=http://localhost:3001
@ -172,7 +172,7 @@ pnpm --filter @chat/server db:add-local-models
2. **Create `.env`** in `apps/chat/apps/server/`:
```env
OPENROUTER_API_KEY=sk-or-v1-xxx
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/chat
MANA_AUTH_URL=http://localhost:3001
PORT=3002
```
@ -190,6 +190,6 @@ pnpm --filter @chat/server db:add-local-models
## Important Notes
1. **Security**: API keys are stored in the server only - never in client apps
2. **Authentication**: Uses Mana Core Auth (JWT tokens)
2. **Authentication**: Uses Mana Auth (JWT tokens)
3. **Database**: PostgreSQL with Drizzle ORM (uses shared Docker container)
4. **Deployment**: Server runs on port 3002

View file

@ -1,4 +1,4 @@
# ✅ Mana Core Auth Integration - COMPLETE
# ✅ Mana Auth Integration - COMPLETE
**Date:** 2025-11-25
**Status:** 🎉 All code changes implemented
@ -8,25 +8,25 @@
## 🎯 Summary
The Chat project has been **fully migrated** from Supabase Auth to **Mana Core Auth**! All three apps (backend, web, mobile) now use the centralized authentication system with built-in credit management.
The Chat project has been **fully migrated** from Supabase Auth to **Mana Auth**! All three apps (backend, web, mobile) now use the centralized authentication system with built-in credit management.
---
## ✅ What Was Done
### 1. **Updated `@manacore/shared-auth` Package** ✅
### 1. **Updated `@mana/shared-auth` Package** ✅
**Location:** `/packages/shared-auth/src/core/authService.ts`
**Changes:**
- Updated API endpoints to match Mana Core Auth (`/api/v1/auth/*`)
- Updated API endpoints to match Mana Auth (`/api/v1/auth/*`)
- Fixed login response handling (`accessToken` instead of `appToken`)
- Fixed signup flow (register then login separately)
- Updated refresh token endpoint
- Updated credits balance endpoint
**Status:** Package is now 100% compatible with Mana Core Auth API
**Status:** Package is now 100% compatible with Mana Auth API
---
@ -43,7 +43,7 @@ The Chat project has been **fully migrated** from Supabase Auth to **Mana Core A
**Changes:**
- Created JWT Auth Guard that validates tokens with Mana Core Auth
- Created JWT Auth Guard that validates tokens with Mana Auth
- Created CurrentUser decorator to inject user data into controllers
- Updated all controllers to use JwtAuthGuard
- Removed userId from request body (now extracted from JWT)
@ -54,7 +54,7 @@ The Chat project has been **fully migrated** from Supabase Auth to **Mana Core A
- All endpoints now protected with JWT validation
- User context automatically injected via @CurrentUser decorator
- Token validation happens via Mana Core Auth API
- Token validation happens via Mana Auth API
- Proper error handling for invalid/expired tokens
---
@ -68,7 +68,7 @@ The Chat project has been **fully migrated** from Supabase Auth to **Mana Core A
**Changes:**
- Completely rewrote auth store to use `@manacore/shared-auth`
- Completely rewrote auth store to use `@mana/shared-auth`
- Removed Supabase auth dependencies
- Added `initializeWebAuth()` initialization
- Added `getCredits()` method for credit balance
@ -92,7 +92,7 @@ The Chat project has been **fully migrated** from Supabase Auth to **Mana Core A
**Changes:**
- Rewrote AuthProvider to use `@manacore/shared-auth`
- Rewrote AuthProvider to use `@mana/shared-auth`
- Created SecureStore adapter for token storage
- Created React Native device adapter
- Created React Native network adapter
@ -165,12 +165,12 @@ EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
## 🚀 How to Run
### 1. Start Mana Core Auth (Terminal 1)
### 1. Start Mana Auth (Terminal 1)
```bash
cd mana-core-auth
cd mana-auth
cp .env.example .env
# Edit .env and add JWT keys (see mana-core-auth/QUICKSTART.md)
# Edit .env and add JWT keys (see mana-auth/QUICKSTART.md)
pnpm start:dev
```
@ -221,7 +221,7 @@ pnpm dev
- [ ] Start backend on port 3002
- [ ] Try accessing `/api/chat/models` without token → Should return 401
- [ ] Login via Mana Core Auth
- [ ] Login via Mana Auth
- [ ] Access `/api/chat/models` with token → Should work
- [ ] Access `/api/conversations` with token → Should work
@ -271,10 +271,10 @@ const credits = await authService.getUserCredits();
## 🔄 What Changed for Users
| Aspect | Before (Supabase) | After (Mana Core) | Impact |
| Aspect | Before (Supabase) | After (Mana) | Impact |
| ----------------- | ----------------- | ------------------------ | ------------------------------ |
| **Registration** | Immediate session | Register → Login | Minimal (auto-login in mobile) |
| **Login** | Supabase JWT | Mana Core JWT | None (transparent) |
| **Login** | Supabase JWT | Mana JWT | None (transparent) |
| **Token Storage** | Supabase cookies | localStorage/SecureStore | None (same security) |
| **Sessions** | Supabase sessions | JWT + refresh tokens | Better (token rotation) |
| **Credits** | ❌ None | ✅ 150 initial + 5 daily | **NEW FEATURE!** |
@ -283,23 +283,23 @@ const credits = await authService.getUserCredits();
## 📊 Port Configuration
| Service | Port | URL |
| ------------------ | ---- | --------------------- |
| **Mana Core Auth** | 3001 | http://localhost:3001 |
| **Chat Backend** | 3002 | http://localhost:3002 |
| **Web App** | 5173 | http://localhost:5173 |
| **Mobile App** | 8081 | exp://localhost:8081 |
| Service | Port | URL |
| ---------------- | ---- | --------------------- |
| **Mana Auth** | 3001 | http://localhost:3001 |
| **Chat Backend** | 3002 | http://localhost:3002 |
| **Web App** | 5173 | http://localhost:5173 |
| **Mobile App** | 8081 | exp://localhost:8081 |
---
## 🐛 Potential Issues & Solutions
### Issue: "Connection refused" to Mana Core Auth
### Issue: "Connection refused" to Mana Auth
**Solution:** Make sure Mana Core Auth is running on port 3001
**Solution:** Make sure Mana Auth is running on port 3001
```bash
cd mana-core-auth && pnpm start:dev
cd mana-auth && pnpm start:dev
```
### Issue: "Invalid token" errors
@ -317,10 +317,10 @@ await SecureStore.deleteItemAsync('@auth/refreshToken');
### Issue: CORS errors from web app
**Solution:** Add web app URL to Mana Core Auth CORS config
**Solution:** Add web app URL to Mana Auth CORS config
```env
# In mana-core-auth/.env
# In mana-auth/.env
CORS_ORIGINS=http://localhost:5173,http://localhost:8081
```
@ -336,7 +336,7 @@ MANA_AUTH_URL=http://localhost:3001
## 📚 API Endpoint Reference
### Mana Core Auth (Port 3001)
### Mana Auth (Port 3001)
- POST `/api/v1/auth/register` - Register new user
- POST `/api/v1/auth/login` - Login with email/password
@ -388,15 +388,15 @@ MANA_AUTH_URL=http://localhost:3001
## 📖 Documentation
- **Integration Guide:** `/chat/MANA_AUTH_INTEGRATION.md`
- **Mana Core Auth README:** `/mana-core-auth/README.md`
- **Quick Start:** `/mana-core-auth/QUICKSTART.md`
- **Mana Auth README:** `/mana-auth/README.md`
- **Quick Start:** `/mana-auth/QUICKSTART.md`
- **Master Plan:** `/.hive-mind/MASTER_PLAN_CENTRAL_AUTH_SYSTEM.md`
---
## ✨ Benefits of Migration
1. **✅ Centralized Authentication** - Single auth system for all Mana Core apps
1. **✅ Centralized Authentication** - Single auth system for all Mana apps
2. **✅ Built-in Credits** - No need to build separate credit system
3. **✅ Better Security** - RS256 JWT, refresh token rotation, optimistic locking
4. **✅ Cost Savings** - Self-hosted, no per-user charges

View file

@ -1,14 +1,14 @@
# Mana Core Auth Integration Guide - Chat Project
# Mana Auth Integration Guide - Chat Project
This guide explains how to integrate the Chat project with the new **Mana Core Auth** system, replacing Supabase Auth.
This guide explains how to integrate the Chat project with the new **Mana Auth** system, replacing Supabase Auth.
## Overview
The Chat project currently uses **Supabase Auth** across all apps. We're migrating to **Mana Core Auth**, our centralized authentication system with built-in credit management.
The Chat project currently uses **Supabase Auth** across all apps. We're migrating to **Mana Auth**, our centralized authentication system with built-in credit management.
### Benefits
- ✅ **Unified Authentication** - Single auth system for all Mana Core apps
- ✅ **Unified Authentication** - Single auth system for all Mana apps
- ✅ **Built-in Credits** - Automatic credit balance management (150 signup bonus + 5 daily)
- ✅ **Better Security** - RS256 JWT, refresh token rotation, optimistic locking
- ✅ **Cost Savings** - Self-hosted, no per-user charges
@ -19,9 +19,9 @@ The Chat project currently uses **Supabase Auth** across all apps. We're migrati
```
Chat Apps (Web, Mobile, Landing)
@manacore/shared-auth (Client Library)
@mana/shared-auth (Client Library)
Mana Core Auth Service (NestJS)
Mana Auth Service (NestJS)
PostgreSQL (Users, Sessions, Credits)
```
@ -30,7 +30,7 @@ PostgreSQL (Users, Sessions, Credits)
### 1. Shared Auth Package Updated ✅
The `@manacore/shared-auth` package has been updated to work with Mana Core Auth endpoints:
The `@mana/shared-auth` package has been updated to work with Mana Auth endpoints:
**Updated endpoints:**
@ -56,7 +56,7 @@ The `@manacore/shared-auth` package has been updated to work with Mana Core Auth
# SUPABASE_URL=...
# SUPABASE_SERVICE_KEY=...
# Add Mana Core Auth URL
# Add Mana Auth URL
MANA_AUTH_URL=http://localhost:3001
```
@ -114,7 +114,7 @@ export class JwtAuthGuard implements CanActivate {
}
try {
// Get public key from Mana Core Auth
// Get public key from Mana Auth
const authUrl = this.configService.get<string>('MANA_AUTH_URL');
const response = await fetch(`${authUrl}/api/v1/auth/validate`, {
method: 'POST',
@ -177,11 +177,11 @@ import { JwtAuthGuard } from './common/guards/jwt-auth.guard';
Edit `chat/apps/web/src/lib/stores/auth.svelte.ts`:
```typescript
import { initializeWebAuth } from '@manacore/shared-auth';
import { initializeWebAuth } from '@mana/shared-auth';
const MANA_AUTH_URL = import.meta.env.PUBLIC_MANA_AUTH_URL || 'http://localhost:3001';
// Initialize Mana Core Auth
// Initialize Mana Auth
const { authService, tokenManager } = initializeWebAuth({
baseUrl: MANA_AUTH_URL,
});
@ -247,7 +247,7 @@ export const handle: Handle = async ({ event, resolve }) => {
if (token) {
try {
// Validate token with Mana Core Auth
// Validate token with Mana Auth
const authUrl = process.env.PUBLIC_MANA_AUTH_URL || 'http://localhost:3001';
const response = await fetch(`${authUrl}/api/v1/auth/validate`, {
method: 'POST',
@ -290,8 +290,8 @@ import {
setDeviceAdapter,
setNetworkAdapter,
type UserData,
} from '@manacore/shared-auth';
import { createSecureStoreAdapter } from '@manacore/shared-auth/native'; // You may need to create this
} from '@mana/shared-auth';
import { createSecureStoreAdapter } from '@mana/shared-auth/native'; // You may need to create this
const MANA_AUTH_URL = process.env.EXPO_PUBLIC_MANA_AUTH_URL || 'http://localhost:3001';
@ -415,11 +415,11 @@ pnpm remove @supabase/supabase-js
### Step 6: Test the Integration
#### 6.1 Start Mana Core Auth
#### 6.1 Start Mana Auth
```bash
# From monorepo root
cd mana-core-auth
cd mana-auth
pnpm start:dev
```
@ -465,9 +465,9 @@ pnpm dev
## API Compatibility
### Mana Core Auth vs Supabase
### Mana Auth vs Supabase
| Feature | Supabase Auth | Mana Core Auth | Status |
| Feature | Supabase Auth | Mana Auth | Status |
| ------------------ | ------------- | -------------- | -------- |
| Email/Password | ✅ | ✅ | Migrated |
| OAuth (Google) | ✅ | 🚧 | TODO |
@ -480,7 +480,7 @@ pnpm dev
## Credits System
Mana Core Auth includes a built-in credit system:
Mana Auth includes a built-in credit system:
```typescript
// Get credit balance
@ -501,12 +501,12 @@ console.log(credits);
## Troubleshooting
### "Connection refused" to Mana Core Auth
### "Connection refused" to Mana Auth
**Solution:** Make sure Mana Core Auth is running:
**Solution:** Make sure Mana Auth is running:
```bash
cd mana-core-auth
cd mana-auth
pnpm start:dev
```
@ -520,7 +520,7 @@ await authService.clearAuthStorage();
### CORS errors
**Solution:** Add Chat app URLs to Mana Core Auth `.env`:
**Solution:** Add Chat app URLs to Mana Auth `.env`:
```env
CORS_ORIGINS=http://localhost:3000,http://localhost:8081
@ -528,7 +528,7 @@ CORS_ORIGINS=http://localhost:3000,http://localhost:8081
## Next Steps
1. ✅ Update `@manacore/shared-auth` package
1. ✅ Update `@mana/shared-auth` package
2. ⏳ Integrate into Chat backend
3. ⏳ Update Chat web app
4. ⏳ Update Chat mobile app
@ -539,10 +539,10 @@ CORS_ORIGINS=http://localhost:3000,http://localhost:8081
## Resources
- **Mana Core Auth README:** `/mana-core-auth/README.md`
- **Mana Auth README:** `/mana-auth/README.md`
- **Shared Auth Package:** `/packages/shared-auth/`
- **API Documentation:** `/mana-core-auth/README.md#api-endpoints`
- **Quick Start:** `/mana-core-auth/QUICKSTART.md`
- **API Documentation:** `/mana-auth/README.md#api-endpoints`
- **Quick Start:** `/mana-auth/QUICKSTART.md`
---

View file

@ -1,6 +1,6 @@
# Testing Guide - Mana Core Auth Integration
# Testing Guide - Mana Auth Integration
This guide walks you through testing the Chat project with Mana Core Auth.
This guide walks you through testing the Chat project with Mana Auth.
---
@ -11,16 +11,16 @@ Before testing, make sure you have:
- ✅ Node.js 20+
- ✅ pnpm installed
- ✅ All dependencies installed (`pnpm install` from monorepo root)
- ✅ PostgreSQL running (or Docker for Mana Core Auth)
- ✅ PostgreSQL running (or Docker for Mana Auth)
---
## Step 1: Generate JWT Keys for Mana Core Auth
## Step 1: Generate JWT Keys for Mana Auth
Mana Core Auth requires RS256 JWT keys. Generate them first:
Mana Auth requires RS256 JWT keys. Generate them first:
```bash
cd mana-core-auth
cd mana-auth
chmod +x scripts/generate-keys.sh
./scripts/generate-keys.sh
```
@ -51,18 +51,18 @@ MIIBIjANBg...
## Step 2: Configure Environment Variables
### 2.1 Mana Core Auth
### 2.1 Mana Auth
```bash
cd mana-core-auth
cd mana-auth
cp .env.example .env
```
Edit `mana-core-auth/.env` and add:
Edit `mana-auth/.env` and add:
```env
# Database
DATABASE_URL=postgresql://manacore:password@localhost:5432/manacore
DATABASE_URL=postgresql://mana:password@localhost:5432/mana
# Paste the keys from Step 1
JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
@ -94,7 +94,7 @@ AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_API_VERSION=2024-12-01-preview
# Mana Core Auth (NEW)
# Mana Auth (NEW)
MANA_AUTH_URL=http://localhost:3001
# Supabase (for database, not auth)
@ -115,7 +115,7 @@ cp .env.example .env
Edit `chat/apps/web/.env`:
```env
# Mana Core Auth (NEW)
# Mana Auth (NEW)
PUBLIC_MANA_AUTH_URL=http://localhost:3001
# Backend API (NEW PORT)
@ -136,7 +136,7 @@ cp .env.example .env
Edit `chat/apps/mobile/.env`:
```env
# Mana Core Auth (NEW)
# Mana Auth (NEW)
EXPO_PUBLIC_MANA_AUTH_URL=http://localhost:3001
# Backend API (NEW PORT)
@ -151,10 +151,10 @@ EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
## Step 3: Start Services (4 Terminals)
### Terminal 1: Mana Core Auth
### Terminal 1: Mana Auth
```bash
cd mana-core-auth
cd mana-auth
# Start PostgreSQL (if using Docker)
docker-compose up postgres -d
@ -169,7 +169,7 @@ pnpm start:dev
**Expected output:**
```
🚀 Mana Core Auth running on: http://localhost:3001
🚀 Mana Auth running on: http://localhost:3001
📚 Environment: development
```
@ -432,7 +432,7 @@ curl http://localhost:3002/api/chat/models \
### 7.3 Test Token Refresh
The `@manacore/shared-auth` package automatically refreshes tokens. To test:
The `@mana/shared-auth` package automatically refreshes tokens. To test:
1. Wait 15+ minutes (or change `JWT_ACCESS_TOKEN_EXPIRY=1m` for testing)
2. Make an API call from web/mobile app
@ -505,12 +505,12 @@ curl http://localhost:3001/api/v1/credits/transactions \
### Issue 1: "Connection refused" to port 3001
**Problem:** Mana Core Auth not running
**Problem:** Mana Auth not running
**Solution:**
```bash
cd mana-core-auth
cd mana-auth
pnpm start:dev
```
@ -522,20 +522,20 @@ pnpm start:dev
1. Clear tokens: `localStorage.clear()` in browser
2. Login again
3. Verify JWT keys are identical in Mana Core Auth .env
3. Verify JWT keys are identical in Mana Auth .env
### Issue 3: CORS errors in browser
**Problem:** Web app URL not in CORS whitelist
**Solution:**
Edit `mana-core-auth/.env`:
Edit `mana-auth/.env`:
```env
CORS_ORIGINS=http://localhost:5173,http://localhost:8081
```
Restart Mana Core Auth
Restart Mana Auth
### Issue 4: "Database connection failed"
@ -545,7 +545,7 @@ Restart Mana Core Auth
```bash
# If using Docker
cd mana-core-auth
cd mana-auth
docker-compose up postgres -d
# Check it's running
@ -598,7 +598,7 @@ Save this as `test-auth.sh`:
```bash
#!/bin/bash
echo "🧪 Testing Mana Core Auth Integration"
echo "🧪 Testing Mana Auth Integration"
echo ""
# Test 1: Register user
@ -660,7 +660,7 @@ chmod +x test-auth.sh
Use this checklist to verify everything works:
### Mana Core Auth ✅
### Mana Auth ✅
- [ ] Service starts on port 3001
- [ ] Can register new user

View file

@ -20,11 +20,11 @@ apps/citycorners/
```
### Tech Stack
- **Data Layer:** Local-first via @manacore/local-store (Dexie.js/IndexedDB)
- **Data Layer:** Local-first via @mana/local-store (Dexie.js/IndexedDB)
- **Sync:** mana-sync (Go, WebSocket) for server synchronization
- **Web:** SvelteKit 2, Svelte 5 runes, Tailwind 4, OpenStreetMap embeds, svelte-i18n (DE/EN), PWA
- **Landing:** Astro 5, Tailwind 3, static site generation
- **Auth:** mana-core-auth (JWT, guest mode supported)
- **Auth:** mana-auth (JWT, guest mode supported)
## Development
@ -39,7 +39,7 @@ pnpm dev:citycorners:web
## Data Model (Local-First)
Three IndexedDB collections managed by `@manacore/local-store`:
Three IndexedDB collections managed by `@mana/local-store`:
### Cities
- **id** (string, PK)

View file

@ -120,7 +120,7 @@ pnpm build # Build for production
- `company`, `job_title`, `department` (VARCHAR)
- `website`, `birthday`, `notes`, `photo_url` (VARCHAR/TEXT/DATE)
- `is_favorite`, `is_archived` (BOOLEAN)
- `organization_id`, `team_id` (UUID) - Manacore integration
- `organization_id`, `team_id` (UUID) - Mana integration
- `visibility` (VARCHAR) - private/team/organization/public
- `shared_with` (JSONB) - Array of user IDs
- `created_at`, `updated_at` (TIMESTAMP)
@ -177,7 +177,7 @@ pnpm build # Build for production
```
NODE_ENV=development
PORT=3015
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/contacts
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/contacts
MANA_AUTH_URL=http://localhost:3001
CORS_ORIGINS=http://localhost:5173,http://localhost:5184,http://localhost:8081
S3_ENDPOINT=http://localhost:9000
@ -253,8 +253,8 @@ Implementation: `duplicate-detector.ts` — runs fully offline, no server calls.
## Important Notes
1. **Authentication**: Uses Mana Core Auth (JWT in Authorization header)
1. **Authentication**: Uses Mana Auth (JWT in Authorization header)
2. **Database**: PostgreSQL with Drizzle ORM
3. **Port**: Backend runs on port 3015, Web on port 5184 by default
4. **Storage**: Uses MinIO/S3 for contact photos via @manacore/shared-storage
5. **Manacore Integration**: Contacts can be linked to Organizations and Teams
4. **Storage**: Uses MinIO/S3 for contact photos via @mana/shared-storage
5. **Mana Integration**: Contacts can be linked to Organizations and Teams

View file

@ -102,7 +102,7 @@ const links = {
&copy; {currentYear} ManaContacts. Alle Rechte vorbehalten.
</p>
<p class="text-sm text-gray-500">
Ein <a href="https://mana.how" class="text-primary-400 hover:underline">Manacore</a> Produkt
Ein <a href="https://mana.how" class="text-primary-400 hover:underline">Mana</a> Produkt
</p>
</div>
</div>

View file

@ -2,7 +2,7 @@
"name": "contacts",
"version": "1.0.0",
"private": true,
"description": "Contacts App - Contact Management with Manacore Integration",
"description": "Contacts App - Contact Management with Mana Integration",
"scripts": {
"dev": "pnpm run --filter=@contacts/* --parallel dev",
"dev:server": "pnpm --filter @contacts/server dev",

View file

@ -64,7 +64,7 @@ pnpm setup:db:context # Create DB + push schema
| **Backend** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Mobile** | React Native 0.76 + Expo SDK 52, NativeWind |
| **Auth** | Mana Core Auth (JWT) |
| **Auth** | Mana Auth (JWT) |
| **AI** | Azure OpenAI (GPT-4.1), Google Gemini (Pro, Flash) |
| **i18n** | svelte-i18n (DE, EN) |
@ -187,7 +187,7 @@ pnpm setup:db:context # Create DB + push schema
```env
NODE_ENV=development
PORT=3020
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/context
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/context
MANA_AUTH_URL=http://localhost:3001
AZURE_OPENAI_API_KEY=your-key
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
@ -202,7 +202,7 @@ PUBLIC_MANA_AUTH_URL=http://localhost:3001
## Important Patterns
1. **API Client pattern** - All web services use `@manacore/shared-api-client` (Go-style `{ data, error }`)
1. **API Client pattern** - All web services use `@mana/shared-api-client` (Go-style `{ data, error }`)
2. **Svelte 5 runes** - `$state`, `$derived`, `$effect` throughout
3. **Server-side AI keys** - API keys only on backend, never in frontend
4. **Auto word/token count** - Backend calculates on create/update

View file

@ -7,9 +7,9 @@ export default defineConfig({
site: 'https://docs.mana.how',
integrations: [
starlight({
title: 'Manacore Docs',
title: 'Mana Docs',
description:
'Documentation for the Manacore ecosystem - a multi-app platform with shared infrastructure.',
'Documentation for the Mana ecosystem - a multi-app platform with shared infrastructure.',
logo: {
light: './src/assets/logo-light.svg',
dark: './src/assets/logo-dark.svg',

View file

@ -1,11 +1,11 @@
---
title: API Reference
description: API documentation for Manacore services.
description: API documentation for Mana services.
---
# API Reference
This section contains API documentation for all Manacore backend services.
This section contains API documentation for all Mana backend services.
## Authentication

View file

@ -7,7 +7,7 @@ import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components';
# Authentication
All Manacore applications use **Mana Core Auth** as the central authentication service, providing EdDSA JWT-based authentication.
All Mana applications use **Mana Core Auth** as the central authentication service, providing EdDSA JWT-based authentication.
## Overview
@ -36,8 +36,8 @@ Mana Core Auth uses **EdDSA (Ed25519)** for JWT signing:
"role": "user",
"sid": "session-uuid",
"exp": 1764606251,
"iss": "manacore",
"aud": "manacore"
"iss": "mana",
"aud": "mana"
}
```
@ -48,18 +48,18 @@ Mana Core Auth uses **EdDSA (Ed25519)** for JWT signing:
| `role` | User role (`user`, `admin`) |
| `sid` | Session ID for invalidation |
| `exp` | Expiration timestamp |
| `iss` | Issuer (`manacore`) |
| `aud` | Audience (`manacore`) |
| `iss` | Issuer (`mana`) |
| `aud` | Audience (`mana`) |
## Backend Integration
### Option 1: Simple Auth Only
Use `@manacore/shared-nestjs-auth` for JWT validation:
Use `@mana/shared-nestjs-auth` for JWT validation:
```typescript
// app.module.ts
import { JwtAuthModule } from '@manacore/shared-nestjs-auth';
import { JwtAuthModule } from '@mana/shared-nestjs-auth';
@Module({
imports: [
@ -73,7 +73,7 @@ export class AppModule {}
```typescript
// controller.ts
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@mana/shared-nestjs-auth';
@Controller('api')
@UseGuards(JwtAuthGuard)
@ -140,7 +140,7 @@ export class ApiController {
```typescript
// src/lib/auth.ts
import { createAuthService } from '@manacore/shared-auth';
import { createAuthService } from '@mana/shared-auth';
export const auth = createAuthService({
authUrl: import.meta.env.PUBLIC_MANA_AUTH_URL,
@ -157,7 +157,7 @@ if (data) {
```typescript
// src/services/auth.ts
import { createAuthService } from '@manacore/shared-auth';
import { createAuthService } from '@mana/shared-auth';
export const auth = createAuthService({
authUrl: process.env.EXPO_PUBLIC_MANA_AUTH_URL,
@ -277,7 +277,7 @@ Never enable auth bypass in production!
| Backend | Package | Port |
|---------|---------|------|
| Chat | `@mana-core/nestjs-integration` | 3002 |
| Picture | `@manacore/shared-nestjs-auth` | 3006 |
| Zitare | `@manacore/shared-nestjs-auth` | 3007 |
| Picture | `@mana/shared-nestjs-auth` | 3006 |
| Zitare | `@mana/shared-nestjs-auth` | 3007 |
| Cards | `@mana-core/nestjs-integration` | 3009 |
| Contacts | `@manacore/shared-nestjs-auth` | 3015 |
| Contacts | `@mana/shared-nestjs-auth` | 3015 |

View file

@ -1,13 +1,13 @@
---
title: Backend (NestJS)
description: NestJS backend architecture patterns in Manacore.
description: NestJS backend architecture patterns in Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Backend Architecture
All Manacore backends use **NestJS 10-11** with consistent patterns for structure, validation, and error handling.
All Mana backends use **NestJS 10-11** with consistent patterns for structure, validation, and error handling.
## Project Structure
@ -75,7 +75,7 @@ import {
HttpCode,
HttpStatus,
} from '@nestjs/common';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@mana/shared-nestjs-auth';
import { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto';
@ -109,7 +109,7 @@ Services contain business logic and database operations:
```typescript
import { Injectable, NotFoundException } from '@nestjs/common';
import { Inject } from '@nestjs/common';
import { DRIZZLE } from '@manacore/shared-drizzle';
import { DRIZZLE } from '@mana/shared-drizzle';
import { eq, and } from 'drizzle-orm';
import { users } from '../drizzle/schema';

View file

@ -1,13 +1,13 @@
---
title: Mobile (Expo)
description: Expo React Native mobile application patterns in Manacore.
description: Expo React Native mobile application patterns in Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Mobile Architecture
Manacore mobile apps use **Expo SDK 52+** with React Native, Expo Router, and NativeWind for styling.
Mana mobile apps use **Expo SDK 52+** with React Native, Expo Router, and NativeWind for styling.
## Project Structure

View file

@ -1,13 +1,13 @@
---
title: Architecture Overview
description: High-level architecture of the Manacore ecosystem.
description: High-level architecture of the Mana ecosystem.
---
import { Card, CardGrid } from '@astrojs/starlight/components';
# Architecture Overview
Manacore is a multi-app ecosystem with shared infrastructure, enabling rapid development of interconnected applications.
Mana is a multi-app ecosystem with shared infrastructure, enabling rapid development of interconnected applications.
## System Architecture

View file

@ -7,7 +7,7 @@ import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Search Service
**Mana Search** provides web search and content extraction capabilities for Manacore applications.
**Mana Search** provides web search and content extraction capabilities for Mana applications.
## Architecture

View file

@ -1,13 +1,13 @@
---
title: Storage
description: S3-compatible object storage for files and media in Manacore.
description: S3-compatible object storage for files and media in Mana.
---
import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Storage
Manacore uses S3-compatible object storage for file uploads, generated images, and other media.
Mana uses S3-compatible object storage for file uploads, generated images, and other media.
## Architecture
@ -50,7 +50,7 @@ import {
createPictureStorage,
generateUserFileKey,
getContentType,
} from '@manacore/shared-storage';
} from '@mana/shared-storage';
const storage = createPictureStorage();
@ -101,7 +101,7 @@ import {
createChatStorage,
createCardsStorage,
createContactsStorage,
} from '@manacore/shared-storage';
} from '@mana/shared-storage';
// Each creates a client configured for that bucket
const pictureStorage = createPictureStorage();
@ -111,7 +111,7 @@ const chatStorage = createChatStorage();
### Custom Storage Client
```typescript
import { createStorageClient } from '@manacore/shared-storage';
import { createStorageClient } from '@mana/shared-storage';
const customStorage = createStorageClient({
bucket: 'my-custom-bucket',

View file

@ -1,13 +1,13 @@
---
title: Web (SvelteKit)
description: SvelteKit web application patterns in Manacore.
description: SvelteKit web application patterns in Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Web Architecture
All Manacore web applications use **SvelteKit 2** with **Svelte 5** (runes mode) and Tailwind CSS.
All Mana web applications use **SvelteKit 2** with **Svelte 5** (runes mode) and Tailwind CSS.
## Project Structure

View file

@ -15,10 +15,10 @@ All landing pages and static sites are deployed to **Cloudflare Pages** using Di
|---------|---------|-------------------|-----|
| Chat | `@chat/landing` | `chat-landing` | chat.mana.how |
| Picture | `@picture/landing` | `picture-landing` | picture.mana.how |
| Manacore | `@manacore/landing` | `manacore-landing` | mana.how |
| Mana | `@mana/landing` | `mana-landing` | mana.how |
| Cards | `@cards/landing` | `cards-landing` | cards.mana.how |
| Zitare | `@zitare/landing` | `zitare-landing` | zitare.mana.how |
| Docs | `@manacore/docs` | `manacore-docs` | docs.mana.how |
| Docs | `@mana/docs` | `mana-docs` | docs.mana.how |
## Quick Deploy

View file

@ -1,6 +1,6 @@
---
title: Mac Mini Server
description: Production server setup and management for Manacore backends.
description: Production server setup and management for Mana backends.
---
import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components';
@ -37,7 +37,7 @@ Requires `cloudflared` installed: `brew install cloudflare/cloudflare/cloudflare
## Directory Structure
```
~/projects/manacore-monorepo/
~/projects/mana-monorepo/
├── docker-compose.macmini.yml # Production compose file
├── .env.production # Production environment
├── scripts/mac-mini/ # Server management scripts
@ -53,7 +53,7 @@ Requires `cloudflared` installed: `brew install cloudflare/cloudflare/cloudflare
```bash
ssh mana-server
cd ~/projects/manacore-monorepo
cd ~/projects/mana-monorepo
./scripts/mac-mini/status.sh
```
@ -71,7 +71,7 @@ chat-backend running (healthy)
```bash
ssh mana-server
cd ~/projects/manacore-monorepo
cd ~/projects/mana-monorepo
./scripts/mac-mini/deploy.sh
```
@ -117,12 +117,12 @@ services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: manacore
POSTGRES_USER: mana
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U manacore"]
test: ["CMD-SHELL", "pg_isready -U mana"]
interval: 10s
timeout: 5s
retries: 5
@ -143,7 +143,7 @@ services:
context: .
dockerfile: services/mana-core-auth/Dockerfile
environment:
- DATABASE_URL=postgresql://manacore:${POSTGRES_PASSWORD}@postgres:5432/manacore
- DATABASE_URL=postgresql://mana:${POSTGRES_PASSWORD}@postgres:5432/mana_platform
- REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379
depends_on:
postgres:
@ -161,7 +161,7 @@ services:
context: .
dockerfile: apps/chat/apps/backend/Dockerfile
environment:
- DATABASE_URL=postgresql://manacore:${POSTGRES_PASSWORD}@postgres:5432/chat
- DATABASE_URL=postgresql://mana:${POSTGRES_PASSWORD}@postgres:5432/chat
- MANA_AUTH_URL=http://mana-auth:3001
depends_on:
- mana-auth
@ -234,7 +234,7 @@ tail -f /var/log/cloudflared.log
```bash
# Manual backup
docker exec postgres pg_dump -U manacore manacore > backup_$(date +%Y%m%d).sql
docker exec postgres pg_dump -U mana mana_platform > backup_$(date +%Y%m%d).sql
# Automated daily backups (via cron)
0 2 * * * /home/till/scripts/backup-databases.sh
@ -247,7 +247,7 @@ docker exec postgres pg_dump -U manacore manacore > backup_$(date +%Y%m%d).sql
docker compose -f docker-compose.macmini.yml stop chat-backend
# Restore
docker exec -i postgres psql -U manacore manacore < backup_20240115.sql
docker exec -i postgres psql -U mana mana_platform < backup_20240115.sql
# Start services
docker compose -f docker-compose.macmini.yml start chat-backend
@ -309,7 +309,7 @@ docker image prune -a
docker compose -f docker-compose.macmini.yml ps postgres
# Test connection
docker exec -it postgres psql -U manacore -c "SELECT 1"
docker exec -it postgres psql -U mana -c "SELECT 1"
# Check logs
docker compose -f docker-compose.macmini.yml logs postgres

View file

@ -1,13 +1,13 @@
---
title: Deployment Overview
description: Deployment strategies and infrastructure for Manacore applications.
description: Deployment strategies and infrastructure for Mana applications.
---
import { Card, CardGrid, Aside } from '@astrojs/starlight/components';
# Deployment Overview
Manacore uses multiple deployment strategies depending on the application type.
Mana uses multiple deployment strategies depending on the application type.
## Deployment Targets
@ -92,7 +92,7 @@ pnpm deploy:docs
ssh mana-server
# Pull latest changes
cd ~/projects/manacore-monorepo
cd ~/projects/mana-monorepo
git pull
# Restart services
@ -135,7 +135,7 @@ npx wrangler pages deployment tail <deployment-id> --project-name=chat-landing
```bash
ssh mana-server
cd ~/projects/manacore-monorepo
cd ~/projects/mana-monorepo
# Revert to previous commit
git checkout HEAD~1

View file

@ -1,13 +1,13 @@
---
title: Self-Hosting
description: Host your own Manacore instance with Docker Compose.
description: Host your own Mana instance with Docker Compose.
---
import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Self-Hosting
Run your own Manacore instance using Docker Compose.
Run your own Mana instance using Docker Compose.
## Requirements
@ -23,8 +23,8 @@ Run your own Manacore instance using Docker Compose.
1. **Clone the repository**
```bash
git clone https://github.com/manacore/manacore-monorepo.git
cd manacore-monorepo
git clone https://github.com/mana/mana-monorepo.git
cd mana-monorepo
```
2. **Create environment file**
@ -37,7 +37,7 @@ Run your own Manacore instance using Docker Compose.
```env
# Database
POSTGRES_USER=manacore
POSTGRES_USER=mana
POSTGRES_PASSWORD=your-secure-password
# Redis
@ -113,9 +113,9 @@ services:
# Auth Service
mana-auth:
image: ghcr.io/manacore/mana-core-auth:latest
image: ghcr.io/mana/mana-core-auth:latest
environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/manacore
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/mana_platformcore
REDIS_HOST: redis
REDIS_PASSWORD: ${REDIS_PASSWORD}
JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY}
@ -129,7 +129,7 @@ services:
# Chat Backend
chat-backend:
image: ghcr.io/manacore/chat-backend:latest
image: ghcr.io/mana/chat-backend:latest
environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/chat
MANA_AUTH_URL: http://mana-auth:3001
@ -146,7 +146,7 @@ volumes:
## Generate JWT Keys
Manacore uses EdDSA (Ed25519) for JWT signing:
Mana uses EdDSA (Ed25519) for JWT signing:
```bash
# Generate private key
@ -220,18 +220,18 @@ certbot renew --dry-run
### Daily Database Backup
Create `/etc/cron.daily/manacore-backup`:
Create `/etc/cron.daily/mana-backup`:
```bash
#!/bin/bash
BACKUP_DIR=/var/backups/manacore
BACKUP_DIR=/var/backups/mana
DATE=$(date +%Y%m%d)
# Create backup directory
mkdir -p $BACKUP_DIR
# Backup all databases
docker exec postgres pg_dumpall -U manacore > $BACKUP_DIR/all_$DATE.sql
docker exec postgres pg_dumpall -U ${POSTGRES_USER}core > $BACKUP_DIR/all_$DATE.sql
# Compress
gzip $BACKUP_DIR/all_$DATE.sql
@ -247,7 +247,7 @@ find $BACKUP_DIR -name "*.gz" -mtime +7 -delete
docker compose -f docker-compose.production.yml stop
# Restore
gunzip -c /var/backups/manacore/all_20240115.sql.gz | docker exec -i postgres psql -U manacore
gunzip -c /var/backups/mana/all_20240115.sql.gz | docker exec -i postgres psql -U ${POSTGRES_USER}core
# Start services
docker compose -f docker-compose.production.yml start
@ -265,7 +265,7 @@ docker compose -f docker-compose.production.yml start
2. **Backup database** (always!)
```bash
docker exec postgres pg_dumpall -U manacore > backup_before_update.sql
docker exec postgres pg_dumpall -U ${POSTGRES_USER}core > backup_before_update.sql
```
3. **Restart services**
@ -301,7 +301,7 @@ docker compose -f docker-compose.production.yml logs mana-auth
docker compose -f docker-compose.production.yml ps postgres
# Check connection
docker exec -it postgres psql -U manacore -c "SELECT 1"
docker exec -it postgres psql -U ${POSTGRES_USER}core -c "SELECT 1"
```
### Out of Memory

View file

@ -1,13 +1,13 @@
---
title: Database Migrations
description: Managing database schemas with Drizzle ORM in the Manacore monorepo.
description: Managing database schemas with Drizzle ORM in the Mana monorepo.
---
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
# Database Migrations
Manacore uses **Drizzle ORM** for database management with PostgreSQL.
Mana uses **Drizzle ORM** for database management with PostgreSQL.
## Overview
@ -15,7 +15,7 @@ Each backend service has its own database and schema:
| Service | Database | Port |
|---------|----------|------|
| mana-core-auth | manacore | 3001 |
| mana-core-auth | mana_platform | 3001 |
| chat | chat | 3002 |
| zitare | zitare | 3007 |
| contacts | contacts | 3015 |
@ -188,7 +188,7 @@ export default defineConfig({
### NestJS Module
```typescript
import { DrizzleModule } from '@manacore/shared-drizzle';
import { DrizzleModule } from '@mana/shared-drizzle';
@Module({
imports: [
@ -208,7 +208,7 @@ export class AppModule {}
```typescript
import { Inject, Injectable } from '@nestjs/common';
import { DRIZZLE } from '@manacore/shared-drizzle';
import { DRIZZLE } from '@mana/shared-drizzle';
import { eq } from 'drizzle-orm';
import { users } from '../drizzle/schema';

View file

@ -1,13 +1,13 @@
---
title: Docker Setup
description: Working with Docker for local development and production in Manacore.
description: Working with Docker for local development and production in Mana.
---
import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components';
# Docker Setup
Manacore uses Docker for local development services and production deployment.
Mana uses Docker for local development services and production deployment.
## Overview

View file

@ -1,13 +1,13 @@
---
title: Environment Variables
description: Centralized environment variable management in the Manacore monorepo.
description: Centralized environment variable management in the Mana monorepo.
---
import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components';
# Environment Variables
Manacore uses a centralized environment variable system. All development variables are managed from a single file.
Mana uses a centralized environment variable system. All development variables are managed from a single file.
## Quick Start
@ -75,8 +75,8 @@ The generator reads `.env.development` and creates app-specific `.env` files wit
| `MANA_AUTH_DATABASE_URL` | PostgreSQL connection | - |
| `JWT_ACCESS_TOKEN_EXPIRY` | Access token TTL | `15m` |
| `JWT_REFRESH_TOKEN_EXPIRY` | Refresh token TTL | `7d` |
| `JWT_ISSUER` | JWT issuer claim | `manacore` |
| `JWT_AUDIENCE` | JWT audience claim | `manacore` |
| `JWT_ISSUER` | JWT issuer claim | `mana` |
| `JWT_AUDIENCE` | JWT audience claim | `mana` |
| `STRIPE_SECRET_KEY` | Stripe secret key | - |
| `CREDITS_SIGNUP_BONUS` | Credits on signup | `150` |
| `CREDITS_DAILY_FREE` | Daily free credits | `5` |

View file

@ -1,6 +1,6 @@
---
title: Local Development
description: Set up and run Manacore applications locally with automatic database setup.
description: Set up and run Mana applications locally with automatic database setup.
---
import { Tabs, TabItem, Steps, Aside } from '@astrojs/starlight/components';
@ -86,7 +86,7 @@ This is useful when setting up a fresh environment or after pulling new schema c
On first `pnpm docker:up`, the PostgreSQL container runs `docker/init-db/01-create-databases.sql` which creates all databases:
- manacore, chat, zitare, contacts, calendar, clock, todo, cards
- mana_platform, chat, zitare, contacts, calendar, clock, todo, cards
- storage, mail, moodlit, finance, inventory, techbase, voxel_lava, figgos
### Setup Script
@ -104,13 +104,13 @@ Some apps don't have backends or don't use Drizzle:
| App | Reason |
|-----|--------|
| manacore | No backend (uses other services) |
| mana | No backend (uses other services) |
| cards | Backend exists but no db:push |
For these, use the regular dev commands:
```bash
pnpm dev:manacore:web
pnpm dev:mana:web
pnpm dev:cards:app
```
@ -128,7 +128,7 @@ If you see `database "xxx" does not exist`:
</TabItem>
<TabItem label="Option 2: Manual">
```bash
PGPASSWORD=devpassword psql -h localhost -U manacore -d postgres -c "CREATE DATABASE chat;"
PGPASSWORD=devpassword psql -h localhost -U mana -d postgres -c "CREATE DATABASE chat;"
```
</TabItem>
</Tabs>
@ -196,12 +196,12 @@ If your backend uses Drizzle ORM:
1. **Add database to Docker init** (`docker/init-db/01-create-databases.sql`):
```sql
CREATE DATABASE IF NOT EXISTS newproject;
GRANT ALL PRIVILEGES ON DATABASE newproject TO manacore;
GRANT ALL PRIVILEGES ON DATABASE newproject TO mana;
```
2. **Add DATABASE_URL to `.env.development`**:
```env
NEWPROJECT_DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/newproject
NEWPROJECT_DATABASE_URL=postgresql://mana:devpassword@localhost:5432/newproject
```
3. **Update `scripts/generate-env.mjs`** to generate the backend `.env` file.

View file

@ -1,13 +1,13 @@
---
title: Testing
description: Testing patterns and practices in the Manacore monorepo.
description: Testing patterns and practices in the Mana monorepo.
---
import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Testing
Manacore uses Jest for backend testing and Vitest for frontend testing.
Mana uses Jest for backend testing and Vitest for frontend testing.
## Quick Start
@ -47,7 +47,7 @@ src/
```typescript
import { Test, TestingModule } from '@nestjs/testing';
import { UsersService } from './users.service';
import { DRIZZLE } from '@manacore/shared-drizzle';
import { DRIZZLE } from '@mana/shared-drizzle';
describe('UsersService', () => {
let service: UsersService;

View file

@ -1,17 +1,17 @@
---
title: Introduction
description: Welcome to the Manacore documentation - learn about our multi-app ecosystem platform.
description: Welcome to the Mana documentation - learn about our multi-app ecosystem platform.
---
import { Card, CardGrid } from '@astrojs/starlight/components';
# Welcome to Manacore
# Welcome to Mana
Manacore is a **multi-app ecosystem platform** built as a pnpm monorepo. It provides shared infrastructure, authentication, and common patterns for building modern web and mobile applications.
Mana is a **multi-app ecosystem platform** built as a pnpm monorepo. It provides shared infrastructure, authentication, and common patterns for building modern web and mobile applications.
## What is Manacore?
## What is Mana?
Manacore is designed to streamline the development of multiple interconnected applications:
Mana is designed to streamline the development of multiple interconnected applications:
- **Shared Authentication** via Mana Core Auth (EdDSA JWT)
- **Unified Database Patterns** with Drizzle ORM and PostgreSQL

View file

@ -1,13 +1,13 @@
---
title: Project Structure
description: Understand how the Manacore monorepo is organized.
description: Understand how the Mana monorepo is organized.
---
import { FileTree } from '@astrojs/starlight/components';
# Project Structure
Manacore uses a pnpm workspace monorepo with Turborepo for build orchestration.
Mana uses a pnpm workspace monorepo with Turborepo for build orchestration.
## Overview
@ -84,21 +84,21 @@ The `services/` directory contains standalone microservices:
Packages in `packages/` are shared across all applications:
### Authentication
- `@manacore/shared-auth` - Client-side auth utilities
- `@manacore/shared-nestjs-auth` - NestJS JWT guards
- `@mana/shared-auth` - Client-side auth utilities
- `@mana/shared-nestjs-auth` - NestJS JWT guards
- `@mana-core/nestjs-integration` - Full NestJS auth + credits module
### UI & Styling
- `@manacore/shared-ui` - React Native components
- `@manacore/shared-landing-ui` - Astro landing page components
- `@manacore/shared-theme` - Theme configuration
- `@manacore/shared-tailwind` - Tailwind presets
- `@mana/shared-ui` - React Native components
- `@mana/shared-landing-ui` - Astro landing page components
- `@mana/shared-theme` - Theme configuration
- `@mana/shared-tailwind` - Tailwind presets
### Data & Utilities
- `@manacore/shared-types` - Common TypeScript types
- `@manacore/shared-utils` - Utility functions
- `@manacore/shared-storage` - S3 storage utilities
- `@manacore/shared-i18n` - Internationalization
- `@mana/shared-types` - Common TypeScript types
- `@mana/shared-utils` - Utility functions
- `@mana/shared-storage` - S3 storage utilities
- `@mana/shared-i18n` - Internationalization
## Workspace Configuration
@ -125,7 +125,7 @@ Turborepo handles task orchestration with:
| Type | Pattern | Example |
|------|---------|---------|
| App package | `@{project}/{app}` | `@chat/server` |
| Shared package | `@manacore/shared-{name}` | `@manacore/shared-auth` |
| Shared package | `@mana/shared-{name}` | `@mana/shared-auth` |
| Service | `@mana-{name}/service` | `@mana-search/service` |
## Adding a New Project

View file

@ -1,13 +1,13 @@
---
title: Quick Start
description: Get up and running with Manacore in minutes.
description: Get up and running with Mana in minutes.
---
import { Steps, Tabs, TabItem, Code } from '@astrojs/starlight/components';
# Quick Start
Get the Manacore monorepo running locally in just a few steps.
Get the Mana monorepo running locally in just a few steps.
## Prerequisites
@ -24,8 +24,8 @@ Before you begin, ensure you have:
1. **Clone the repository**
```bash
git clone https://github.com/manacore/manacore-monorepo.git
cd manacore-monorepo
git clone https://github.com/mana/mana-monorepo.git
cd mana-monorepo
```
2. **Install dependencies**

View file

@ -1,6 +1,6 @@
---
title: Code Style
description: Coding standards and formatting conventions for Manacore.
description: Coding standards and formatting conventions for Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
@ -188,7 +188,7 @@ import { Injectable } from '@nestjs/common';
import { eq } from 'drizzle-orm';
// 3. Monorepo packages
import { JwtAuthGuard } from '@manacore/shared-nestjs-auth';
import { JwtAuthGuard } from '@mana/shared-nestjs-auth';
// 4. Relative imports - parent directories
import { AppModule } from '../app.module';

View file

@ -1,13 +1,13 @@
---
title: Database Patterns
description: Drizzle ORM patterns and database best practices in Manacore.
description: Drizzle ORM patterns and database best practices in Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Database Patterns
Manacore uses **Drizzle ORM** with PostgreSQL for type-safe database access.
Mana uses **Drizzle ORM** with PostgreSQL for type-safe database access.
## Schema Design

View file

@ -1,13 +1,13 @@
---
title: Design & UX
description: UI patterns, animations, and accessibility guidelines for Manacore.
description: UI patterns, animations, and accessibility guidelines for Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Design & UX
Consistent design patterns across all Manacore applications for a unified user experience.
Consistent design patterns across all Mana applications for a unified user experience.
## Design Principles

View file

@ -1,13 +1,13 @@
---
title: Error Handling
description: Go-style Result types and error handling patterns in Manacore.
description: Go-style Result types and error handling patterns in Mana.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Error Handling
Manacore uses **Go-style Result types** for explicit error handling, avoiding unexpected exceptions.
Mana uses **Go-style Result types** for explicit error handling, avoiding unexpected exceptions.
## Result Type Pattern

View file

@ -1,6 +1,6 @@
---
title: Manacore Documentation
description: Documentation for the Manacore ecosystem - a multi-app platform with shared infrastructure.
title: Mana Documentation
description: Documentation for the Mana ecosystem - a multi-app platform with shared infrastructure.
template: splash
hero:
tagline: Build modern applications with shared infrastructure
@ -12,7 +12,7 @@ hero:
icon: right-arrow
variant: primary
- text: View on GitHub
link: https://github.com/manacore/manacore-monorepo
link: https://github.com/mana/mana-monorepo
icon: external
---
@ -21,8 +21,8 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
## Quick Start
```bash
git clone https://github.com/manacore/manacore-monorepo.git
cd manacore-monorepo
git clone https://github.com/mana/mana-monorepo.git
cd mana-monorepo
pnpm install
pnpm docker:up
pnpm dev:chat:full

View file

@ -90,7 +90,7 @@ OLLAMA_URL=http://localhost:11434
OLLAMA_TIMEOUT=120000
# Database
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat
DATABASE_URL=postgresql://mana:devpassword@localhost:5432/chat
# Auth
MANA_AUTH_URL=http://localhost:3001

View file

@ -1,13 +1,13 @@
---
title: Projects
description: Overview of all projects in the Manacore ecosystem.
description: Overview of all projects in the Mana ecosystem.
---
import { Card, CardGrid, Badge } from '@astrojs/starlight/components';
# Projects
Manacore contains multiple interconnected applications, each serving a specific purpose.
Mana contains multiple interconnected applications, each serving a specific purpose.
## Active Projects

View file

@ -1,4 +1,4 @@
/* Manacore Docs - Custom Starlight Styles */
/* Mana Docs - Custom Starlight Styles */
/* Override Starlight CSS variables */
:root {

View file

@ -6,7 +6,7 @@ export default {
theme: {
extend: {
colors: {
// Manacore brand colors
// Mana brand colors
accent: {
50: '#f0f9ff',
100: '#e0f2fe',

View file

@ -1,4 +1,4 @@
# Cloudflare Pages configuration for Manacore Docs
# Cloudflare Pages configuration for Mana Docs
# Deployed via GitHub Actions (Direct Upload)
name = "mana-docs"

View file

@ -14,7 +14,7 @@ Inventar is a schema-less inventory management system built with SvelteKit. User
|-------|------------|
| Frontend | SvelteKit 2, Svelte 5 (runes), Tailwind CSS 4 |
| State | Svelte 5 runes ($state, $derived) with localStorage persistence |
| Icons | @manacore/shared-icons (Phosphor) |
| Icons | @mana/shared-icons (Phosphor) |
| PWA | @vite-pwa/sveltekit + Workbox |
| i18n | svelte-i18n (de, en) |

View file

@ -149,7 +149,7 @@ Both apps require Supabase credentials. Copy the `.env.example` files and config
```
PUBLIC_SUPABASE_URL=your_supabase_url
PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
MIDDLEWARE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
MIDDLEWARE_URL=https://mana-middleware-111768794939.europe-west3.run.app
```
**Mobile App** (`apps/mobile/.env`):

View file

@ -178,7 +178,7 @@ Both apps require Supabase configuration. Create `.env` files based on `.env.exa
```env
PUBLIC_SUPABASE_URL=your_supabase_project_url
PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
MIDDLEWARE_URL=https://mana-core-middleware-111768794939.europe-west3.run.app
MIDDLEWARE_URL=https://mana-middleware-111768794939.europe-west3.run.app
PUBLIC_APP_NAME=Mana Web
NODE_ENV=development
```

View file

@ -7,7 +7,7 @@ _Fokus auf das vernetzte Ökosystem und die Vision eines nachhaltigen Software-M
### 1. Hero Section
**Headline:** "Ein Ökosystem. Unendliche Möglichkeiten."
**Subheadline:** "Manacore vernetzt deine KI-Tools zu einem nachhaltigen digitalen Ökosystem. Zahle nur was du nutzt, sammle Credits für später."
**Subheadline:** "Mana vernetzt deine KI-Tools zu einem nachhaltigen digitalen Ökosystem. Zahle nur was du nutzt, sammle Credits für später."
**CTA Buttons:**
@ -57,7 +57,7 @@ _Fokus auf das vernetzte Ökosystem und die Vision eines nachhaltigen Software-M
- Dropdown: "Nutzungsintensität"
- Live-Berechnung zeigt:
- Klassische Lizenzen: X€/Monat
- Mit Manacore: Y€/Monat
- Mit Mana: Y€/Monat
- Deine Ersparnis: Z%
**Testimonial-Box:**
@ -131,7 +131,7 @@ _Fokus auf Innovation, Nachhaltigkeit und europäische Unabhängigkeit_
### 1. Hero Section
**Headline:** "Die Zukunft der Software ist nachhaltig"
**Subheadline:** "Manacore baut das erste regenerative KI-Ökosystem Europas. Sei dabei, wenn Software demokratisch wird."
**Subheadline:** "Mana baut das erste regenerative KI-Ökosystem Europas. Sei dabei, wenn Software demokratisch wird."
**Vision-Statements:**

View file

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 435 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 417 KiB

After

Width:  |  Height:  |  Size: 417 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 352 KiB

After

Width:  |  Height:  |  Size: 352 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 433 KiB

After

Width:  |  Height:  |  Size: 433 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 342 KiB

After

Width:  |  Height:  |  Size: 342 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 311 KiB

After

Width:  |  Height:  |  Size: 311 KiB

Before After
Before After

View file

@ -121,7 +121,7 @@ const debugInfo = debug ? {
) : (
<Image
placeholder="dashboard"
alt="Manacore Dashboard"
alt="Mana Dashboard"
width={600}
height={400}
rounded

View file

@ -234,7 +234,7 @@ function statusColor(status: string) {
<!-- Bottom bar -->
<div class="footer-bottom">
<span class="footer-copyright">&copy; {currentYear} Manacore Verein</span>
<span class="footer-copyright">&copy; {currentYear} Mana Verein</span>
<span class="footer-domain">mana.how</span>
</div>
</Container>

View file

@ -18,7 +18,7 @@ const { navLinks } = Astro.props;
<div
class="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900"
>
<span class="text-xl font-bold text-mana-blue"> Manacore </span>
<span class="text-xl font-bold text-mana-blue"> Mana</span>
<button
id="mobile-menu-close"
class="p-2 rounded-lg text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"

View file

@ -41,7 +41,7 @@ const classes = `${baseStyles} ${bgStyles} ${positionStyles}`;
<!-- Logo -->
<a href={getLocalizedRoute('/', lang)} class="flex items-center gap-2">
<img src="/icons/mana-icon.svg" alt="Mana Logo" class="w-8 h-8" />
<span class="text-2xl font-bold text-mana-blue"> Manacore </span>
<span class="text-2xl font-bold text-mana-blue"> Mana</span>
</a>
<!-- Desktop Navigation -->

View file

@ -75,9 +75,9 @@ const { class: className } = Astro.props;
</div>
</div>
<!-- Manacore -->
<!-- Mana -->
<div>
<Text size="sm" class="text-gray-600 dark:text-gray-400 mb-1"> Mit Manacore </Text>
<Text size="sm" class="text-gray-600 dark:text-gray-400 mb-1"> Mit Mana</Text>
<div class="flex items-baseline gap-2">
<span id="manaCost" class="text-3xl font-bold text-mana-blue">30€</span>
<span class="text-sm text-gray-500">/Monat</span>
@ -155,7 +155,7 @@ const { class: className } = Astro.props;
// Classic license cost
const classicCost = teamSize * classicPricePerUser;
// Manacore cost calculation
// Mana cost calculation
const plan = manaPlans[intensity];
const plansNeeded = Math.ceil(teamSize / plan.users);
const manaCost = plansNeeded * plan.price;

View file

@ -73,11 +73,11 @@ Dieses Dokument analysiert den aktuellen Zustand der Mana-Infrastruktur auf dem
#### Tier 0: Infrastruktur (3 Services)
| Service | Container | Port(s) | Volume | Bemerkung |
| ------------- | ----------------- | ---------- | ----------------- | ----------------------------- |
| PostgreSQL 16 | manacore-postgres | 5432 | manacore-postgres | Alle DBs in einer Instanz |
| Redis 7 | manacore-redis | 6379 | manacore-redis | Session-Cache + Pub/Sub |
| MinIO | manacore-minio | 9000, 9001 | manacore-minio | S3-kompatibler Object Storage |
| Service | Container | Port(s) | Volume | Bemerkung |
| ------------- | ------------- | ---------- | ------------- | ----------------------------- |
| PostgreSQL 16 | mana-postgres | 5432 | mana-postgres | Alle DBs in einer Instanz |
| Redis 7 | mana-redis | 6379 | mana-redis | Session-Cache + Pub/Sub |
| MinIO | mana-minio | 9000, 9001 | mana-minio | S3-kompatibler Object Storage |
#### Tier 1: Core Auth (1 Service)
@ -109,53 +109,53 @@ Dieses Dokument analysiert den aktuellen Zustand der Mana-Infrastruktur auf dem
#### Tier 4: Web-Frontends (11 Services)
| App | Container | Port | Backend-Port |
| ------------------ | -------------- | ---- | ------------ |
| Mana Dashboard | manacore-web | 5173 | - |
| Chat | chat-web | 3000 | 3002 |
| Presi | presi-web | 5178 | 3008 |
| Matrix | matrix-web | 5180 | 8008 |
| Contacts | contacts-web | 5184 | 3015 |
| Storage | storage-web | 5185 | 3019 |
| Calendar | calendar-web | 5186 | 3016 |
| Clock | clock-web | 5187 | 3017 |
| Todo | todo-web | 5188 | 3018 |
| NutriPhi | nutriphi-web | 5189 | 3023 |
| LLM Playground | llm-playground | 5190 | - |
| SkillTree | skilltree-web | 5195 | 3024 |
| App | Container | Port | Backend-Port |
| -------------- | -------------- | ---- | ------------ |
| Mana Dashboard | mana-web | 5173 | - |
| Chat | chat-web | 3000 | 3002 |
| Presi | presi-web | 5178 | 3008 |
| Matrix | matrix-web | 5180 | 8008 |
| Contacts | contacts-web | 5184 | 3015 |
| Storage | storage-web | 5185 | 3019 |
| Calendar | calendar-web | 5186 | 3016 |
| Clock | clock-web | 5187 | 3017 |
| Todo | todo-web | 5188 | 3018 |
| NutriPhi | nutriphi-web | 5189 | 3023 |
| LLM Playground | llm-playground | 5190 | - |
| SkillTree | skilltree-web | 5195 | 3024 |
#### Tier 5: Matrix Stack (14 Services)
| Service | Container | Port | Funktion |
| --------------- | ------------------------------- | ---------- | ----------------------- |
| Synapse | manacore-synapse | 8008, 9002 | Homeserver |
| Element Web | manacore-element | 8087 | Standard Client |
| Matrix Web | manacore-matrix-web | 5180 | Custom SvelteKit Client |
| Mana Bot | manacore-matrix-mana-bot | 3310 | Unified Gateway Bot |
| Ollama Bot | manacore-matrix-ollama-bot | 3311 | AI Chat |
| Stats Bot | manacore-matrix-stats-bot | 3312 | Analytics |
| Project Doc Bot | manacore-matrix-project-doc-bot | 3313 | Dokumentation |
| Todo Bot | manacore-matrix-todo-bot | 3314 | Task Management |
| Calendar Bot | manacore-matrix-calendar-bot | 3315 | Termine |
| NutriPhi Bot | manacore-matrix-nutriphi-bot | 3316 | Nutrition |
| Zitare Bot | manacore-matrix-zitare-bot | 3317 | Quotes |
| Clock Bot | manacore-matrix-clock-bot | 3318 | Time Tracking |
| TTS Bot | manacore-matrix-tts-bot | 3033 | Text-to-Speech |
| Service | Container | Port | Funktion |
| --------------- | --------------------------- | ---------- | ----------------------- |
| Synapse | mana-synapse | 8008, 9002 | Homeserver |
| Element Web | mana-element | 8087 | Standard Client |
| Matrix Web | mana-matrix-web | 5180 | Custom SvelteKit Client |
| Mana Bot | mana-matrix-mana-bot | 3310 | Unified Gateway Bot |
| Ollama Bot | mana-matrix-ollama-bot | 3311 | AI Chat |
| Stats Bot | mana-matrix-stats-bot | 3312 | Analytics |
| Project Doc Bot | mana-matrix-project-doc-bot | 3313 | Dokumentation |
| Todo Bot | mana-matrix-todo-bot | 3314 | Task Management |
| Calendar Bot | mana-matrix-calendar-bot | 3315 | Termine |
| NutriPhi Bot | mana-matrix-nutriphi-bot | 3316 | Nutrition |
| Zitare Bot | mana-matrix-zitare-bot | 3317 | Quotes |
| Clock Bot | mana-matrix-clock-bot | 3318 | Time Tracking |
| TTS Bot | mana-matrix-tts-bot | 3033 | Text-to-Speech |
#### Tier 6: Monitoring & Tools (8 Services)
| Service | Container | Port | Funktion |
| ------------------ | --------------------------- | ---- | ------------------- |
| VictoriaMetrics | manacore-victoriametrics | 8428 | Metriken-DB |
| Grafana | manacore-grafana | 3100 | Dashboards |
| Pushgateway | manacore-pushgateway | 9091 | Batch-Metriken |
| Node Exporter | manacore-node-exporter | 9100 | Host-Metriken |
| cAdvisor | manacore-cadvisor | 8080 | Container-Metriken |
| Postgres Exporter | manacore-postgres-exporter | 9187 | DB-Metriken |
| Redis Exporter | manacore-redis-exporter | 9121 | Cache-Metriken |
| Umami | manacore-umami | 3200 | Web Analytics |
| n8n | manacore-n8n | 5678 | Workflow Automation |
| Telegram Stats Bot | manacore-telegram-stats-bot | 3300 | Telegram Reports |
| Service | Container | Port | Funktion |
| ------------------ | ----------------------- | ---- | ------------------- |
| VictoriaMetrics | mana-victoriametrics | 8428 | Metriken-DB |
| Grafana | mana-grafana | 3100 | Dashboards |
| Pushgateway | mana-pushgateway | 9091 | Batch-Metriken |
| Node Exporter | mana-node-exporter | 9100 | Host-Metriken |
| cAdvisor | mana-cadvisor | 8080 | Container-Metriken |
| Postgres Exporter | mana-postgres-exporter | 9187 | DB-Metriken |
| Redis Exporter | mana-redis-exporter | 9121 | Cache-Metriken |
| Umami | mana-umami | 3200 | Web Analytics |
| n8n | mana-n8n | 5678 | Workflow Automation |
| Telegram Stats Bot | mana-telegram-stats-bot | 3300 | Telegram Reports |
#### Native macOS Services (3 Services)
@ -168,9 +168,9 @@ Dieses Dokument analysiert den aktuellen Zustand der Mana-Infrastruktur auf dem
#### Auto-Update (1 Service)
| Service | Container | Funktion |
| ---------- | ------------------- | ----------------------------- |
| Watchtower | manacore-watchtower | Auto-Update + Telegram Notify |
| Service | Container | Funktion |
| ---------- | --------------- | ----------------------------- |
| Watchtower | mana-watchtower | Auto-Update + Telegram Notify |
---
@ -231,14 +231,14 @@ AKTUELL (Chaotisch):
```
AKTUELL:
manacore-postgres ✓ Konsistent
manacore-redis ✓ Konsistent
mana-postgres ✓ Konsistent
mana-redis ✓ Konsistent
mana-core-auth ✗ Bindestrich-Variante
mana-api-gateway ✗ Bindestrich-Variante
chat-backend ✗ Kein Präfix
chat-web ✗ Kein Präfix
manacore-matrix-mana-bot ✓ Konsistent
manacore-synapse ✓ Konsistent
mana-matrix-mana-bot ✓ Konsistent
mana-synapse ✓ Konsistent
```
### 3. Nicht-optimale Dependencies
@ -322,7 +322,7 @@ NEU (Strukturiert):
│ └── 4090: matrix-web (Custom Client) │
│ │
│ 5000-5099: Web Frontends │
│ ├── 5000: manacore-web (Dashboard) │
│ ├── 5000: mana-web (Dashboard) │
│ ├── 5010: chat-web │
│ ├── 5011: todo-web │
│ ├── 5012: calendar-web │
@ -364,31 +364,31 @@ NEU (Strukturiert):
**Container-Namen:**
```
manacore-{category}-{service}
mana-{category}-{service}
Beispiele:
- manacore-infra-postgres
- manacore-infra-redis
- manacore-core-auth
- manacore-api-gateway
- manacore-app-chat-backend
- manacore-app-chat-web
- manacore-matrix-synapse
- manacore-matrix-bot-mana
- manacore-mon-grafana
- manacore-mon-victoria
- mana-infra-postgres
- mana-infra-redis
- mana-core-auth
- mana-api-gateway
- mana-app-chat-backend
- mana-app-chat-web
- mana-matrix-synapse
- mana-matrix-bot-mana
- mana-mon-grafana
- mana-mon-victoria
```
**Volume-Namen:**
```
manacore-{service}-data
mana-{service}-data
Beispiele:
- manacore-postgres-data
- manacore-redis-data
- manacore-matrix-bots-data (konsolidiert!)
- manacore-grafana-data
- mana-postgres-data
- mana-redis-data
- mana-matrix-bots-data (konsolidiert!)
- mana-grafana-data
```
### 3. Service-Konsolidierung
@ -501,12 +501,12 @@ Mit dem neuen Schema ist die Migration zu Kubernetes wesentlich einfacher:
```yaml
# Kubernetes Namespace-Struktur
namespaces:
- manacore-infra # postgres, redis, minio
- manacore-core # auth, gateway, search
- manacore-apps # chat, todo, calendar, etc.
- manacore-matrix # synapse, bots, element
- manacore-monitoring # grafana, victoria, exporters
- manacore-tools # n8n, telegram-bots
- mana-infra # postgres, redis, minio
- mana-core # auth, gateway, search
- mana-apps # chat, todo, calendar, etc.
- mana-matrix # synapse, bots, element
- mana-monitoring # grafana, victoria, exporters
- mana-tools # n8n, telegram-bots
```
### Kubernetes Service-Typen

View file

@ -484,7 +484,7 @@ Nach Analyse aller Optionen ist die Empfehlung:
```bash
# Auf dem Server
ssh mana-server
cd ~/projects/manacore-monorepo
cd ~/projects/mana-monorepo
git pull
./scripts/mac-mini/deploy.sh
```

View file

@ -1,5 +1,5 @@
---
title: 'Der Manacore Short'
title: 'Der Mana Short'
description: 'Ein Pay-as-you-use Modell für KI-gestützte Transkription und Analyse in Memoro'
order: 1
icon: 'mdi:information'
@ -7,11 +7,11 @@ publishedAt: 2024-01-01
updatedAt: 2024-01-15
---
# Manacore: Ein nachhaltiges KI-Ökosystem für Europa
# Mana: Ein nachhaltiges KI-Ökosystem für Europa
## Vision und Mission
Manacore steht für ein langfristig nachhaltiges Software-Ökosystem mit KI im Kern. Unser Ziel ist es, durch gutes Design und optimale Vernetzung jedem zu ermöglichen, Wissen, Erfahrungen und Ideen besser festzuhalten, zu sammeln, darzustellen und zu teilen.
Mana steht für ein langfristig nachhaltiges Software-Ökosystem mit KI im Kern. Unser Ziel ist es, durch gutes Design und optimale Vernetzung jedem zu ermöglichen, Wissen, Erfahrungen und Ideen besser festzuhalten, zu sammeln, darzustellen und zu teilen.
### Das Ökosystem
@ -81,13 +81,13 @@ Das Mana-System kombiniert die Vorteile von Abonnements mit der Fairness verbrau
**Unternehmen mit 50 Mitarbeitern:**
- **Manacore**: 1x Mana Quelle XXL = 99,99€/Monat
- **Mana**: 1x Mana Quelle XXL = 99,99€/Monat
- **Klassische Lizenzen**: 50 × 19,99€ = 999,50€/Monat
- **Ersparnis**: 90%
**Universitäres Forschungsprojekt (15 Forscher, 1 Jahr):**
- **Manacore**: 1x Mana Quelle L Jahresabo = 191,90€
- **Mana**: 1x Mana Quelle L Jahresabo = 191,90€
- **Klassische Lizenzen**: 15 × 9,99€ × 12 Monate = 1.798,20€
- **Ersparnis**: 89%
@ -122,7 +122,7 @@ Das Mana-System kombiniert die Vorteile von Abonnements mit der Fairness verbrau
## Partizipation und Community
Jeder kann am Manacore-Ökosystem teilhaben:
Jeder kann am Mana-Ökosystem teilhaben:
- **Als Nutzer** der verschiedenen Tools und Apps
- **Durch Analytics-Opt-in** für besseres Feedback und Optimierung
@ -146,4 +146,4 @@ Jeder kann am Manacore-Ökosystem teilhaben:
## Das Ziel
Manacore macht die digitale Welt und KI-Möglichkeiten für jeden zugänglich. Wir entwickeln Software zu etwas Fließendem und schaffen eine Plattform, auf der Innovation schnell und nachhaltig gedeihen kann mit einem Geschäftsmodell, bei dem Software allen gehört, die daran mitwirken und es mitgestalten.
Mana macht die digitale Welt und KI-Möglichkeiten für jeden zugänglich. Wir entwickeln Software zu etwas Fließendem und schaffen eine Plattform, auf der Innovation schnell und nachhaltig gedeihen kann -- mit einem Geschäftsmodell, bei dem Software allen gehört, die daran mitwirken und es mitgestalten.

View file

@ -15,7 +15,7 @@ Mana steht für ein langfristig nachhaltiges Software-Ökosystem mit KI im Kern.
### Das Mana-Ökosystem
Im Manacore-Netzwerk arbeiten verschiedene Applikationen zusammen:
Im Mana-Netzwerk arbeiten verschiedene Applikationen zusammen:
- Jede App unterstützt Menschen bei spezifischen Aufgaben
- Verbunden entfalten sie eine ganz neue Kraft
@ -63,7 +63,7 @@ Die Entwicklung von Mana fokussiert sich auf Europa:
- Aufbau eines neuen Software-Ökosystems für Europa
- Reduzierung der Abhängigkeit von US-amerikanischen Technologien
- Langfristiges Ziel: Komplette technologische Unabhängigkeit
- Open-Source-Pläne für den Manacore bei strategischer Sinnhaftigkeit
- Open-Source-Pläne bei strategischer Sinnhaftigkeit
### Einheitliche Vorteile für Nutzer

View file

@ -80,7 +80,7 @@ stats:
## Zusammenfassung
Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem letzten Audit wurde das Backend von NestJS auf **Hono/Bun** migriert — CRUD läuft client-seitig über `@manacore/local-store` + `mana-sync`. Der Server fokussiert sich auf RRULE-Expansion, Google Calendar Sync und ICS-Import. Neue Features: Multi-Event Splitting, Elevation System, Cmd+K Spotlight.
Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem letzten Audit wurde das Backend von NestJS auf **Hono/Bun** migriert — CRUD läuft client-seitig über `@mana/local-store` + `mana-sync`. Der Server fokussiert sich auf RRULE-Expansion, Google Calendar Sync und ICS-Import. Neue Features: Multi-Event Splitting, Elevation System, Cmd+K Spotlight.
## Backend (90/100)
@ -92,7 +92,7 @@ Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem let
- `/api/v1/events/expand` (POST) — RRULE Expansion mit DoS-Schutz
- `/api/v1/sync/google` (POST) — Google Calendar OAuth
- `/api/v1/import/ics` (POST) — ICS-Datei Parsing und Import
- `@manacore/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- `@mana/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- Zod-Validation für alle Eingaben
- GDPR-konform (Daten via mana-sync)
@ -123,7 +123,7 @@ Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem let
- Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT) — vollständig inkl. Settings, Toasts, Error Pages
- **Local-First** via @manacore/local-store (IndexedDB + mana-sync)
- **Local-First** via @mana/local-store (IndexedDB + mana-sync)
**Lücken:**
@ -178,7 +178,7 @@ Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem let
**Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware
- JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware
- CORS konfiguriert
- RRULE DoS-Schutz
@ -223,7 +223,7 @@ Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem let
| Multi-Event | Fehlte | Splitting + Duration Estimation |
| Elevation | Fehlte | Konsistentes UI-System |
| Todo-Integration | Vorhanden | Entfernt (Separation of Concerns) |
| Local-First | Geplant | @manacore/local-store aktiv |
| Local-First | Geplant | @mana/local-store aktiv |
| Score | 97 → | **93** (Backend-Tests verloren, Test-Reduktion) |
## Top-3 Empfehlungen

View file

@ -89,9 +89,9 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
- ~6 API-Endpoints (server-seitige Operationen):
- Health Check
- Avatar Upload (S3/MinIO via @manacore/shared-storage)
- Avatar Upload (S3/MinIO via @mana/shared-storage)
- vCard Import (Parsing + Validation)
- `@manacore/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- `@mana/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- S3 Storage Integration für Contact-Fotos
- CRUD delegiert an mana-sync (Local-First)
@ -107,7 +107,7 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
**Stärken:**
- 15 Routes, 39 Komponenten (27 Standard + 12 Skeleton), 14 Svelte 5 Stores
- **Spiral-Netzwerk-Visualisierung** (@manacore/spiral-db)
- **Spiral-Netzwerk-Visualisierung** (@mana/spiral-db)
- **Cmd+K Spotlight** für schnelle Navigation und Aktionen
- **NL Quick-Input** mit Client-seitiger Duplikaterkennung (Fuzzy Matching)
- Context Menus (Alphabet-Navigation, Grid-View)
@ -121,7 +121,7 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
- Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT)
- **Local-First** via @manacore/local-store (IndexedDB + mana-sync)
- **Local-First** via @mana/local-store (IndexedDB + mana-sync)
- SyncIndicator UI (visueller Sync-Status)
**Lücken:**
@ -175,7 +175,7 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
**Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware
- JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware
- CORS konfiguriert
- Security Headers (CSP, X-Frame-Options)
@ -216,8 +216,8 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
| E2E Tests | Keine | 3 Playwright Suites (auth, contacts, tags) |
| PWA | Nicht konfiguriert | Aktiv (@vite-pwa/sveltekit) |
| Landing Page | Fehlte | Astro Landing Page |
| Local-First | Nicht vorhanden | @manacore/local-store aktiv |
| Spiral-Viz | Nicht vorhanden | @manacore/spiral-db integriert |
| Local-First | Nicht vorhanden | @mana/local-store aktiv |
| Spiral-Viz | Nicht vorhanden | @mana/spiral-db integriert |
| Spotlight | Fehlte | Cmd+K Actions |
| NL Quick-Input | Fehlte | Mit Fuzzy Duplikaterkennung |
| SyncIndicator | Fehlte | Visueller Sync-Status |

View file

@ -4,7 +4,7 @@ description: 'Multi-App Ecosystem Dashboard mit 25 Web-Routes, 11 Dashboard-Widg
date: 2026-03-19
app: 'manacore'
author: 'Till Schneider'
tags: ['audit', 'manacore', 'production-readiness', 'platform']
tags: ['audit', 'mana', 'production-readiness', 'platform']
score: 88
scores:
backend: 55
@ -158,7 +158,7 @@ Mana ist das **Herzstück des Monorepos** - das Multi-App Ecosystem Dashboard mi
**Stärken:**
- Proper JWT Integration via @manacore/shared-auth
- Proper JWT Integration via @mana/shared-auth
- Token-Manager mit Auto-Refresh
- Cross-Domain SSO via shared Session Cookies (.mana.how)
- Route Guards in hooks.server.ts

View file

@ -131,7 +131,7 @@ Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library,
**Stärken:**
- JwtAuthGuard auf allen Endpoints (korrekter Import aus @manacore/shared-nestjs-auth)
- JwtAuthGuard auf allen Endpoints (korrekter Import aus @mana/shared-nestjs-auth)
- CurrentUser Decorator
- ParseUUIDPipe für Input Validation
- ThrottlerModule Rate Limiting (100 req/60s)

View file

@ -80,7 +80,7 @@ stats:
## Zusammenfassung
Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-Board, Kanban, Spiral-View, Reminders mit Background Worker, Auto-Save, Cmd+K Spotlight und Local-First Architektur. Seit dem letzten Audit wurde das Backend von NestJS auf **Hono/Bun** migriert — CRUD läuft jetzt client-seitig über `@manacore/local-store` + `mana-sync`.
Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-Board, Kanban, Spiral-View, Reminders mit Background Worker, Auto-Save, Cmd+K Spotlight und Local-First Architektur. Seit dem letzten Audit wurde das Backend von NestJS auf **Hono/Bun** migriert — CRUD läuft jetzt client-seitig über `@mana/local-store` + `mana-sync`.
## Backend (90/100)
@ -90,7 +90,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
- 3 fokussierte Route-Module: `rrule.ts`, `reminders.ts`, `admin.ts`
- 14 API-Endpoints (server-seitige Compute-Operationen)
- `@manacore/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- `@mana/shared-hono` Middleware (Auth, Health, Errors, Rate Limiting)
- RRULE Expansion mit DoS-Schutz (max 5000 Occurrences, 10-Jahres-Limit)
- Background Reminder Worker mit Push/Email-Notifications via mana-notify
- GDPR Admin-Endpoints (GET/DELETE User Data)
@ -109,7 +109,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
- **Paper-UI Design** — physisches Notizbuch-Feeling mit Animationen
- **Fokus-Board** als vereinheitlichte Einzelansicht
- Kanban-Board mit Subtask Drag & Drop
- Spiral-View Visualisierung (@manacore/spiral-db)
- Spiral-View Visualisierung (@mana/spiral-db)
- **Cmd+K Spotlight** für schnelle Navigation und Aktionen
- Inline Title Editing direkt in der Liste
- Auto-Save mit 500ms Debounce
@ -123,7 +123,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
- Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT)
- **Local-First** via @manacore/local-store (IndexedDB + mana-sync)
- **Local-First** via @mana/local-store (IndexedDB + mana-sync)
**Lücken:**
@ -177,7 +177,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
**Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware
- JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware
- CORS konfiguriert
- RRULE DoS-Schutz (max 5000 Occurrences, 10-Jahres-Limit)
@ -218,7 +218,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
| Reminders | Server-seitig (NestJS) | Background Worker + mana-notify |
| Completion | Standard | Animated + "Heute erledigt" |
| Kanban | Basis | Subtask Drag & Drop |
| Local-First | Konzept | @manacore/local-store aktiv |
| Local-First | Konzept | @mana/local-store aktiv |
| Score | 96 → | **93** (Backend-Tests verloren) |
## Top-3 Empfehlungen

View file

@ -33,7 +33,7 @@ Die Architektur-Migration hat alle Apps gleichzeitig verbessert:
- **Hono + Bun**: ~120 LOC Compute-Server statt ~3.500 LOC NestJS
- **~50ms Cold Start**: statt 2-5 Sekunden
- **~30MB RAM**: statt ~200MB pro Service
- **Shared Package**: `@manacore/shared-hono` (Auth, Credits, Health)
- **Shared Package**: `@mana/shared-hono` (Auth, Credits, Health)
### UX (+5-10 Punkte)
- **Time to Interactive**: < 500ms (war 3-5s mit Login)

View file

@ -64,7 +64,7 @@ Calc ist ein **feature-reicher Taschenrechner** mit 8 Berechnungsmodi, 5 visuell
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- IndexedDB via Dexie.js (@mana/local-store)
- 2 Collections: calculations, savedFormulas
- Live Queries für reaktive Updates
- Sync-fähig über mana-sync

View file

@ -63,7 +63,7 @@ CityCorners ist ein **Stadtführer** mit interaktiven Leaflet-Karten, Marker-Clu
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- IndexedDB via Dexie.js (@mana/local-store)
- 3 Collections: cities (slug/country/name), locations (cityId/category/name), favorites (locationId)
- Live Queries mit Dexie liveQuery
- Sync über mana-sync WebSocket

View file

@ -67,7 +67,7 @@ ManaVoxel ist ein **2D Top-Down Pixel-Plattform** mit vollständiger Game-Engine
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- IndexedDB via Dexie.js (@mana/local-store)
- 4 Collections: worlds, areas, items, inventories
- Item-Persistenz: Sprites, Properties, Behaviors in IndexedDB
- Inventory-Persistenz: Slot-Zuweisungen pro Player

View file

@ -62,7 +62,7 @@ Times ist eine **vollwertige Zeiterfassung** mit Live-Timer, Projekt-/Kunden-Man
## Database (60/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- IndexedDB via Dexie.js (@mana/local-store)
- 6 Collections: clients, projects, timeEntries, tags, templates, settings
- Compound-Indizes (date+projectId)
- Live Queries mit useLiveQueryWithDefault()

View file

@ -82,7 +82,7 @@ Memoro ist eine KI-gestützte Sprachnotiz-App mit Web (SvelteKit), Mobile (Expo)
**Stärken:**
- Saubere Hono-Architektur mit `@manacore/shared-hono` (Auth-Middleware, Error-Handler)
- Saubere Hono-Architektur mit `@mana/shared-hono` (Auth-Middleware, Error-Handler)
- Zwei spezialisierte Server: Main-Server (3015) + Audio-Server (3016) mit Fire-and-Forget-Pattern
- Service-Key-Auth für Server-to-Server-Kommunikation
- Credit-System mit Validierung vor Verarbeitung
@ -104,7 +104,7 @@ Memoro ist eine KI-gestützte Sprachnotiz-App mit Web (SvelteKit), Mobile (Expo)
- Svelte 5 Runes korrekt verwendet ($state, $derived, $props)
- 79 Komponenten mit sauberem Tailwind CSS v4
- Dark/Light Mode mit Flash-Prevention
- PWA-Manifest konfiguriert mit @manacore/shared-pwa
- PWA-Manifest konfiguriert mit @mana/shared-pwa
- Keyboard-Shortcuts (Ctrl+1-9 Navigation)
- Loading-Skeletons für alle Seiten
- Local-First mit Dexie.js und Guest-Mode
@ -186,7 +186,7 @@ Memoro ist eine KI-gestützte Sprachnotiz-App mit Web (SvelteKit), Mobile (Expo)
**Stärken:**
- JWT-Auth via @manacore/shared-hono Middleware
- JWT-Auth via @mana/shared-hono Middleware
- Service-Key-Auth für interne Server-Kommunikation
- CORS korrekt konfiguriert mit Origin-Whitelist
- RLS-Policies in Supabase

View file

@ -212,7 +212,7 @@ Bewertet die Tiefe der Umami-Analytics-Integration pro App:
| ---------------------- | ---------------------------------------------------------------------- |
| **Page View Tracking** | Umami-Script via `hooks.server.ts` injiziert (automatische Page Views) |
| **Custom Events** | App-spezifische Events implementiert (z.B. `TodoEvents`, `ChatEvents`) |
| **Auth Tracking** | Login/Signup/Logout automatisch via `@manacore/shared-auth` getrackt |
| **Auth Tracking** | Login/Signup/Logout automatisch via `@mana/shared-auth` getrackt |
| **Landing Tracking** | Landing Page Events (CTA-Clicks, Pricing Views) via `Analytics.astro` |
| **Public Dashboard** | Öffentliches Dashboard auf `stats.mana.how` konfiguriert |
@ -251,7 +251,7 @@ Der **Ecosystem Health Score** ist ein eigenständiges Dashboard unter `/manasco
| **Icon Consistency** | 10% | Verhältnis Phosphor-Icon-Imports vs. verbleibende inline SVGs |
| **i18n Coverage** | 10% | Apps mit `svelte-i18n` Internationalisierung |
| **Style Consistency** | 10% | Apps mit Theme-CSS-Variablen + Tailwind CSS |
| **Local-First** | 8% | Apps mit `@manacore/local-store` (Offline-fähig) |
| **Local-First** | 8% | Apps mit `@mana/local-store` (Offline-fähig) |
| **Error Boundaries** | 8% | Apps mit `+error.svelte` Error Page + Offline Page |
| **TypeScript Strict** | 7% | Apps mit `strict: true` in tsconfig |
| **Test Coverage** | 7% | Apps mit mindestens einem Unit- oder E2E-Test |
@ -278,8 +278,8 @@ Jede Metrik ist ein Prozentwert (0-100%):
| Metrik | Aktion |
| ------------------- | ------------------------------------------------------------------------------- |
| Shared Packages ↑ | Fehlende Core-Packages in `package.json` hinzufügen |
| Icon Consistency ↑ | Inline SVGs durch `@manacore/shared-icons` Phosphor-Komponenten ersetzen |
| Modal Consistency ↑ | Custom-Modals auf `<Modal>` aus `@manacore/shared-ui` migrieren |
| Icon Consistency ↑ | Inline SVGs durch `@mana/shared-icons` Phosphor-Komponenten ersetzen |
| Modal Consistency ↑ | Custom-Modals auf `<Modal>` aus `@mana/shared-ui` migrieren |
| Error Handling ↑ | `instanceof Error` durch shared `getErrorMessage()` Helper ersetzen |
| Error Boundaries ↑ | `+error.svelte` in jeder App anlegen |
| Test Coverage ↑ | Mindestens einen Unit-Test pro App schreiben |

View file

@ -11,13 +11,13 @@ lang: de
**KI für alle zugänglich machen.**
Wir glauben an eine Welt, in der jeder Zugang zu den besten KI-Tools hat - unabhängig von Unternehmensgröße, technischem Know-how oder Budget. Manacore revolutioniert die Art, wie Menschen und Unternehmen auf KI-Tools zugreifen: Ein Konto, ein Guthaben, unendliche Möglichkeiten.
Wir glauben an eine Welt, in der jeder Zugang zu den besten KI-Tools hat - unabhängig von Unternehmensgröße, technischem Know-how oder Budget. Mana revolutioniert die Art, wie Menschen und Unternehmen auf KI-Tools zugreifen: Ein Konto, ein Guthaben, unendliche Möglichkeiten.
## Mission
**Ein langfristig nachhaltiges Software-Ökosystem mit KI im Kern aufbauen.**
Durch gutes Design und optimale Vernetzung ermöglichen wir jedem, Wissen, Erfahrungen und Ideen besser festzuhalten, zu sammeln, darzustellen und zu teilen. Im Manacore-Netzwerk arbeiten verschiedene Applikationen zusammen - jede unterstützt Menschen bei spezifischen Aufgaben, verbunden entfalten sie eine ganz neue Kraft.
Durch gutes Design und optimale Vernetzung ermöglichen wir jedem, Wissen, Erfahrungen und Ideen besser festzuhalten, zu sammeln, darzustellen und zu teilen. Im Mana-Netzwerk arbeiten verschiedene Applikationen zusammen - jede unterstützt Menschen bei spezifischen Aufgaben, verbunden entfalten sie eine ganz neue Kraft.
---
@ -101,7 +101,7 @@ Keine versteckten Kosten, keine Lock-ins. Kostenersparnisse werden direkt an Nut
### 3. Community-getrieben
Unsere Nutzer gestalten aktiv mit. Feedback wird gehört und umgesetzt. Jeder kann am Manacore-Ökosystem teilhaben:
Unsere Nutzer gestalten aktiv mit. Feedback wird gehört und umgesetzt. Jeder kann am Mana-Ökosystem teilhaben:
- Als Nutzer der verschiedenen Tools
- Durch aktives Feedback über verschiedene Kanäle
@ -192,4 +192,4 @@ Diese Werte sind unser Versprechen an dich. Du kannst uns daran messen. Wenn wir
## In einem Satz
> Manacore macht die digitale Welt und KI-Möglichkeiten für jeden zugänglich - mit einem Geschäftsmodell, bei dem Software allen gehört, die daran mitwirken und es mitgestalten.
> Mana macht die digitale Welt und KI-Möglichkeiten für jeden zugänglich - mit einem Geschäftsmodell, bei dem Software allen gehört, die daran mitwirken und es mitgestalten.

Some files were not shown because too many files have changed in this diff Show more