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 # 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). # Module segmentation happens via the `module` event property (see analytics.ts).
# Register new sites at https://stats.mana.how # 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) # 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_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_CARDS_LANDING=2ac83d50-107f-4d4e-ac23-5540946e96e3
UMAMI_WEBSITE_ID_CALENDAR_LANDING=84862d98-727e-4e25-8645-639241dd1544 UMAMI_WEBSITE_ID_CALENDAR_LANDING=84862d98-727e-4e25-8645-639241dd1544
UMAMI_WEBSITE_ID_CLOCK_LANDING=0332b471-a022-46af-a726-0f45932bfd58 UMAMI_WEBSITE_ID_CLOCK_LANDING=0332b471-a022-46af-a726-0f45932bfd58

View file

@ -229,8 +229,8 @@ jobs:
done done
# mana-web: apps/mana/apps/web + shared packages # mana-web: apps/mana/apps/web + shared packages
MANACORE_WEB_CHANGED=$(check_pattern "apps/mana/apps/web/|apps/mana/packages/") 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" ] || [ "$MANACORE_WEB_CHANGED" == "true" ]; then 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 echo "mana-web=true" >> $GITHUB_OUTPUT
else else
echo "mana-web=false" >> $GITHUB_OUTPUT echo "mana-web=false" >> $GITHUB_OUTPUT

View file

@ -35,10 +35,10 @@ TESTING_STRATEGY_AUTH_CREDITS.md
.prettiercache .prettiercache
# Astro files with JSX-style comments (valid Astro but Prettier can't parse) # Astro files with JSX-style comments (valid Astro but Prettier can't parse)
apps/manacore/apps/landing/src/components/content/HeroSection.astro apps/mana/apps/landing/src/components/content/HeroSection.astro
apps/manacore/apps/landing/src/components/sections/ManaPrinciple.astro apps/mana/apps/landing/src/components/sections/ManaPrinciple.astro
apps/manacore/apps/landing/src/pages/apps/index.astro apps/mana/apps/landing/src/pages/apps/index.astro
apps/manacore/apps/landing/src/pages/privacy/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/layouts/Layout.astro
games/mana-games/apps/web/src/pages/games/[slug].astro games/mana-games/apps/web/src/pages/games/[slug].astro
games/mana-games/apps/web/src/pages/games/*.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/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/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/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 | | [`.claude/guidelines/design-ux.md`](.claude/guidelines/design-ux.md) | UI patterns, animations, a11y |
**Always consult these guidelines before making changes.** **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 - SvelteKit 2.x + Svelte 5
- Tailwind CSS - Tailwind CSS
- Mana Core Auth (Better Auth + EdDSA JWT) - Mana Auth (Better Auth + EdDSA JWT)
- Local-first data (Dexie.js + mana-sync) - Local-first data (Dexie.js + mana-sync)
- svelte-i18n (5 languages: de, en, it, fr, es) - 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 ### 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: 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` 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. Missing any of these will silently break SSO for that app.
@ -868,8 +868,8 @@ pnpm dev:landing-builder
``` ```
**How it works:** **How it works:**
1. Org admin configures landing page at `/organizations/{id}/landing` in the Manacore web dashboard 1. Org admin configures landing page at `/organizations/{id}/landing` in the Mana web dashboard
2. Config is stored in `organizations.metadata.landingPage` (mana-core-auth) 2. Config is stored in `organizations.metadata.landingPage` (mana-auth)
3. On publish, the builder service generates a static Astro site from the config 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` 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/cards/CLAUDE.md` - Card/deck management
- `apps/chat/CLAUDE.md` - Chat API endpoints, AI models - `apps/chat/CLAUDE.md` - Chat API endpoints, AI models
- `apps/picture/CLAUDE.md` - AI image generation - `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-search/CLAUDE.md` - Search & content extraction service (Go)
- `services/mana-crawler/CLAUDE.md` - Web crawler service (Go) - `services/mana-crawler/CLAUDE.md` - Web crawler service (Go)
- `services/mana-notify/CLAUDE.md` - Notification service (Go) - `services/mana-notify/CLAUDE.md` - Notification service (Go)

View file

@ -401,7 +401,7 @@ Garten:
║ Server-autoritative Physik + Script-Execution ║ ║ Server-autoritative Physik + Script-Execution ║
║ Orchestriert von Go-Service ║ ║ Orchestriert von Go-Service ║
╠═══════════════════════════════════════════════════════════╣ ╠═══════════════════════════════════════════════════════════╣
║ BACKEND (bestehende Manacore-Services) ║ ║ BACKEND (bestehende Mana-Services) ║
║ Go: Orchestrator, Matchmaker, Sync, Notify, Search ║ ║ Go: Orchestrator, Matchmaker, Sync, Notify, Search ║
║ Hono: Auth, Credits, User, Subscriptions, Analytics ║ ║ Hono: Auth, Credits, User, Subscriptions, Analytics ║
║ Python: LLM (NPCs), Image Gen, STT, TTS ║ ║ Python: LLM (NPCs), Image Gen, STT, TTS ║
@ -791,9 +791,9 @@ DIREKT NUTZBAR (0 Aufwand):
ANPASSBAR (geringer Aufwand): ANPASSBAR (geringer Aufwand):
mana-sync (+ Chunk-Sync, Item-Sync) mana-sync (+ Chunk-Sync, Item-Sync)
@manacore/local-store (+ Voxel Collections) @mana/local-store (+ Voxel Collections)
@manacore/shared-auth (unveraendert) @mana/shared-auth (unveraendert)
@manacore/shared-ui (+ Editor-Komponenten) @mana/shared-ui (+ Editor-Komponenten)
NEU ZU BAUEN: NEU ZU BAUEN:
Bevy Voxel Engine (Client + Server) Bevy Voxel Engine (Client + Server)
@ -1016,4 +1016,4 @@ BUDGET: ~50 MB RAM, ~1.8M Dreiecke, 60fps Desktop, 30fps Mobile
--- ---
*Erstellt: 28. Maerz 2026* *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%) │ │ TypeScript (30%) │
│ ├── Svelte 5 UI (Editor, Marketplace, Social) │ │ ├── Svelte 5 UI (Editor, Marketplace, Social) │
│ ├── Hono Services (auth, credits, user, subs) │ │ ├── Hono Services (auth, credits, user, subs) │
│ ├── Shared Packages (@manacore/*) │ │ ├── Shared Packages (@mana/*) │
│ ├── User Game Scripts (→ WASM kompiliert) │ │ ├── User Game Scripts (→ WASM kompiliert) │
│ └── Local-First Layer (Dexie.js) │ │ └── 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* *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? ## 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 | | **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 | | **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. | | **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 | | **Local-First** | Dexie.js + mana-sync (Go WebSocket) | 19 Apps migriert |
| **Datenbank** | PostgreSQL 16 | Alle Services | | **Datenbank** | PostgreSQL 16 | Alle Services |
| **Cache** | Redis 7 | Rate Limiting, Sessions | | **Cache** | Redis 7 | Rate Limiting, Sessions |
@ -657,16 +657,16 @@ Option B ("Ambitioniert") ist der beste Kompromiss:
### Anpassbar (moderater Umbau) ### Anpassbar (moderater Umbau)
| Komponente | Basis | Aenderung | | Komponente | Basis | Aenderung |
| ---------------- | --------------------------- | ------------------------------------------- | | ---------------- | ----------------------- | ------------------------------------------- |
| Local-First Sync | mana-sync | Game-World-Sync + Asset-Sync hinzufuegen | | Local-First Sync | mana-sync | Game-World-Sync + Asset-Sync hinzufuegen |
| Local Store | @manacore/local-store | Game-Collections (worlds, assets, progress) | | Local Store | @mana/local-store | Game-Collections (worlds, assets, progress) |
| Shared Auth | @manacore/shared-auth | Unveraendert, in neuer App nutzen | | Shared Auth | @mana/shared-auth | Unveraendert, in neuer App nutzen |
| Shared UI | @manacore/shared-ui | Editor-Komponenten ergaenzen | | Shared UI | @mana/shared-ui | Editor-Komponenten ergaenzen |
| API Client | @manacore/shared-api-client | Game-Server-Endpoints hinzufuegen | | API Client | @mana/shared-api-client | Game-Server-Endpoints hinzufuegen |
| PWA | @manacore/shared-pwa | Offline-Game-Support | | PWA | @mana/shared-pwa | Offline-Game-Support |
| i18n | @manacore/shared-i18n | Game-spezifische Strings | | i18n | @mana/shared-i18n | Game-spezifische Strings |
| Analytics | mana-analytics | Game-Metriken (Plays, Retention) | | Analytics | mana-analytics | Game-Metriken (Plays, Retention) |
### Neu zu bauen ### 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 ## Projects
| Project | Description | Apps | | 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 | | **chat** | AI chat application | NestJS backend, Expo mobile, SvelteKit web, Astro landing |
| **todo** | Task management | NestJS backend, SvelteKit web, Astro landing | | **todo** | Task management | NestJS backend, SvelteKit web, Astro landing |
| **calendar** | Calendar & scheduling | 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 ## Architecture
``` ```
manacore-monorepo/ mana-monorepo/
├── apps/ # Product applications ├── apps/ # Product applications
├── services/ # Microservices (auth, search, LLM, bots) ├── services/ # Microservices (auth, search, LLM, bots)
├── packages/ # Shared packages ├── packages/ # Shared packages

View file

@ -1,6 +1,6 @@
# Troubleshooting Guide # Troubleshooting Guide
Common issues and solutions for the manacore-monorepo. Common issues and solutions for the mana-monorepo.
## Table of Contents ## Table of Contents
@ -242,7 +242,7 @@ pnpm turbo run lint --filter=presi
```bash ```bash
# Add shared config # 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** 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 ### ❌ WRONG - Type-Only Import
```typescript ```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 { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; // ❌ Type-only import import { ConfigService } from '@nestjs/config'; // ❌ Type-only import
@ -320,7 +320,7 @@ export class AiService {
### ✅ CORRECT - Regular Import ### ✅ CORRECT - Regular Import
```typescript ```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 { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; // ✅ Regular import import { ConfigService } from '@nestjs/config'; // ✅ Regular import
@ -361,8 +361,8 @@ export class AiService {
4. Rebuild and test: 4. Rebuild and test:
```bash ```bash
pnpm --filter mana-core-auth build pnpm --filter mana-auth build
pnpm --filter mana-core-auth start:dev pnpm --filter mana-auth start:dev
``` ```
### Debugging ### Debugging
@ -384,10 +384,10 @@ export class AiModule {}
```bash ```bash
# Build the service # Build the service
pnpm --filter mana-core-auth build pnpm --filter mana-auth build
# Check the compiled output # 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: # Should see:
# const config_1 = require("@nestjs/config"); ✅ Good # const config_1 = require("@nestjs/config"); ✅ Good
@ -401,7 +401,7 @@ If the error only happens in Docker but not locally:
```bash ```bash
# Build Docker image without cache # 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 # Check the compiled code in the image
docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js 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 ### 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 - TypeScript `import type` vs `import {}` - both erase at compile time
- Docker layer caching can hide fixes if source wasn't properly copied - 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: 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 2. Review recent commits that may have introduced the issue
3. Run `pnpm clean` and `pnpm install` to reset 3. Run `pnpm clean` and `pnpm install` to reset
4. Create a new issue with full error logs 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 | | **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Landing** | Astro 5.x, Tailwind CSS | | **Landing** | Astro 5.x, Tailwind CSS |
| **Mobile** | React Native 0.81 + Expo SDK 54, NativeWind [TODO] | | **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) | | **i18n** | svelte-i18n (DE, EN, FR, ES, IT) |
| **Dates** | date-fns | | **Dates** | date-fns |
| **Sync** | ical.js, tsdav (CalDAV) | | **Sync** | ical.js, tsdav (CalDAV) |
@ -406,7 +406,7 @@ FREQ=WEEKLY;UNTIL=20241231T235959Z # Wöchentlich bis Ende 2024
```env ```env
NODE_ENV=development NODE_ENV=development
PORT=3014 PORT=3014
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/calendar DATABASE_URL=postgresql://mana:devpassword@localhost:5432/calendar
MANA_AUTH_URL=http://localhost:3001 MANA_AUTH_URL=http://localhost:3001
CORS_ORIGINS=http://localhost:5173,http://localhost:5179,http://localhost:8081 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 docker compose -f docker-compose.dev.yml up -d postgres
# Datenbank erstellen # 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 # Schema pushen
pnpm calendar:db:push 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 | | **Accessibility** | ✅ | Focus trapping in all modals, ARIA roles, keyboard navigation |
| **Rate Limiting** | ✅ | ThrottlerGuard global (100 req/min) | | **Rate Limiting** | ✅ | ThrottlerGuard global (100 req/min) |
| **API Validation** | ✅ | DTOs with class-validator, whitelist + forbidNonWhitelisted | | **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 | | **Toast System** | ✅ | All toast messages localized via svelte-i18n |
| **Docker** | ✅ | Multi-stage build, health checks, entrypoint script | | **Docker** | ✅ | Multi-stage build, health checks, entrypoint script |
| **Tests** | ✅ | 13 unit tests, 7 E2E test suites (Playwright) | | **Tests** | ✅ | 13 unit tests, 7 E2E test suites (Playwright) |
@ -652,7 +652,7 @@ pnpm --filter @calendar/web test:e2e
## Important Notes ## 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) 2. **Database**: PostgreSQL mit Drizzle ORM (Port 5432)
3. **Port**: Server läuft auf Port 3014 3. **Port**: Server läuft auf Port 3014
4. **Recurrence**: Verwendet RFC 5545 RRULE Format 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 docker compose -f docker-compose.dev.yml up -d postgres
# 2. Datenbank erstellen # 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 # 3. Schema pushen
pnpm calendar:db:push pnpm calendar:db:push
@ -44,7 +44,7 @@ pnpm dev:calendar:app
- **Backend**: NestJS, Drizzle ORM, PostgreSQL - **Backend**: NestJS, Drizzle ORM, PostgreSQL
- **Web**: SvelteKit, Svelte 5, Tailwind CSS - **Web**: SvelteKit, Svelte 5, Tailwind CSS
- **Landing**: Astro, Tailwind CSS - **Landing**: Astro, Tailwind CSS
- **Auth**: Mana Core Auth (JWT) - **Auth**: Mana Auth (JWT)
## Dokumentation ## Dokumentation
@ -76,4 +76,4 @@ pnpm calendar:db:studio # Drizzle Studio öffnen
## Lizenz ## Lizenz
Proprietär - Manacore Proprietär - Mana

View file

@ -102,7 +102,7 @@ const links = {
&copy; {currentYear} Kalender. Alle Rechte vorbehalten. &copy; {currentYear} Kalender. Alle Rechte vorbehalten.
</p> </p>
<p class="text-sm text-gray-500"> <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> </p>
</div> </div>
</div> </div>

View file

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

View file

@ -1,10 +1,10 @@
# Cards Credit System # 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 ## 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 validation before operations
- Credit consumption after successful 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 │ Service │ - Deduct credits
│ │ - Record transaction │ │ - Record transaction
└─────────────┘ └─────────────┘
@ -61,7 +61,7 @@ These costs are defined in `backend/src/config/credit-operations.ts`.
### 1. Service Key Configuration ### 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**: **backend/.env**:
```env ```env
@ -500,7 +500,7 @@ SERVICE_KEY=your-actual-service-key-from-mana-core
## Resources ## Resources
- [Mana Core Documentation](https://docs.mana-core.com) - [Mana Documentation](https://docs.mana-core.com)
- [Mana Core NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package) - [Mana NestJS Package](https://github.com/Memo-2023/mana-core-nestjs-package)
- [Integration Guide](./MANA_CORE_INTEGRATION_GUIDE.md) - [Integration Guide](./MANA_CORE_INTEGRATION_GUIDE.md)
- [Example Implementation](./apps/mobile/examples/DeckCreationExample.tsx) - [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 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 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 1. Missing environment variables/secrets
2. Can't connect to Supabase 2. Can't connect to Supabase
3. Can't connect to Mana Core 3. Can't connect to Mana
**Debug**: **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 ## 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) │ Credit Operations)
┌─────────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────────┐
│ Mana Core Service │ │ Mana Service │
│ (Authentication & Credits) │ │ (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 - Validates user has sufficient credits
- Deducts credits from user's balance - Deducts credits from user's balance
- Records transaction in ledger - Records transaction in ledger
@ -476,8 +476,8 @@ async getCharacters(
### Backend `.env` ### Backend `.env`
```env ```env
# Mana Core (Required) # Mana (Required)
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=8d2f5ddb-e251-4b3b-8802-84022a7ac77f APP_ID=8d2f5ddb-e251-4b3b-8802-84022a7ac77f
MANA_SUPABASE_SECRET_KEY=your-service-key MANA_SUPABASE_SECRET_KEY=your-service-key
@ -504,7 +504,7 @@ EXPO_PUBLIC_STORYTELLER_BACKEND_URL=http://localhost:3002
## Key Takeaways ## Key Takeaways
### What Mana Core Provides ### What Mana Provides
1. **Authentication System** 1. **Authentication System**
- ✅ Email/password sign-in/sign-up - ✅ 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. 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 v10+ application set up
- [ ] `@nestjs/config` installed - [ ] `@nestjs/config` installed
- [ ] Node.js v18+ and npm/yarn - [ ] Node.js v18+ and npm/yarn
- [ ] Mana Core credentials obtained: - [ ] Mana credentials obtained:
- [ ] `MANA_SERVICE_URL` - [ ] `MANA_SERVICE_URL`
- [ ] `APP_ID` - [ ] `APP_ID`
- [ ] `MANA_SUPABASE_SECRET_KEY` (service key) - [ ] `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 - [ ] Test credit validation flow
@ -412,7 +412,7 @@ Use this checklist when integrating `@mana-core/nestjs-integration` into a new N
## Documentation ## Documentation
- [ ] Update README with Mana Core setup instructions - [ ] Update README with Mana setup instructions
- [ ] Document custom operation types and credit costs - [ ] Document custom operation types and credit costs
@ -443,7 +443,7 @@ If something doesn't work, check:
## Support Resources ## Support Resources
- **Full Integration Guide**: See `MANA_CORE_INTEGRATION_GUIDE.md` - **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 - **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **Example Code**: Check Storyteller project for working implementation - **Example Code**: Check Storyteller project for working implementation
@ -451,7 +451,7 @@ If something doesn't work, check:
## Integration Complete! 🎉 ## 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. **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. 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 ## Overview
The Mana Core NestJS integration package provides: The Mana NestJS integration package provides:
- **Complete Authentication System**: Email/password, Google OAuth, Apple Sign-in - **Complete Authentication System**: Email/password, Google OAuth, Apple Sign-in
- **JWT Token Management**: Automatic validation, refresh, and storage - **JWT Token Management**: Automatic validation, refresh, and storage
- **Credit Management**: Pre-flight validation and consumption with app-level tracking - **Credit Management**: Pre-flight validation and consumption with app-level tracking
@ -33,7 +33,7 @@ Frontend (React Native/Web)
↓ HTTP Requests with JWT ↓ HTTP Requests with JWT
Backend (NestJS) Backend (NestJS)
↓ Token Validation & Credit Checks ↓ Token Validation & Credit Checks
Mana Core Service Mana Service
↓ Authentication & Credit Management ↓ Authentication & Credit Management
``` ```
@ -41,11 +41,11 @@ Mana Core Service
## Prerequisites ## Prerequisites
Before integrating Mana Core, ensure you have: Before integrating Mana, ensure you have:
1. **Mana Core Credentials**: 1. **Mana Credentials**:
- `MANA_SERVICE_URL`: URL of your Mana Core instance - `MANA_SERVICE_URL`: URL of your Mana instance
- `APP_ID`: Your application ID from Mana Core - `APP_ID`: Your application ID from Mana
- `MANA_SUPABASE_SECRET_KEY`: Service key for backend operations (optional but recommended) - `MANA_SUPABASE_SECRET_KEY`: Service key for backend operations (optional but recommended)
2. **NestJS Application**: 2. **NestJS Application**:
@ -106,8 +106,8 @@ Create or update your `.env` file in the backend directory:
NODE_ENV=development NODE_ENV=development
PORT=3002 PORT=3002
# Mana Core Configuration # Mana Configuration
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-from-mana-core APP_ID=your-app-id-from-mana-core
MANA_SUPABASE_SECRET_KEY=your-service-role-key MANA_SUPABASE_SECRET_KEY=your-service-role-key
@ -116,8 +116,8 @@ SIGNUP_REDIRECT_URL=https://yourapp.com/welcome
``` ```
**Important Notes**: **Important Notes**:
- `MANA_SERVICE_URL`: Your Mana Core instance URL - `MANA_SERVICE_URL`: Your Mana instance URL
- `APP_ID`: Obtained from Mana Core admin panel - `APP_ID`: Obtained from Mana admin panel
- `MANA_SUPABASE_SECRET_KEY`: Required for credit operations and service-level auth - `MANA_SUPABASE_SECRET_KEY`: Required for credit operations and service-level auth
- `SIGNUP_REDIRECT_URL`: Optional redirect after successful signup - `SIGNUP_REDIRECT_URL`: Optional redirect after successful signup
@ -138,12 +138,12 @@ import { ManaModule } from '@mana-core/nestjs-integration';
validationSchema: validationSchema, // Optional: Joi validation validationSchema: validationSchema, // Optional: Joi validation
}), }),
// Mana Core Module - async configuration // Mana Module - async configuration
ManaModule.forRootAsync({ ManaModule.forRootAsync({
imports: [ConfigModule], imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({ useFactory: (configService: ConfigService) => ({
// Required: Mana service URL // 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 // Required: Your app ID
appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f', appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f',
@ -172,7 +172,7 @@ export class AppModule {}
``` ```
**Configuration Options**: **Configuration Options**:
- `manaServiceUrl` (required): URL of your Mana Core service - `manaServiceUrl` (required): URL of your Mana service
- `appId` (required): Your application ID - `appId` (required): Your application ID
- `serviceKey` (recommended): Service role key for backend operations - `serviceKey` (recommended): Service role key for backend operations
- `signupRedirectUrl` (optional): URL to redirect users after signup - `signupRedirectUrl` (optional): URL to redirect users after signup
@ -596,7 +596,7 @@ if (response.ok) {
## Credit Management ## 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 ### Step 1: Inject CreditClientService
@ -847,7 +847,7 @@ try {
### Unit Testing ### Unit Testing
Mock the Mana Core services in your tests: Mock the Mana services in your tests:
```typescript ```typescript
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
@ -895,7 +895,7 @@ describe('CharacterController', () => {
### Integration Testing ### Integration Testing
Test with the Mana Core module: Test with the Mana module:
```typescript ```typescript
import { ManaModule } from '@mana-core/nestjs-integration'; import { ManaModule } from '@mana-core/nestjs-integration';
@ -1042,7 +1042,7 @@ ManaModule.forRootAsync({
### Support Resources ### 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 - **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
- **Storyteller Example**: Check this repository for working examples - **Storyteller Example**: Check this repository for working examples
@ -1093,7 +1093,7 @@ After following this guide, your application now has:
| File | Purpose | | 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/character/character.controller.ts` | Example of AuthGuard and CreditClientService usage |
| `backend/src/story/story.controller.ts` | Example of credit validation and consumption | | `backend/src/story/story.controller.ts` | Example of credit validation and consumption |
| `backend/src/decorators/user.decorator.ts` | Custom @UserToken() decorator | | `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: 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 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) 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. 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 - Testing strategies
- Troubleshooting common issues - 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 ### 3. **[Integration Checklist](./MANA_CORE_INTEGRATION_CHECKLIST.md)** - Step-by-Step Checklist
**Actionable checklist** with checkboxes covering: **Actionable checklist** with checkboxes covering:
@ -47,9 +47,9 @@ Start here for a high-level understanding and quick reference.
## 🚀 Quick Start ## 🚀 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 - **Authentication**: Email/password, Google OAuth, Apple Sign-in
- **JWT Token Management**: Automatic validation, refresh, and multi-device support - **JWT Token Management**: Automatic validation, refresh, and multi-device support
- **Credit System**: Pre-flight validation, consumption tracking, and billing - **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`**: **Backend `.env`**:
```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 APP_ID=your-app-id
MANA_SUPABASE_SECRET_KEY=your-service-key MANA_SUPABASE_SECRET_KEY=your-service-key
NODE_ENV=development NODE_ENV=development
@ -111,7 +111,7 @@ import { ManaModule } from '@mana-core/nestjs-integration';
ManaModule.forRootAsync({ ManaModule.forRootAsync({
imports: [ConfigModule], imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({ 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', appId: '8d2f5ddb-e251-4b3b-8802-84022a7ac77f',
serviceKey: configService.get('MANA_SUPABASE_SECRET_KEY'), serviceKey: configService.get('MANA_SUPABASE_SECRET_KEY'),
debug: configService.get('NODE_ENV') === 'development', debug: configService.get('NODE_ENV') === 'development',
@ -324,9 +324,9 @@ Mobile App (React Native)
Backend (NestJS) Backend (NestJS)
│ 2. Forward to Mana Core │ 2. Forward to Mana
Mana Core Service Mana Service
│ 3. Validate & Generate Tokens │ 3. Validate & Generate Tokens
@ -358,7 +358,7 @@ Mobile App
### Sign In ### Sign In
**Backend** (Auto-provided by Mana Core): **Backend** (Auto-provided by Mana):
``` ```
POST /auth/signin POST /auth/signin
{ {
@ -516,7 +516,7 @@ MANA_CORE_README.md ← You are here (Quick start)
| File | Purpose | | 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/character/character.controller.ts` | AuthGuard + Credit usage example |
| `backend/src/story/story.controller.ts` | Credit validation + consumption | | `backend/src/story/story.controller.ts` | Credit validation + consumption |
| `backend/src/decorators/user.decorator.ts` | Custom @UserToken() for RLS | | `backend/src/decorators/user.decorator.ts` | Custom @UserToken() for RLS |
@ -533,8 +533,8 @@ MANA_CORE_README.md ← You are here (Quick start)
## 🔗 Resources ## 🔗 Resources
- **Mana Core Package**: https://github.com/Memo-2023/mana-core-nestjs-package - **Mana Package**: https://github.com/Memo-2023/mana-core-nestjs-package
- **Mana Core Docs**: https://docs.mana-core.com - **Mana Docs**: https://docs.mana-core.com
- **NestJS Docs**: https://docs.nestjs.com - **NestJS Docs**: https://docs.nestjs.com
- **Storyteller Source**: This repository - **Storyteller Source**: This repository
@ -559,7 +559,7 @@ MANA_CORE_README.md ← You are here (Quick start)
1. **Documentation**: Check all four documentation files 1. **Documentation**: Check all four documentation files
2. **Code Examples**: Study Storyteller implementation 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 4. **GitHub Issues**: https://github.com/Memo-2023/mana-core-nestjs-package/issues
### Contributing ### Contributing
@ -573,7 +573,7 @@ If you find issues or improvements in this documentation:
## ✨ Summary ## ✨ 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 - **Complete integration guide** with step-by-step instructions
- **Actionable checklist** to track progress - **Actionable checklist** to track progress

View file

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

View file

@ -2,7 +2,7 @@
## What's Been Completed ## 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) ### ✅ Backend (Complete)
- [x] ManaModule configured with environment variables - [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 ### 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**: **backend/.env**:
```env ```env
SERVICE_KEY=your-actual-service-key-here 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. Without this key, credit operations will fail with authentication errors.
@ -267,7 +267,7 @@ Before deploying to production:
### Backend ### Backend
- [ ] Set `NODE_ENV=production` in production environment - [ ] 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 - [ ] Configure proper CORS for your frontend domain
- [ ] Set up proper logging/monitoring - [ ] Set up proper logging/monitoring
- [ ] Add rate limiting - [ ] 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) 2. **Integration**: See [MANA_CORE_INTEGRATION_GUIDE.md](./MANA_CORE_INTEGRATION_GUIDE.md)
3. **Architecture**: See [MANA_CORE_ARCHITECTURE.md](./MANA_CORE_ARCHITECTURE.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) 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 ## Summary

View file

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview ## 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 ## Essential Commands
@ -69,7 +69,7 @@ Uses Expo Router v5 with file-based routing:
### Authentication ### 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` - Zustand auth store in `store/authStore.ts`
- Tokens stored in Expo SecureStore (encrypted) - Tokens stored in Expo SecureStore (encrypted)
- Supports email/password, Google, and Apple sign-in - 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 - **Web**: SvelteKit 2.x, Svelte 5, Tailwind CSS 4
- **Landing**: Astro 5.16, Tailwind CSS - **Landing**: Astro 5.16, Tailwind CSS
- **Server**: Hono + Bun, OpenRouter AI + mana-llm (local), Drizzle ORM, PostgreSQL - **Server**: Hono + Bun, OpenRouter AI + mana-llm (local), Drizzle ORM, PostgreSQL
- **Auth**: Mana Core Auth (JWT) - **Auth**: Mana Auth (JWT)
- **Types**: TypeScript 5.x - **Types**: TypeScript 5.x
## Architecture ## Architecture
@ -103,7 +103,7 @@ MANA_LLM_URL=http://localhost:3025 # mana-llm service URL
LLM_TIMEOUT=120000 # Timeout in ms (default: 120s) LLM_TIMEOUT=120000 # Timeout in ms (default: 120s)
# Database (uses shared Docker PostgreSQL) # Database (uses shared Docker PostgreSQL)
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat DATABASE_URL=postgresql://mana:devpassword@localhost:5432/chat
# Auth # Auth
MANA_AUTH_URL=http://localhost:3001 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/`: 2. **Create `.env`** in `apps/chat/apps/server/`:
```env ```env
OPENROUTER_API_KEY=sk-or-v1-xxx 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 MANA_AUTH_URL=http://localhost:3001
PORT=3002 PORT=3002
``` ```
@ -190,6 +190,6 @@ pnpm --filter @chat/server db:add-local-models
## Important Notes ## Important Notes
1. **Security**: API keys are stored in the server only - never in client apps 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) 3. **Database**: PostgreSQL with Drizzle ORM (uses shared Docker container)
4. **Deployment**: Server runs on port 3002 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 **Date:** 2025-11-25
**Status:** 🎉 All code changes implemented **Status:** 🎉 All code changes implemented
@ -8,25 +8,25 @@
## 🎯 Summary ## 🎯 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 ## ✅ What Was Done
### 1. **Updated `@manacore/shared-auth` Package** ✅ ### 1. **Updated `@mana/shared-auth` Package** ✅
**Location:** `/packages/shared-auth/src/core/authService.ts` **Location:** `/packages/shared-auth/src/core/authService.ts`
**Changes:** **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 login response handling (`accessToken` instead of `appToken`)
- Fixed signup flow (register then login separately) - Fixed signup flow (register then login separately)
- Updated refresh token endpoint - Updated refresh token endpoint
- Updated credits balance 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:** **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 - Created CurrentUser decorator to inject user data into controllers
- Updated all controllers to use JwtAuthGuard - Updated all controllers to use JwtAuthGuard
- Removed userId from request body (now extracted from JWT) - 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 - All endpoints now protected with JWT validation
- User context automatically injected via @CurrentUser decorator - 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 - 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:** **Changes:**
- Completely rewrote auth store to use `@manacore/shared-auth` - Completely rewrote auth store to use `@mana/shared-auth`
- Removed Supabase auth dependencies - Removed Supabase auth dependencies
- Added `initializeWebAuth()` initialization - Added `initializeWebAuth()` initialization
- Added `getCredits()` method for credit balance - 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:** **Changes:**
- Rewrote AuthProvider to use `@manacore/shared-auth` - Rewrote AuthProvider to use `@mana/shared-auth`
- Created SecureStore adapter for token storage - Created SecureStore adapter for token storage
- Created React Native device adapter - Created React Native device adapter
- Created React Native network adapter - Created React Native network adapter
@ -165,12 +165,12 @@ EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
## 🚀 How to Run ## 🚀 How to Run
### 1. Start Mana Core Auth (Terminal 1) ### 1. Start Mana Auth (Terminal 1)
```bash ```bash
cd mana-core-auth cd mana-auth
cp .env.example .env 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 pnpm start:dev
``` ```
@ -221,7 +221,7 @@ pnpm dev
- [ ] Start backend on port 3002 - [ ] Start backend on port 3002
- [ ] Try accessing `/api/chat/models` without token → Should return 401 - [ ] 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/chat/models` with token → Should work
- [ ] Access `/api/conversations` with token → Should work - [ ] Access `/api/conversations` with token → Should work
@ -271,10 +271,10 @@ const credits = await authService.getUserCredits();
## 🔄 What Changed for Users ## 🔄 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) | | **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) | | **Token Storage** | Supabase cookies | localStorage/SecureStore | None (same security) |
| **Sessions** | Supabase sessions | JWT + refresh tokens | Better (token rotation) | | **Sessions** | Supabase sessions | JWT + refresh tokens | Better (token rotation) |
| **Credits** | ❌ None | ✅ 150 initial + 5 daily | **NEW FEATURE!** | | **Credits** | ❌ None | ✅ 150 initial + 5 daily | **NEW FEATURE!** |
@ -283,23 +283,23 @@ const credits = await authService.getUserCredits();
## 📊 Port Configuration ## 📊 Port Configuration
| Service | Port | URL | | Service | Port | URL |
| ------------------ | ---- | --------------------- | | ---------------- | ---- | --------------------- |
| **Mana Core Auth** | 3001 | http://localhost:3001 | | **Mana Auth** | 3001 | http://localhost:3001 |
| **Chat Backend** | 3002 | http://localhost:3002 | | **Chat Backend** | 3002 | http://localhost:3002 |
| **Web App** | 5173 | http://localhost:5173 | | **Web App** | 5173 | http://localhost:5173 |
| **Mobile App** | 8081 | exp://localhost:8081 | | **Mobile App** | 8081 | exp://localhost:8081 |
--- ---
## 🐛 Potential Issues & Solutions ## 🐛 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 ```bash
cd mana-core-auth && pnpm start:dev cd mana-auth && pnpm start:dev
``` ```
### Issue: "Invalid token" errors ### Issue: "Invalid token" errors
@ -317,10 +317,10 @@ await SecureStore.deleteItemAsync('@auth/refreshToken');
### Issue: CORS errors from web app ### 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 ```env
# In mana-core-auth/.env # In mana-auth/.env
CORS_ORIGINS=http://localhost:5173,http://localhost:8081 CORS_ORIGINS=http://localhost:5173,http://localhost:8081
``` ```
@ -336,7 +336,7 @@ MANA_AUTH_URL=http://localhost:3001
## 📚 API Endpoint Reference ## 📚 API Endpoint Reference
### Mana Core Auth (Port 3001) ### Mana Auth (Port 3001)
- POST `/api/v1/auth/register` - Register new user - POST `/api/v1/auth/register` - Register new user
- POST `/api/v1/auth/login` - Login with email/password - POST `/api/v1/auth/login` - Login with email/password
@ -388,15 +388,15 @@ MANA_AUTH_URL=http://localhost:3001
## 📖 Documentation ## 📖 Documentation
- **Integration Guide:** `/chat/MANA_AUTH_INTEGRATION.md` - **Integration Guide:** `/chat/MANA_AUTH_INTEGRATION.md`
- **Mana Core Auth README:** `/mana-core-auth/README.md` - **Mana Auth README:** `/mana-auth/README.md`
- **Quick Start:** `/mana-core-auth/QUICKSTART.md` - **Quick Start:** `/mana-auth/QUICKSTART.md`
- **Master Plan:** `/.hive-mind/MASTER_PLAN_CENTRAL_AUTH_SYSTEM.md` - **Master Plan:** `/.hive-mind/MASTER_PLAN_CENTRAL_AUTH_SYSTEM.md`
--- ---
## ✨ Benefits of Migration ## ✨ 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 2. **✅ Built-in Credits** - No need to build separate credit system
3. **✅ Better Security** - RS256 JWT, refresh token rotation, optimistic locking 3. **✅ Better Security** - RS256 JWT, refresh token rotation, optimistic locking
4. **✅ Cost Savings** - Self-hosted, no per-user charges 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 ## 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 ### 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) - ✅ **Built-in Credits** - Automatic credit balance management (150 signup bonus + 5 daily)
- ✅ **Better Security** - RS256 JWT, refresh token rotation, optimistic locking - ✅ **Better Security** - RS256 JWT, refresh token rotation, optimistic locking
- ✅ **Cost Savings** - Self-hosted, no per-user charges - ✅ **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) 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) PostgreSQL (Users, Sessions, Credits)
``` ```
@ -30,7 +30,7 @@ PostgreSQL (Users, Sessions, Credits)
### 1. Shared Auth Package Updated ✅ ### 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:** **Updated endpoints:**
@ -56,7 +56,7 @@ The `@manacore/shared-auth` package has been updated to work with Mana Core Auth
# SUPABASE_URL=... # SUPABASE_URL=...
# SUPABASE_SERVICE_KEY=... # SUPABASE_SERVICE_KEY=...
# Add Mana Core Auth URL # Add Mana Auth URL
MANA_AUTH_URL=http://localhost:3001 MANA_AUTH_URL=http://localhost:3001
``` ```
@ -114,7 +114,7 @@ export class JwtAuthGuard implements CanActivate {
} }
try { try {
// Get public key from Mana Core Auth // Get public key from Mana Auth
const authUrl = this.configService.get<string>('MANA_AUTH_URL'); const authUrl = this.configService.get<string>('MANA_AUTH_URL');
const response = await fetch(`${authUrl}/api/v1/auth/validate`, { const response = await fetch(`${authUrl}/api/v1/auth/validate`, {
method: 'POST', method: 'POST',
@ -177,11 +177,11 @@ import { JwtAuthGuard } from './common/guards/jwt-auth.guard';
Edit `chat/apps/web/src/lib/stores/auth.svelte.ts`: Edit `chat/apps/web/src/lib/stores/auth.svelte.ts`:
```typescript ```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'; 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({ const { authService, tokenManager } = initializeWebAuth({
baseUrl: MANA_AUTH_URL, baseUrl: MANA_AUTH_URL,
}); });
@ -247,7 +247,7 @@ export const handle: Handle = async ({ event, resolve }) => {
if (token) { if (token) {
try { try {
// Validate token with Mana Core Auth // Validate token with Mana Auth
const authUrl = process.env.PUBLIC_MANA_AUTH_URL || 'http://localhost:3001'; const authUrl = process.env.PUBLIC_MANA_AUTH_URL || 'http://localhost:3001';
const response = await fetch(`${authUrl}/api/v1/auth/validate`, { const response = await fetch(`${authUrl}/api/v1/auth/validate`, {
method: 'POST', method: 'POST',
@ -290,8 +290,8 @@ import {
setDeviceAdapter, setDeviceAdapter,
setNetworkAdapter, setNetworkAdapter,
type UserData, type UserData,
} from '@manacore/shared-auth'; } from '@mana/shared-auth';
import { createSecureStoreAdapter } from '@manacore/shared-auth/native'; // You may need to create this 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'; 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 ### Step 6: Test the Integration
#### 6.1 Start Mana Core Auth #### 6.1 Start Mana Auth
```bash ```bash
# From monorepo root # From monorepo root
cd mana-core-auth cd mana-auth
pnpm start:dev pnpm start:dev
``` ```
@ -465,9 +465,9 @@ pnpm dev
## API Compatibility ## 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 | | Email/Password | ✅ | ✅ | Migrated |
| OAuth (Google) | ✅ | 🚧 | TODO | | OAuth (Google) | ✅ | 🚧 | TODO |
@ -480,7 +480,7 @@ pnpm dev
## Credits System ## Credits System
Mana Core Auth includes a built-in credit system: Mana Auth includes a built-in credit system:
```typescript ```typescript
// Get credit balance // Get credit balance
@ -501,12 +501,12 @@ console.log(credits);
## Troubleshooting ## 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 ```bash
cd mana-core-auth cd mana-auth
pnpm start:dev pnpm start:dev
``` ```
@ -520,7 +520,7 @@ await authService.clearAuthStorage();
### CORS errors ### CORS errors
**Solution:** Add Chat app URLs to Mana Core Auth `.env`: **Solution:** Add Chat app URLs to Mana Auth `.env`:
```env ```env
CORS_ORIGINS=http://localhost:3000,http://localhost:8081 CORS_ORIGINS=http://localhost:3000,http://localhost:8081
@ -528,7 +528,7 @@ CORS_ORIGINS=http://localhost:3000,http://localhost:8081
## Next Steps ## Next Steps
1. ✅ Update `@manacore/shared-auth` package 1. ✅ Update `@mana/shared-auth` package
2. ⏳ Integrate into Chat backend 2. ⏳ Integrate into Chat backend
3. ⏳ Update Chat web app 3. ⏳ Update Chat web app
4. ⏳ Update Chat mobile app 4. ⏳ Update Chat mobile app
@ -539,10 +539,10 @@ CORS_ORIGINS=http://localhost:3000,http://localhost:8081
## Resources ## Resources
- **Mana Core Auth README:** `/mana-core-auth/README.md` - **Mana Auth README:** `/mana-auth/README.md`
- **Shared Auth Package:** `/packages/shared-auth/` - **Shared Auth Package:** `/packages/shared-auth/`
- **API Documentation:** `/mana-core-auth/README.md#api-endpoints` - **API Documentation:** `/mana-auth/README.md#api-endpoints`
- **Quick Start:** `/mana-core-auth/QUICKSTART.md` - **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+ - ✅ Node.js 20+
- ✅ pnpm installed - ✅ pnpm installed
- ✅ All dependencies installed (`pnpm install` from monorepo root) - ✅ 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 ```bash
cd mana-core-auth cd mana-auth
chmod +x scripts/generate-keys.sh chmod +x scripts/generate-keys.sh
./scripts/generate-keys.sh ./scripts/generate-keys.sh
``` ```
@ -51,18 +51,18 @@ MIIBIjANBg...
## Step 2: Configure Environment Variables ## Step 2: Configure Environment Variables
### 2.1 Mana Core Auth ### 2.1 Mana Auth
```bash ```bash
cd mana-core-auth cd mana-auth
cp .env.example .env cp .env.example .env
``` ```
Edit `mana-core-auth/.env` and add: Edit `mana-auth/.env` and add:
```env ```env
# Database # Database
DATABASE_URL=postgresql://manacore:password@localhost:5432/manacore DATABASE_URL=postgresql://mana:password@localhost:5432/mana
# Paste the keys from Step 1 # Paste the keys from Step 1
JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- 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_KEY=your-api-key
AZURE_OPENAI_API_VERSION=2024-12-01-preview AZURE_OPENAI_API_VERSION=2024-12-01-preview
# Mana Core Auth (NEW) # Mana Auth (NEW)
MANA_AUTH_URL=http://localhost:3001 MANA_AUTH_URL=http://localhost:3001
# Supabase (for database, not auth) # Supabase (for database, not auth)
@ -115,7 +115,7 @@ cp .env.example .env
Edit `chat/apps/web/.env`: Edit `chat/apps/web/.env`:
```env ```env
# Mana Core Auth (NEW) # Mana Auth (NEW)
PUBLIC_MANA_AUTH_URL=http://localhost:3001 PUBLIC_MANA_AUTH_URL=http://localhost:3001
# Backend API (NEW PORT) # Backend API (NEW PORT)
@ -136,7 +136,7 @@ cp .env.example .env
Edit `chat/apps/mobile/.env`: Edit `chat/apps/mobile/.env`:
```env ```env
# Mana Core Auth (NEW) # Mana Auth (NEW)
EXPO_PUBLIC_MANA_AUTH_URL=http://localhost:3001 EXPO_PUBLIC_MANA_AUTH_URL=http://localhost:3001
# Backend API (NEW PORT) # Backend API (NEW PORT)
@ -151,10 +151,10 @@ EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
## Step 3: Start Services (4 Terminals) ## Step 3: Start Services (4 Terminals)
### Terminal 1: Mana Core Auth ### Terminal 1: Mana Auth
```bash ```bash
cd mana-core-auth cd mana-auth
# Start PostgreSQL (if using Docker) # Start PostgreSQL (if using Docker)
docker-compose up postgres -d docker-compose up postgres -d
@ -169,7 +169,7 @@ pnpm start:dev
**Expected output:** **Expected output:**
``` ```
🚀 Mana Core Auth running on: http://localhost:3001 🚀 Mana Auth running on: http://localhost:3001
📚 Environment: development 📚 Environment: development
``` ```
@ -432,7 +432,7 @@ curl http://localhost:3002/api/chat/models \
### 7.3 Test Token Refresh ### 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) 1. Wait 15+ minutes (or change `JWT_ACCESS_TOKEN_EXPIRY=1m` for testing)
2. Make an API call from web/mobile app 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 ### Issue 1: "Connection refused" to port 3001
**Problem:** Mana Core Auth not running **Problem:** Mana Auth not running
**Solution:** **Solution:**
```bash ```bash
cd mana-core-auth cd mana-auth
pnpm start:dev pnpm start:dev
``` ```
@ -522,20 +522,20 @@ pnpm start:dev
1. Clear tokens: `localStorage.clear()` in browser 1. Clear tokens: `localStorage.clear()` in browser
2. Login again 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 ### Issue 3: CORS errors in browser
**Problem:** Web app URL not in CORS whitelist **Problem:** Web app URL not in CORS whitelist
**Solution:** **Solution:**
Edit `mana-core-auth/.env`: Edit `mana-auth/.env`:
```env ```env
CORS_ORIGINS=http://localhost:5173,http://localhost:8081 CORS_ORIGINS=http://localhost:5173,http://localhost:8081
``` ```
Restart Mana Core Auth Restart Mana Auth
### Issue 4: "Database connection failed" ### Issue 4: "Database connection failed"
@ -545,7 +545,7 @@ Restart Mana Core Auth
```bash ```bash
# If using Docker # If using Docker
cd mana-core-auth cd mana-auth
docker-compose up postgres -d docker-compose up postgres -d
# Check it's running # Check it's running
@ -598,7 +598,7 @@ Save this as `test-auth.sh`:
```bash ```bash
#!/bin/bash #!/bin/bash
echo "🧪 Testing Mana Core Auth Integration" echo "🧪 Testing Mana Auth Integration"
echo "" echo ""
# Test 1: Register user # Test 1: Register user
@ -660,7 +660,7 @@ chmod +x test-auth.sh
Use this checklist to verify everything works: Use this checklist to verify everything works:
### Mana Core Auth ✅ ### Mana Auth ✅
- [ ] Service starts on port 3001 - [ ] Service starts on port 3001
- [ ] Can register new user - [ ] Can register new user

View file

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

View file

@ -120,7 +120,7 @@ pnpm build # Build for production
- `company`, `job_title`, `department` (VARCHAR) - `company`, `job_title`, `department` (VARCHAR)
- `website`, `birthday`, `notes`, `photo_url` (VARCHAR/TEXT/DATE) - `website`, `birthday`, `notes`, `photo_url` (VARCHAR/TEXT/DATE)
- `is_favorite`, `is_archived` (BOOLEAN) - `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 - `visibility` (VARCHAR) - private/team/organization/public
- `shared_with` (JSONB) - Array of user IDs - `shared_with` (JSONB) - Array of user IDs
- `created_at`, `updated_at` (TIMESTAMP) - `created_at`, `updated_at` (TIMESTAMP)
@ -177,7 +177,7 @@ pnpm build # Build for production
``` ```
NODE_ENV=development NODE_ENV=development
PORT=3015 PORT=3015
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/contacts DATABASE_URL=postgresql://mana:devpassword@localhost:5432/contacts
MANA_AUTH_URL=http://localhost:3001 MANA_AUTH_URL=http://localhost:3001
CORS_ORIGINS=http://localhost:5173,http://localhost:5184,http://localhost:8081 CORS_ORIGINS=http://localhost:5173,http://localhost:5184,http://localhost:8081
S3_ENDPOINT=http://localhost:9000 S3_ENDPOINT=http://localhost:9000
@ -253,8 +253,8 @@ Implementation: `duplicate-detector.ts` — runs fully offline, no server calls.
## Important Notes ## 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 2. **Database**: PostgreSQL with Drizzle ORM
3. **Port**: Backend runs on port 3015, Web on port 5184 by default 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 4. **Storage**: Uses MinIO/S3 for contact photos via @mana/shared-storage
5. **Manacore Integration**: Contacts can be linked to Organizations and Teams 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. &copy; {currentYear} ManaContacts. Alle Rechte vorbehalten.
</p> </p>
<p class="text-sm text-gray-500"> <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> </p>
</div> </div>
</div> </div>

View file

@ -2,7 +2,7 @@
"name": "contacts", "name": "contacts",
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"description": "Contacts App - Contact Management with Manacore Integration", "description": "Contacts App - Contact Management with Mana Integration",
"scripts": { "scripts": {
"dev": "pnpm run --filter=@contacts/* --parallel dev", "dev": "pnpm run --filter=@contacts/* --parallel dev",
"dev:server": "pnpm --filter @contacts/server 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 | | **Backend** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 | | **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Mobile** | React Native 0.76 + Expo SDK 52, NativeWind | | **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) | | **AI** | Azure OpenAI (GPT-4.1), Google Gemini (Pro, Flash) |
| **i18n** | svelte-i18n (DE, EN) | | **i18n** | svelte-i18n (DE, EN) |
@ -187,7 +187,7 @@ pnpm setup:db:context # Create DB + push schema
```env ```env
NODE_ENV=development NODE_ENV=development
PORT=3020 PORT=3020
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/context DATABASE_URL=postgresql://mana:devpassword@localhost:5432/context
MANA_AUTH_URL=http://localhost:3001 MANA_AUTH_URL=http://localhost:3001
AZURE_OPENAI_API_KEY=your-key AZURE_OPENAI_API_KEY=your-key
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/ AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
@ -202,7 +202,7 @@ PUBLIC_MANA_AUTH_URL=http://localhost:3001
## Important Patterns ## 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 2. **Svelte 5 runes** - `$state`, `$derived`, `$effect` throughout
3. **Server-side AI keys** - API keys only on backend, never in frontend 3. **Server-side AI keys** - API keys only on backend, never in frontend
4. **Auto word/token count** - Backend calculates on create/update 4. **Auto word/token count** - Backend calculates on create/update

View file

@ -7,9 +7,9 @@ export default defineConfig({
site: 'https://docs.mana.how', site: 'https://docs.mana.how',
integrations: [ integrations: [
starlight({ starlight({
title: 'Manacore Docs', title: 'Mana Docs',
description: 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: { logo: {
light: './src/assets/logo-light.svg', light: './src/assets/logo-light.svg',
dark: './src/assets/logo-dark.svg', dark: './src/assets/logo-dark.svg',

View file

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

View file

@ -7,7 +7,7 @@ import { Aside, Tabs, TabItem, Steps } from '@astrojs/starlight/components';
# Authentication # 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 ## Overview
@ -36,8 +36,8 @@ Mana Core Auth uses **EdDSA (Ed25519)** for JWT signing:
"role": "user", "role": "user",
"sid": "session-uuid", "sid": "session-uuid",
"exp": 1764606251, "exp": 1764606251,
"iss": "manacore", "iss": "mana",
"aud": "manacore" "aud": "mana"
} }
``` ```
@ -48,18 +48,18 @@ Mana Core Auth uses **EdDSA (Ed25519)** for JWT signing:
| `role` | User role (`user`, `admin`) | | `role` | User role (`user`, `admin`) |
| `sid` | Session ID for invalidation | | `sid` | Session ID for invalidation |
| `exp` | Expiration timestamp | | `exp` | Expiration timestamp |
| `iss` | Issuer (`manacore`) | | `iss` | Issuer (`mana`) |
| `aud` | Audience (`manacore`) | | `aud` | Audience (`mana`) |
## Backend Integration ## Backend Integration
### Option 1: Simple Auth Only ### Option 1: Simple Auth Only
Use `@manacore/shared-nestjs-auth` for JWT validation: Use `@mana/shared-nestjs-auth` for JWT validation:
```typescript ```typescript
// app.module.ts // app.module.ts
import { JwtAuthModule } from '@manacore/shared-nestjs-auth'; import { JwtAuthModule } from '@mana/shared-nestjs-auth';
@Module({ @Module({
imports: [ imports: [
@ -73,7 +73,7 @@ export class AppModule {}
```typescript ```typescript
// controller.ts // controller.ts
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@mana/shared-nestjs-auth';
@Controller('api') @Controller('api')
@UseGuards(JwtAuthGuard) @UseGuards(JwtAuthGuard)
@ -140,7 +140,7 @@ export class ApiController {
```typescript ```typescript
// src/lib/auth.ts // src/lib/auth.ts
import { createAuthService } from '@manacore/shared-auth'; import { createAuthService } from '@mana/shared-auth';
export const auth = createAuthService({ export const auth = createAuthService({
authUrl: import.meta.env.PUBLIC_MANA_AUTH_URL, authUrl: import.meta.env.PUBLIC_MANA_AUTH_URL,
@ -157,7 +157,7 @@ if (data) {
```typescript ```typescript
// src/services/auth.ts // src/services/auth.ts
import { createAuthService } from '@manacore/shared-auth'; import { createAuthService } from '@mana/shared-auth';
export const auth = createAuthService({ export const auth = createAuthService({
authUrl: process.env.EXPO_PUBLIC_MANA_AUTH_URL, authUrl: process.env.EXPO_PUBLIC_MANA_AUTH_URL,
@ -277,7 +277,7 @@ Never enable auth bypass in production!
| Backend | Package | Port | | Backend | Package | Port |
|---------|---------|------| |---------|---------|------|
| Chat | `@mana-core/nestjs-integration` | 3002 | | Chat | `@mana-core/nestjs-integration` | 3002 |
| Picture | `@manacore/shared-nestjs-auth` | 3006 | | Picture | `@mana/shared-nestjs-auth` | 3006 |
| Zitare | `@manacore/shared-nestjs-auth` | 3007 | | Zitare | `@mana/shared-nestjs-auth` | 3007 |
| Cards | `@mana-core/nestjs-integration` | 3009 | | 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) 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Backend Architecture # 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 ## Project Structure
@ -75,7 +75,7 @@ import {
HttpCode, HttpCode,
HttpStatus, HttpStatus,
} from '@nestjs/common'; } 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 { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto'; import { CreateUserDto } from './dto/create-user.dto';
@ -109,7 +109,7 @@ Services contain business logic and database operations:
```typescript ```typescript
import { Injectable, NotFoundException } from '@nestjs/common'; import { Injectable, NotFoundException } from '@nestjs/common';
import { Inject } 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 { eq, and } from 'drizzle-orm';
import { users } from '../drizzle/schema'; import { users } from '../drizzle/schema';

View file

@ -1,13 +1,13 @@
--- ---
title: Mobile (Expo) 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Mobile Architecture # 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 ## Project Structure

View file

@ -1,13 +1,13 @@
--- ---
title: Architecture Overview 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'; import { Card, CardGrid } from '@astrojs/starlight/components';
# Architecture Overview # 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 ## System Architecture

View file

@ -7,7 +7,7 @@ import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Search Service # 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 ## Architecture

View file

@ -1,13 +1,13 @@
--- ---
title: Storage 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'; import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Storage # 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 ## Architecture
@ -50,7 +50,7 @@ import {
createPictureStorage, createPictureStorage,
generateUserFileKey, generateUserFileKey,
getContentType, getContentType,
} from '@manacore/shared-storage'; } from '@mana/shared-storage';
const storage = createPictureStorage(); const storage = createPictureStorage();
@ -101,7 +101,7 @@ import {
createChatStorage, createChatStorage,
createCardsStorage, createCardsStorage,
createContactsStorage, createContactsStorage,
} from '@manacore/shared-storage'; } from '@mana/shared-storage';
// Each creates a client configured for that bucket // Each creates a client configured for that bucket
const pictureStorage = createPictureStorage(); const pictureStorage = createPictureStorage();
@ -111,7 +111,7 @@ const chatStorage = createChatStorage();
### Custom Storage Client ### Custom Storage Client
```typescript ```typescript
import { createStorageClient } from '@manacore/shared-storage'; import { createStorageClient } from '@mana/shared-storage';
const customStorage = createStorageClient({ const customStorage = createStorageClient({
bucket: 'my-custom-bucket', bucket: 'my-custom-bucket',

View file

@ -1,13 +1,13 @@
--- ---
title: Web (SvelteKit) 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Web Architecture # 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 ## 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 | | Chat | `@chat/landing` | `chat-landing` | chat.mana.how |
| Picture | `@picture/landing` | `picture-landing` | picture.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 | | Cards | `@cards/landing` | `cards-landing` | cards.mana.how |
| Zitare | `@zitare/landing` | `zitare-landing` | zitare.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 ## Quick Deploy

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,13 @@
--- ---
title: Docker Setup 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'; import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components';
# Docker Setup # Docker Setup
Manacore uses Docker for local development services and production deployment. Mana uses Docker for local development services and production deployment.
## Overview ## Overview

View file

@ -1,13 +1,13 @@
--- ---
title: Environment Variables 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'; import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components';
# Environment Variables # 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 ## Quick Start
@ -75,8 +75,8 @@ The generator reads `.env.development` and creates app-specific `.env` files wit
| `MANA_AUTH_DATABASE_URL` | PostgreSQL connection | - | | `MANA_AUTH_DATABASE_URL` | PostgreSQL connection | - |
| `JWT_ACCESS_TOKEN_EXPIRY` | Access token TTL | `15m` | | `JWT_ACCESS_TOKEN_EXPIRY` | Access token TTL | `15m` |
| `JWT_REFRESH_TOKEN_EXPIRY` | Refresh token TTL | `7d` | | `JWT_REFRESH_TOKEN_EXPIRY` | Refresh token TTL | `7d` |
| `JWT_ISSUER` | JWT issuer claim | `manacore` | | `JWT_ISSUER` | JWT issuer claim | `mana` |
| `JWT_AUDIENCE` | JWT audience claim | `manacore` | | `JWT_AUDIENCE` | JWT audience claim | `mana` |
| `STRIPE_SECRET_KEY` | Stripe secret key | - | | `STRIPE_SECRET_KEY` | Stripe secret key | - |
| `CREDITS_SIGNUP_BONUS` | Credits on signup | `150` | | `CREDITS_SIGNUP_BONUS` | Credits on signup | `150` |
| `CREDITS_DAILY_FREE` | Daily free credits | `5` | | `CREDITS_DAILY_FREE` | Daily free credits | `5` |

View file

@ -1,6 +1,6 @@
--- ---
title: Local Development 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'; 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: 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 - storage, mail, moodlit, finance, inventory, techbase, voxel_lava, figgos
### Setup Script ### Setup Script
@ -104,13 +104,13 @@ Some apps don't have backends or don't use Drizzle:
| App | Reason | | App | Reason |
|-----|--------| |-----|--------|
| manacore | No backend (uses other services) | | mana | No backend (uses other services) |
| cards | Backend exists but no db:push | | cards | Backend exists but no db:push |
For these, use the regular dev commands: For these, use the regular dev commands:
```bash ```bash
pnpm dev:manacore:web pnpm dev:mana:web
pnpm dev:cards:app pnpm dev:cards:app
``` ```
@ -128,7 +128,7 @@ If you see `database "xxx" does not exist`:
</TabItem> </TabItem>
<TabItem label="Option 2: Manual"> <TabItem label="Option 2: Manual">
```bash ```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> </TabItem>
</Tabs> </Tabs>
@ -196,12 +196,12 @@ If your backend uses Drizzle ORM:
1. **Add database to Docker init** (`docker/init-db/01-create-databases.sql`): 1. **Add database to Docker init** (`docker/init-db/01-create-databases.sql`):
```sql ```sql
CREATE DATABASE IF NOT EXISTS newproject; 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`**: 2. **Add DATABASE_URL to `.env.development`**:
```env ```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. 3. **Update `scripts/generate-env.mjs`** to generate the backend `.env` file.

View file

@ -1,13 +1,13 @@
--- ---
title: Testing 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'; import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
# Testing # 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 ## Quick Start
@ -47,7 +47,7 @@ src/
```typescript ```typescript
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { UsersService } from './users.service'; import { UsersService } from './users.service';
import { DRIZZLE } from '@manacore/shared-drizzle'; import { DRIZZLE } from '@mana/shared-drizzle';
describe('UsersService', () => { describe('UsersService', () => {
let service: UsersService; let service: UsersService;

View file

@ -1,17 +1,17 @@
--- ---
title: Introduction 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'; 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) - **Shared Authentication** via Mana Core Auth (EdDSA JWT)
- **Unified Database Patterns** with Drizzle ORM and PostgreSQL - **Unified Database Patterns** with Drizzle ORM and PostgreSQL

View file

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

View file

@ -1,13 +1,13 @@
--- ---
title: Quick Start 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'; import { Steps, Tabs, TabItem, Code } from '@astrojs/starlight/components';
# Quick Start # 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 ## Prerequisites
@ -24,8 +24,8 @@ Before you begin, ensure you have:
1. **Clone the repository** 1. **Clone the repository**
```bash ```bash
git clone https://github.com/manacore/manacore-monorepo.git git clone https://github.com/mana/mana-monorepo.git
cd manacore-monorepo cd mana-monorepo
``` ```
2. **Install dependencies** 2. **Install dependencies**

View file

@ -1,6 +1,6 @@
--- ---
title: Code Style 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
@ -188,7 +188,7 @@ import { Injectable } from '@nestjs/common';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
// 3. Monorepo packages // 3. Monorepo packages
import { JwtAuthGuard } from '@manacore/shared-nestjs-auth'; import { JwtAuthGuard } from '@mana/shared-nestjs-auth';
// 4. Relative imports - parent directories // 4. Relative imports - parent directories
import { AppModule } from '../app.module'; import { AppModule } from '../app.module';

View file

@ -1,13 +1,13 @@
--- ---
title: Database Patterns 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Database Patterns # 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 ## Schema Design

View file

@ -1,13 +1,13 @@
--- ---
title: Design & UX 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Design & UX # 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 ## Design Principles

View file

@ -1,13 +1,13 @@
--- ---
title: Error Handling 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'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
# Error Handling # 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 ## Result Type Pattern

View file

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

View file

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

View file

@ -1,13 +1,13 @@
--- ---
title: Projects 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'; import { Card, CardGrid, Badge } from '@astrojs/starlight/components';
# Projects # Projects
Manacore contains multiple interconnected applications, each serving a specific purpose. Mana contains multiple interconnected applications, each serving a specific purpose.
## Active Projects ## Active Projects

View file

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

View file

@ -6,7 +6,7 @@ export default {
theme: { theme: {
extend: { extend: {
colors: { colors: {
// Manacore brand colors // Mana brand colors
accent: { accent: {
50: '#f0f9ff', 50: '#f0f9ff',
100: '#e0f2fe', 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) # Deployed via GitHub Actions (Direct Upload)
name = "mana-docs" 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 | | Frontend | SvelteKit 2, Svelte 5 (runes), Tailwind CSS 4 |
| State | Svelte 5 runes ($state, $derived) with localStorage persistence | | State | Svelte 5 runes ($state, $derived) with localStorage persistence |
| Icons | @manacore/shared-icons (Phosphor) | | Icons | @mana/shared-icons (Phosphor) |
| PWA | @vite-pwa/sveltekit + Workbox | | PWA | @vite-pwa/sveltekit + Workbox |
| i18n | svelte-i18n (de, en) | | 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_URL=your_supabase_url
PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key 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`): **Mobile App** (`apps/mobile/.env`):

View file

@ -178,7 +178,7 @@ Both apps require Supabase configuration. Create `.env` files based on `.env.exa
```env ```env
PUBLIC_SUPABASE_URL=your_supabase_project_url PUBLIC_SUPABASE_URL=your_supabase_project_url
PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key 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 PUBLIC_APP_NAME=Mana Web
NODE_ENV=development NODE_ENV=development
``` ```

View file

@ -7,7 +7,7 @@ _Fokus auf das vernetzte Ökosystem und die Vision eines nachhaltigen Software-M
### 1. Hero Section ### 1. Hero Section
**Headline:** "Ein Ökosystem. Unendliche Möglichkeiten." **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:** **CTA Buttons:**
@ -57,7 +57,7 @@ _Fokus auf das vernetzte Ökosystem und die Vision eines nachhaltigen Software-M
- Dropdown: "Nutzungsintensität" - Dropdown: "Nutzungsintensität"
- Live-Berechnung zeigt: - Live-Berechnung zeigt:
- Klassische Lizenzen: X€/Monat - Klassische Lizenzen: X€/Monat
- Mit Manacore: Y€/Monat - Mit Mana: Y€/Monat
- Deine Ersparnis: Z% - Deine Ersparnis: Z%
**Testimonial-Box:** **Testimonial-Box:**
@ -131,7 +131,7 @@ _Fokus auf Innovation, Nachhaltigkeit und europäische Unabhängigkeit_
### 1. Hero Section ### 1. Hero Section
**Headline:** "Die Zukunft der Software ist nachhaltig" **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:** **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 <Image
placeholder="dashboard" placeholder="dashboard"
alt="Manacore Dashboard" alt="Mana Dashboard"
width={600} width={600}
height={400} height={400}
rounded rounded

View file

@ -234,7 +234,7 @@ function statusColor(status: string) {
<!-- Bottom bar --> <!-- Bottom bar -->
<div class="footer-bottom"> <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> <span class="footer-domain">mana.how</span>
</div> </div>
</Container> </Container>

View file

@ -18,7 +18,7 @@ const { navLinks } = Astro.props;
<div <div
class="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900" 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 <button
id="mobile-menu-close" 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" 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 --> <!-- Logo -->
<a href={getLocalizedRoute('/', lang)} class="flex items-center gap-2"> <a href={getLocalizedRoute('/', lang)} class="flex items-center gap-2">
<img src="/icons/mana-icon.svg" alt="Mana Logo" class="w-8 h-8" /> <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> </a>
<!-- Desktop Navigation --> <!-- Desktop Navigation -->

View file

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

View file

@ -484,7 +484,7 @@ Nach Analyse aller Optionen ist die Empfehlung:
```bash ```bash
# Auf dem Server # Auf dem Server
ssh mana-server ssh mana-server
cd ~/projects/manacore-monorepo cd ~/projects/mana-monorepo
git pull git pull
./scripts/mac-mini/deploy.sh ./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' description: 'Ein Pay-as-you-use Modell für KI-gestützte Transkription und Analyse in Memoro'
order: 1 order: 1
icon: 'mdi:information' icon: 'mdi:information'
@ -7,11 +7,11 @@ publishedAt: 2024-01-01
updatedAt: 2024-01-15 updatedAt: 2024-01-15
--- ---
# Manacore: Ein nachhaltiges KI-Ökosystem für Europa # Mana: Ein nachhaltiges KI-Ökosystem für Europa
## Vision und Mission ## 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 ### Das Ökosystem
@ -81,13 +81,13 @@ Das Mana-System kombiniert die Vorteile von Abonnements mit der Fairness verbrau
**Unternehmen mit 50 Mitarbeitern:** **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 - **Klassische Lizenzen**: 50 × 19,99€ = 999,50€/Monat
- **Ersparnis**: 90% - **Ersparnis**: 90%
**Universitäres Forschungsprojekt (15 Forscher, 1 Jahr):** **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€ - **Klassische Lizenzen**: 15 × 9,99€ × 12 Monate = 1.798,20€
- **Ersparnis**: 89% - **Ersparnis**: 89%
@ -122,7 +122,7 @@ Das Mana-System kombiniert die Vorteile von Abonnements mit der Fairness verbrau
## Partizipation und Community ## Partizipation und Community
Jeder kann am Manacore-Ökosystem teilhaben: Jeder kann am Mana-Ökosystem teilhaben:
- **Als Nutzer** der verschiedenen Tools und Apps - **Als Nutzer** der verschiedenen Tools und Apps
- **Durch Analytics-Opt-in** für besseres Feedback und Optimierung - **Durch Analytics-Opt-in** für besseres Feedback und Optimierung
@ -146,4 +146,4 @@ Jeder kann am Manacore-Ökosystem teilhaben:
## Das Ziel ## 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 ### 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 - Jede App unterstützt Menschen bei spezifischen Aufgaben
- Verbunden entfalten sie eine ganz neue Kraft - 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 - Aufbau eines neuen Software-Ökosystems für Europa
- Reduzierung der Abhängigkeit von US-amerikanischen Technologien - Reduzierung der Abhängigkeit von US-amerikanischen Technologien
- Langfristiges Ziel: Komplette technologische Unabhängigkeit - 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 ### Einheitliche Vorteile für Nutzer

View file

@ -80,7 +80,7 @@ stats:
## Zusammenfassung ## 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) ## 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/events/expand` (POST) — RRULE Expansion mit DoS-Schutz
- `/api/v1/sync/google` (POST) — Google Calendar OAuth - `/api/v1/sync/google` (POST) — Google Calendar OAuth
- `/api/v1/import/ics` (POST) — ICS-Datei Parsing und Import - `/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 - Zod-Validation für alle Eingaben
- GDPR-konform (Daten via mana-sync) - 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 - Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip - Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT) — vollständig inkl. Settings, Toasts, Error Pages - 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:** **Lücken:**
@ -178,7 +178,7 @@ Die Calendar-App ist eine der **ausgereiftesten Apps im Monorepo**. Seit dem let
**Stärken:** **Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware - JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware - Rate Limiting Middleware
- CORS konfiguriert - CORS konfiguriert
- RRULE DoS-Schutz - 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 | | Multi-Event | Fehlte | Splitting + Duration Estimation |
| Elevation | Fehlte | Konsistentes UI-System | | Elevation | Fehlte | Konsistentes UI-System |
| Todo-Integration | Vorhanden | Entfernt (Separation of Concerns) | | 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) | | Score | 97 → | **93** (Backend-Tests verloren, Test-Reduktion) |
## Top-3 Empfehlungen ## 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): - ~6 API-Endpoints (server-seitige Operationen):
- Health Check - Health Check
- Avatar Upload (S3/MinIO via @manacore/shared-storage) - Avatar Upload (S3/MinIO via @mana/shared-storage)
- vCard Import (Parsing + Validation) - 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 - S3 Storage Integration für Contact-Fotos
- CRUD delegiert an mana-sync (Local-First) - CRUD delegiert an mana-sync (Local-First)
@ -107,7 +107,7 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
**Stärken:** **Stärken:**
- 15 Routes, 39 Komponenten (27 Standard + 12 Skeleton), 14 Svelte 5 Stores - 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 - **Cmd+K Spotlight** für schnelle Navigation und Aktionen
- **NL Quick-Input** mit Client-seitiger Duplikaterkennung (Fuzzy Matching) - **NL Quick-Input** mit Client-seitiger Duplikaterkennung (Fuzzy Matching)
- Context Menus (Alphabet-Navigation, Grid-View) - 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 - Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip - Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT) - 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) - SyncIndicator UI (visueller Sync-Status)
**Lücken:** **Lücken:**
@ -175,7 +175,7 @@ Contacts ist eine **vollständige Kontaktverwaltung** mit Avatar Upload, vCard I
**Stärken:** **Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware - JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware - Rate Limiting Middleware
- CORS konfiguriert - CORS konfiguriert
- Security Headers (CSP, X-Frame-Options) - 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) | | E2E Tests | Keine | 3 Playwright Suites (auth, contacts, tags) |
| PWA | Nicht konfiguriert | Aktiv (@vite-pwa/sveltekit) | | PWA | Nicht konfiguriert | Aktiv (@vite-pwa/sveltekit) |
| Landing Page | Fehlte | Astro Landing Page | | Landing Page | Fehlte | Astro Landing Page |
| Local-First | Nicht vorhanden | @manacore/local-store aktiv | | Local-First | Nicht vorhanden | @mana/local-store aktiv |
| Spiral-Viz | Nicht vorhanden | @manacore/spiral-db integriert | | Spiral-Viz | Nicht vorhanden | @mana/spiral-db integriert |
| Spotlight | Fehlte | Cmd+K Actions | | Spotlight | Fehlte | Cmd+K Actions |
| NL Quick-Input | Fehlte | Mit Fuzzy Duplikaterkennung | | NL Quick-Input | Fehlte | Mit Fuzzy Duplikaterkennung |
| SyncIndicator | Fehlte | Visueller Sync-Status | | 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 date: 2026-03-19
app: 'manacore' app: 'manacore'
author: 'Till Schneider' author: 'Till Schneider'
tags: ['audit', 'manacore', 'production-readiness', 'platform'] tags: ['audit', 'mana', 'production-readiness', 'platform']
score: 88 score: 88
scores: scores:
backend: 55 backend: 55
@ -158,7 +158,7 @@ Mana ist das **Herzstück des Monorepos** - das Multi-App Ecosystem Dashboard mi
**Stärken:** **Stärken:**
- Proper JWT Integration via @manacore/shared-auth - Proper JWT Integration via @mana/shared-auth
- Token-Manager mit Auto-Refresh - Token-Manager mit Auto-Refresh
- Cross-Domain SSO via shared Session Cookies (.mana.how) - Cross-Domain SSO via shared Session Cookies (.mana.how)
- Route Guards in hooks.server.ts - 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:** **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 - CurrentUser Decorator
- ParseUUIDPipe für Input Validation - ParseUUIDPipe für Input Validation
- ThrottlerModule Rate Limiting (100 req/60s) - ThrottlerModule Rate Limiting (100 req/60s)

View file

@ -80,7 +80,7 @@ stats:
## Zusammenfassung ## 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) ## 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` - 3 fokussierte Route-Module: `rrule.ts`, `reminders.ts`, `admin.ts`
- 14 API-Endpoints (server-seitige Compute-Operationen) - 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) - RRULE Expansion mit DoS-Schutz (max 5000 Occurrences, 10-Jahres-Limit)
- Background Reminder Worker mit Push/Email-Notifications via mana-notify - Background Reminder Worker mit Push/Email-Notifications via mana-notify
- GDPR Admin-Endpoints (GET/DELETE User Data) - 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 - **Paper-UI Design** — physisches Notizbuch-Feeling mit Animationen
- **Fokus-Board** als vereinheitlichte Einzelansicht - **Fokus-Board** als vereinheitlichte Einzelansicht
- Kanban-Board mit Subtask Drag & Drop - 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 - **Cmd+K Spotlight** für schnelle Navigation und Aktionen
- Inline Title Editing direkt in der Liste - Inline Title Editing direkt in der Liste
- Auto-Save mit 500ms Debounce - 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 - Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip - Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT) - 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:** **Lücken:**
@ -177,7 +177,7 @@ Todo ist eine **feature-reiche Aufgabenverwaltung** mit Paper-UI Design, Fokus-B
**Stärken:** **Stärken:**
- JWT Auth via @manacore/shared-hono authMiddleware - JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware - Rate Limiting Middleware
- CORS konfiguriert - CORS konfiguriert
- RRULE DoS-Schutz (max 5000 Occurrences, 10-Jahres-Limit) - 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 | | Reminders | Server-seitig (NestJS) | Background Worker + mana-notify |
| Completion | Standard | Animated + "Heute erledigt" | | Completion | Standard | Animated + "Heute erledigt" |
| Kanban | Basis | Subtask Drag & Drop | | 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) | | Score | 96 → | **93** (Backend-Tests verloren) |
## Top-3 Empfehlungen ## 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 - **Hono + Bun**: ~120 LOC Compute-Server statt ~3.500 LOC NestJS
- **~50ms Cold Start**: statt 2-5 Sekunden - **~50ms Cold Start**: statt 2-5 Sekunden
- **~30MB RAM**: statt ~200MB pro Service - **~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) ### UX (+5-10 Punkte)
- **Time to Interactive**: < 500ms (war 3-5s mit Login) - **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) ## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store) - IndexedDB via Dexie.js (@mana/local-store)
- 2 Collections: calculations, savedFormulas - 2 Collections: calculations, savedFormulas
- Live Queries für reaktive Updates - Live Queries für reaktive Updates
- Sync-fähig über mana-sync - 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) ## 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) - 3 Collections: cities (slug/country/name), locations (cityId/category/name), favorites (locationId)
- Live Queries mit Dexie liveQuery - Live Queries mit Dexie liveQuery
- Sync über mana-sync WebSocket - 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) ## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store) - IndexedDB via Dexie.js (@mana/local-store)
- 4 Collections: worlds, areas, items, inventories - 4 Collections: worlds, areas, items, inventories
- Item-Persistenz: Sprites, Properties, Behaviors in IndexedDB - Item-Persistenz: Sprites, Properties, Behaviors in IndexedDB
- Inventory-Persistenz: Slot-Zuweisungen pro Player - 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) ## 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 - 6 Collections: clients, projects, timeEntries, tags, templates, settings
- Compound-Indizes (date+projectId) - Compound-Indizes (date+projectId)
- Live Queries mit useLiveQueryWithDefault() - 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:** **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 - Zwei spezialisierte Server: Main-Server (3015) + Audio-Server (3016) mit Fire-and-Forget-Pattern
- Service-Key-Auth für Server-to-Server-Kommunikation - Service-Key-Auth für Server-to-Server-Kommunikation
- Credit-System mit Validierung vor Verarbeitung - 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) - Svelte 5 Runes korrekt verwendet ($state, $derived, $props)
- 79 Komponenten mit sauberem Tailwind CSS v4 - 79 Komponenten mit sauberem Tailwind CSS v4
- Dark/Light Mode mit Flash-Prevention - 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) - Keyboard-Shortcuts (Ctrl+1-9 Navigation)
- Loading-Skeletons für alle Seiten - Loading-Skeletons für alle Seiten
- Local-First mit Dexie.js und Guest-Mode - 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:** **Stärken:**
- JWT-Auth via @manacore/shared-hono Middleware - JWT-Auth via @mana/shared-hono Middleware
- Service-Key-Auth für interne Server-Kommunikation - Service-Key-Auth für interne Server-Kommunikation
- CORS korrekt konfiguriert mit Origin-Whitelist - CORS korrekt konfiguriert mit Origin-Whitelist
- RLS-Policies in Supabase - 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) | | **Page View Tracking** | Umami-Script via `hooks.server.ts` injiziert (automatische Page Views) |
| **Custom Events** | App-spezifische Events implementiert (z.B. `TodoEvents`, `ChatEvents`) | | **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` | | **Landing Tracking** | Landing Page Events (CTA-Clicks, Pricing Views) via `Analytics.astro` |
| **Public Dashboard** | Öffentliches Dashboard auf `stats.mana.how` konfiguriert | | **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 | | **Icon Consistency** | 10% | Verhältnis Phosphor-Icon-Imports vs. verbleibende inline SVGs |
| **i18n Coverage** | 10% | Apps mit `svelte-i18n` Internationalisierung | | **i18n Coverage** | 10% | Apps mit `svelte-i18n` Internationalisierung |
| **Style Consistency** | 10% | Apps mit Theme-CSS-Variablen + Tailwind CSS | | **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 | | **Error Boundaries** | 8% | Apps mit `+error.svelte` Error Page + Offline Page |
| **TypeScript Strict** | 7% | Apps mit `strict: true` in tsconfig | | **TypeScript Strict** | 7% | Apps mit `strict: true` in tsconfig |
| **Test Coverage** | 7% | Apps mit mindestens einem Unit- oder E2E-Test | | **Test Coverage** | 7% | Apps mit mindestens einem Unit- oder E2E-Test |
@ -278,8 +278,8 @@ Jede Metrik ist ein Prozentwert (0-100%):
| Metrik | Aktion | | Metrik | Aktion |
| ------------------- | ------------------------------------------------------------------------------- | | ------------------- | ------------------------------------------------------------------------------- |
| Shared Packages ↑ | Fehlende Core-Packages in `package.json` hinzufügen | | Shared Packages ↑ | Fehlende Core-Packages in `package.json` hinzufügen |
| Icon Consistency ↑ | Inline SVGs durch `@manacore/shared-icons` Phosphor-Komponenten ersetzen | | Icon Consistency ↑ | Inline SVGs durch `@mana/shared-icons` Phosphor-Komponenten ersetzen |
| Modal Consistency ↑ | Custom-Modals auf `<Modal>` aus `@manacore/shared-ui` migrieren | | Modal Consistency ↑ | Custom-Modals auf `<Modal>` aus `@mana/shared-ui` migrieren |
| Error Handling ↑ | `instanceof Error` durch shared `getErrorMessage()` Helper ersetzen | | Error Handling ↑ | `instanceof Error` durch shared `getErrorMessage()` Helper ersetzen |
| Error Boundaries ↑ | `+error.svelte` in jeder App anlegen | | Error Boundaries ↑ | `+error.svelte` in jeder App anlegen |
| Test Coverage ↑ | Mindestens einen Unit-Test pro App schreiben | | Test Coverage ↑ | Mindestens einen Unit-Test pro App schreiben |

View file

@ -11,13 +11,13 @@ lang: de
**KI für alle zugänglich machen.** **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 ## Mission
**Ein langfristig nachhaltiges Software-Ökosystem mit KI im Kern aufbauen.** **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 ### 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 - Als Nutzer der verschiedenen Tools
- Durch aktives Feedback über verschiedene Kanäle - 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 ## 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