chore: remove all NestJS backend references, replace with Hono/Bun

- Delete nestjs-backend.md guideline (replaced by hono-server.md)
- Delete Dockerfile.nestjs-base and Dockerfile.nestjs templates
- Delete stale BACKEND_ARCHITECTURE.md doc (NestJS-era, obsolete)
- Update CLAUDE.md, GUIDELINES.md, authentication.md to Hono/Bun first
- Update all app CLAUDE.md files: backend/ → server/, NestJS → Hono+Bun
- Update all app package.json files: @*/backend → @*/server
- Update docs: LOCAL_DEVELOPMENT, PORT_SCHEMA, ENVIRONMENT_VARIABLES,
  DATABASE_MIGRATIONS, MAC_MINI_SERVER, PROJECT_OVERVIEW
- Update scripts: generate-env.mjs, setup-databases.sh, build-app.sh
- Update CI/CD: cd-macmini.yml backend → server paths
- Update Astro docs site: @chat/backend → @chat/server

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-31 16:52:25 +02:00
parent 708299b35e
commit ab387b9b3d
43 changed files with 598 additions and 2398 deletions

View file

@ -6,7 +6,7 @@
| App | Port | URL |
|-----|------|-----|
| Backend | 3014 | http://localhost:3014 |
| Server | 3014 | http://localhost:3014 |
| Web App | 5179 | http://localhost:5179 |
| Landing Page | 4322 | http://localhost:4322 |
| Mobile | 8081 | Expo Go |
@ -16,7 +16,7 @@
```
apps/calendar/
├── apps/
│ ├── backend/ # NestJS API server (@calendar/backend)
│ ├── server/ # Hono/Bun compute server (@calendar/server)
│ │ └── src/
│ │ ├── main.ts
│ │ ├── app.module.ts
@ -114,11 +114,12 @@ apps/calendar/
pnpm calendar:dev # Run all calendar apps
# Einzelne Apps starten
pnpm dev:calendar:backend # Start backend server (port 3014)
pnpm dev:calendar:server # Start server (port 3014)
pnpm dev:calendar:web # Start web app (port 5179)
pnpm dev:calendar:landing # Start landing page (port 4322)
pnpm dev:calendar:mobile # Start mobile app [TODO]
pnpm dev:calendar:app # Start web + backend together
pnpm dev:calendar:app # Start web + server together
pnpm dev:calendar:local # Start web + sync (no auth needed)
# Datenbank
pnpm calendar:db:push # Push schema to database
@ -126,7 +127,7 @@ pnpm calendar:db:studio # Open Drizzle Studio
pnpm calendar:db:seed # Seed initial data
```
### Backend (apps/calendar/apps/backend)
### Server (apps/calendar/apps/server)
```bash
pnpm dev # Start with hot reload
@ -157,7 +158,7 @@ pnpm preview # Preview build
| Layer | Technology |
|-------|------------|
| **Backend** | NestJS 10, Drizzle ORM, PostgreSQL |
| **Server** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Landing** | Astro 5.x, Tailwind CSS |
| **Mobile** | React Native 0.81 + Expo SDK 54, NativeWind [TODO] |
@ -224,7 +225,7 @@ eventsStore.updateEvent(id, data)
eventsStore.deleteEvent(id)
```
### Backend API Endpoints
### Server API Endpoints
#### Health
@ -400,7 +401,7 @@ FREQ=WEEKLY;UNTIL=20241231T235959Z # Wöchentlich bis Ende 2024
## Environment Variables
### Backend (.env)
### Server (.env)
```env
NODE_ENV=development
@ -544,11 +545,11 @@ pnpm calendar:db:push
### 2. Apps starten
```bash
# Backend + Web zusammen
# Server + Web zusammen
pnpm dev:calendar:app
# Oder einzeln:
pnpm dev:calendar:backend # Terminal 1
pnpm dev:calendar:server # Terminal 1
pnpm dev:calendar:web # Terminal 2
pnpm dev:calendar:landing # Terminal 3 (optional)
```
@ -653,7 +654,7 @@ pnpm --filter @calendar/web test:e2e
1. **Authentication**: Nutzt Mana Core Auth (JWT im Authorization Header)
2. **Database**: PostgreSQL mit Drizzle ORM (Port 5432)
3. **Port**: Backend läuft auf Port 3014
3. **Port**: Server läuft auf Port 3014
4. **Recurrence**: Verwendet RFC 5545 RRULE Format
5. **i18n**: 5 Sprachen unterstützt (DE, EN, FR, ES, IT)
6. **Theme**: Ocean-Theme (Blautöne) als Standard

View file

@ -5,13 +5,13 @@
"description": "Calendar App - Personal and Shared Calendars with CalDAV/iCal Sync",
"scripts": {
"dev": "pnpm run --filter=@calendar/* --parallel dev",
"dev:backend": "pnpm --filter @calendar/backend dev",
"dev:server": "pnpm --filter @calendar/server dev",
"dev:web": "pnpm --filter @calendar/web dev",
"dev:landing": "pnpm --filter @calendar/landing dev",
"dev:mobile": "pnpm --filter @calendar/mobile dev",
"db:push": "pnpm --filter @calendar/backend db:push",
"db:studio": "pnpm --filter @calendar/backend db:studio",
"db:seed": "pnpm --filter @calendar/backend db:seed"
"db:push": "pnpm --filter @calendar/server db:push",
"db:studio": "pnpm --filter @calendar/server db:studio",
"db:seed": "pnpm --filter @calendar/server db:seed"
},
"devDependencies": {
"typescript": "^5.9.3"

View file

@ -5,7 +5,7 @@
```
apps/chat/
├── apps/
│ ├── backend/ # NestJS API server (@chat/backend)
│ ├── server/ # Hono/Bun compute server (@chat/server)
│ ├── landing/ # Astro marketing landing page (@chat/landing)
│ ├── web/ # SvelteKit web application (@chat/web)
│ └── mobile/ # Expo/React Native mobile app (@chat/mobile)
@ -23,8 +23,9 @@ pnpm chat:dev # Run all chat apps
pnpm dev:chat:mobile # Start mobile app
pnpm dev:chat:web # Start web app
pnpm dev:chat:landing # Start landing page
pnpm dev:chat:backend # Start backend server
pnpm dev:chat:full # Start backend + web + auth together
pnpm dev:chat:server # Start server
pnpm dev:chat:local # Start web + sync (no auth needed)
pnpm dev:chat:full # Start server + web + auth together
```
### Mobile App (chat/apps/mobile)
@ -38,7 +39,7 @@ pnpm build:preview # Build preview version
pnpm build:prod # Build production version
```
### Backend (apps/chat/apps/backend)
### Server (apps/chat/apps/server)
```bash
pnpm start:dev # Start with hot reload
@ -70,13 +71,13 @@ pnpm preview # Preview production build
- **Mobile**: React Native 0.76.7 + Expo SDK 52, NativeWind, Expo Router
- **Web**: SvelteKit 2.x, Svelte 5, Tailwind CSS 4
- **Landing**: Astro 5.16, Tailwind CSS
- **Backend**: NestJS 10, OpenRouter AI + mana-llm (local), Drizzle ORM, PostgreSQL
- **Server**: Hono + Bun, OpenRouter AI + mana-llm (local), Drizzle ORM, PostgreSQL
- **Auth**: Mana Core Auth (JWT)
- **Types**: TypeScript 5.x
## Architecture
### Backend API Endpoints
### Server API Endpoints
| Endpoint | Method | Description |
| --------------------------------- | ------ | --------------------------- |
@ -91,7 +92,7 @@ pnpm preview # Preview production build
### Environment Variables
#### Backend (.env)
#### Server (.env)
```env
# Cloud AI models via OpenRouter (optional if using only local models)
@ -162,13 +163,13 @@ PUBLIC_BACKEND_URL=http://localhost:3002
```bash
# Add new models to existing database
pnpm --filter @chat/backend db:add-local-models
pnpm --filter @chat/server db:add-local-models
```
## Quick Start
1. **Get OpenRouter API key** at https://openrouter.ai/keys
2. **Create `.env`** in `apps/chat/apps/backend/`:
2. **Create `.env`** in `apps/chat/apps/server/`:
```env
OPENROUTER_API_KEY=sk-or-v1-xxx
DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat
@ -182,13 +183,13 @@ pnpm --filter @chat/backend db:add-local-models
```
4. **Seed database** (first time only):
```bash
pnpm --filter @chat/backend db:push
pnpm --filter @chat/backend db:seed
pnpm --filter @chat/server db:push
pnpm --filter @chat/server db:seed
```
## Important Notes
1. **Security**: API keys are stored in the backend 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)
3. **Database**: PostgreSQL with Drizzle ORM (uses shared Docker container)
4. **Deployment**: Backend runs on port 3002
4. **Deployment**: Server runs on port 3002

View file

@ -5,7 +5,7 @@
```
apps/contacts/
├── apps/
│ ├── backend/ # NestJS API server (@contacts/backend) - Port 3015
│ ├── server/ # Hono/Bun compute server (@contacts/server) - Port 3015
│ ├── landing/ # Astro marketing landing page (@contacts/landing)
│ ├── web/ # SvelteKit web application (@contacts/web) - Port 5184
│ └── mobile/ # Expo/React Native mobile app (@contacts/mobile)
@ -23,8 +23,9 @@ pnpm contacts:dev # Run all contacts apps
pnpm dev:contacts:mobile # Start mobile app
pnpm dev:contacts:web # Start web app
pnpm dev:contacts:landing # Start landing page
pnpm dev:contacts:backend # Start backend server
pnpm dev:contacts:app # Start web + backend together
pnpm dev:contacts:server # Start server
pnpm dev:contacts:app # Start web + server together
pnpm dev:contacts:local # Start web + sync (no auth needed)
```
### Mobile App (apps/contacts/apps/mobile)

View file

@ -5,13 +5,13 @@
"description": "Contacts App - Contact Management with Manacore Integration",
"scripts": {
"dev": "pnpm run --filter=@contacts/* --parallel dev",
"dev:backend": "pnpm --filter @contacts/backend dev",
"dev:server": "pnpm --filter @contacts/server dev",
"dev:web": "pnpm --filter @contacts/web dev",
"dev:landing": "pnpm --filter @contacts/landing dev",
"dev:mobile": "pnpm --filter @contacts/mobile dev",
"db:push": "pnpm --filter @contacts/backend db:push",
"db:studio": "pnpm --filter @contacts/backend db:studio",
"db:seed": "pnpm --filter @contacts/backend db:seed"
"db:push": "pnpm --filter @contacts/server db:push",
"db:studio": "pnpm --filter @contacts/server db:studio",
"db:seed": "pnpm --filter @contacts/server db:seed"
},
"devDependencies": {
"typescript": "^5.9.3"

View file

@ -13,7 +13,7 @@ AI-powered document management and context system for knowledge organization.
```
apps/context/
├── apps/
│ ├── backend/ # NestJS API server (@context/backend)
│ ├── backend/ # Hono/Bun compute server (@context/server)
│ │ └── src/
│ │ ├── main.ts
│ │ ├── app.module.ts
@ -45,7 +45,7 @@ apps/context/
```bash
# From monorepo root
pnpm dev:context:full # Start auth + backend + web (with DB setup)
pnpm dev:context:backend # Start backend only (port 3020)
pnpm dev:context:server # Start backend only (port 3020)
pnpm dev:context:web # Start web only (port 5192)
pnpm dev:context:app # Start web + backend together
pnpm dev:context:mobile # Start mobile app
@ -61,7 +61,7 @@ pnpm setup:db:context # Create DB + push schema
| Layer | Technology |
|-------|------------|
| **Backend** | NestJS 10, Drizzle ORM, PostgreSQL |
| **Backend** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Mobile** | React Native 0.76 + Expo SDK 52, NativeWind |
| **Auth** | Mana Core Auth (JWT) |

View file

@ -5,7 +5,7 @@
"scripts": {
"dev": "turbo run dev",
"dev:web": "pnpm --filter @context/web dev",
"dev:backend": "pnpm --filter @context/backend dev",
"dev:server": "pnpm --filter @context/server dev",
"dev:mobile": "pnpm --filter @context/mobile dev"
}
}

View file

@ -25,16 +25,16 @@ Each backend service has its own database and schema:
```bash
# Push schema changes (development)
pnpm --filter @chat/backend db:push
pnpm --filter @chat/server db:push
# Generate migration files
pnpm --filter @chat/backend db:generate
pnpm --filter @chat/server db:generate
# Run migrations
pnpm --filter @chat/backend db:migrate
pnpm --filter @chat/server db:migrate
# Open Drizzle Studio (database GUI)
pnpm --filter @chat/backend db:studio
pnpm --filter @chat/server db:studio
```
## Development Workflow
@ -60,13 +60,13 @@ For local development, use `db:push` to quickly sync schema changes:
2. **Push changes**
```bash
pnpm --filter @chat/backend db:push
pnpm --filter @chat/server db:push
```
3. **Verify in Studio**
```bash
pnpm --filter @chat/backend db:studio
pnpm --filter @chat/server db:studio
```
</Steps>
@ -82,7 +82,7 @@ For production, use proper migration files:
1. **Generate migration**
```bash
pnpm --filter @chat/backend db:generate
pnpm --filter @chat/server db:generate
```
This creates a timestamped SQL file in `drizzle/migrations/`.
@ -99,7 +99,7 @@ For production, use proper migration files:
3. **Run migration**
```bash
pnpm --filter @chat/backend db:migrate
pnpm --filter @chat/server db:migrate
```
</Steps>
@ -241,7 +241,7 @@ export class UsersService {
Schema not pushed:
```bash
pnpm --filter @chat/backend db:push --force
pnpm --filter @chat/server db:push --force
```
### Migration conflicts
@ -253,7 +253,7 @@ Reset and regenerate:
rm -rf apps/chat/apps/backend/drizzle/migrations/*
# Regenerate
pnpm --filter @chat/backend db:generate
pnpm --filter @chat/server db:generate
```
### Connection refused

View file

@ -139,7 +139,7 @@ If you see errors about missing tables/columns:
```bash
# Push the latest schema
pnpm --filter @chat/backend db:push --force
pnpm --filter @chat/server db:push --force
```
### Port already in use

View file

@ -16,13 +16,13 @@ Manacore uses Jest for backend testing and Vitest for frontend testing.
pnpm test
# Run tests for specific project
pnpm --filter @chat/backend test
pnpm --filter @chat/server test
# Run tests in watch mode
pnpm --filter @chat/backend test:watch
pnpm --filter @chat/server test:watch
# Run with coverage
pnpm --filter @chat/backend test:cov
pnpm --filter @chat/server test:cov
```
## Test Structure

View file

@ -124,7 +124,7 @@ Turborepo handles task orchestration with:
| Type | Pattern | Example |
|------|---------|---------|
| App package | `@{project}/{app}` | `@chat/backend` |
| App package | `@{project}/{app}` | `@chat/server` |
| Shared package | `@manacore/shared-{name}` | `@manacore/shared-auth` |
| Service | `@mana-{name}/service` | `@mana-search/service` |

View file

@ -15,7 +15,7 @@ AI chat application supporting multiple language models including local (Ollama)
| Component | Technology | Port |
|-----------|------------|------|
| Backend | NestJS | 3002 |
| Server | Hono/Bun | 3002 |
| Web | SvelteKit | 5173 |
| Mobile | Expo | - |
| Landing | Astro | - |
@ -27,7 +27,7 @@ AI chat application supporting multiple language models including local (Ollama)
pnpm dev:chat:full
# Or individual components
pnpm dev:chat:backend
pnpm dev:chat:server
pnpm dev:chat:web
pnpm dev:chat:mobile
```
@ -36,8 +36,8 @@ pnpm dev:chat:mobile
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Client │────>│ Backend │────>│ AI Models │
│ (Web/Mobile)│ │ (NestJS) │ │ Ollama/API │
│ Client │────>│ Server │────>│ AI Models │
│ (Web/Mobile)│ │ (Hono/Bun) │ │ Ollama/API │
└─────────────┘ └──────┬──────┘ └─────────────┘
@ -147,21 +147,21 @@ export const messages = pgTable('messages', {
First time setup requires seeding AI models:
```bash
pnpm --filter @chat/backend db:push
pnpm --filter @chat/backend db:seed
pnpm --filter @chat/server db:push
pnpm --filter @chat/server db:seed
```
### Run Tests
```bash
pnpm --filter @chat/backend test
pnpm --filter @chat/backend test:e2e
pnpm --filter @chat/server test
pnpm --filter @chat/server test:e2e
```
### Open Database GUI
```bash
pnpm --filter @chat/backend db:studio
pnpm --filter @chat/server db:studio
```
## Links

View file

@ -7,7 +7,7 @@ Mukke is a web application for managing your music library, playing tracks, and
```
apps/mukke/
├── apps/
│ ├── backend/ # NestJS API (port 3010)
│ ├── backend/ # Hono/Bun server (port 3010)
│ ├── web/ # SvelteKit app (port 5180)
│ └── landing/ # Astro marketing page
├── packages/
@ -23,7 +23,7 @@ pnpm dev:mukke:full
# Or start components individually
pnpm docker:up # Start PostgreSQL, Redis, MinIO
pnpm --filter @mukke/backend dev # Backend on port 3010
pnpm --filter @mukke/server dev # Server on port 3010
pnpm --filter @mukke/web dev # Web on port 5180
pnpm --filter @mukke/landing dev # Landing page
```
@ -150,7 +150,7 @@ Playback uses HTML5 Audio (browser-native codec support). Upload accepts any `au
| Waveform | wavesurfer.js 7.x |
| BPM Detection | Web Audio API (peak detection) |
| Metadata | music-metadata (server-side) |
| Backend | NestJS 10, Drizzle ORM |
| Backend | Hono + Bun, Drizzle ORM |
| Database | PostgreSQL |
| Storage | MinIO (S3-compatible) |
| Auth | mana-core-auth |
@ -178,14 +178,14 @@ PUBLIC_BACKEND_URL=http://localhost:3010
```bash
# Database
pnpm --filter @mukke/backend db:push # Push schema
pnpm --filter @mukke/backend db:studio # Open Drizzle Studio
pnpm --filter @mukke/server db:push # Push schema
pnpm --filter @mukke/server db:studio # Open Drizzle Studio
# Type checking
pnpm --filter @mukke/backend type-check
pnpm --filter @mukke/server type-check
pnpm --filter @mukke/web type-check
# Build
pnpm --filter @mukke/backend build
pnpm --filter @mukke/server build
pnpm --filter @mukke/web build
```

View file

@ -15,7 +15,7 @@
```
apps/nutriphi/
├── apps/
│ ├── backend/ # NestJS API server (@nutriphi/backend)
│ ├── backend/ # Hono/Bun compute server (@nutriphi/server)
│ │ └── src/
│ │ ├── main.ts
│ │ ├── app.module.ts
@ -71,7 +71,7 @@ apps/nutriphi/
pnpm nutriphi:dev
# Individual apps
pnpm dev:nutriphi:backend # Backend (port 3015)
pnpm dev:nutriphi:server # Backend (port 3015)
pnpm dev:nutriphi:web # Web app (port 5180)
pnpm dev:nutriphi:landing # Landing page (port 4323)
pnpm dev:nutriphi:app # Web + backend together
@ -108,7 +108,7 @@ pnpm build # Build for production
| Layer | Technology |
|-------|------------|
| **Backend** | NestJS 10, Drizzle ORM, PostgreSQL |
| **Backend** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **AI** | Google Gemini 2.5 Flash |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Landing** | Astro 5.x, Tailwind CSS |
@ -306,7 +306,7 @@ GEMINI_API_KEY=your-gemini-api-key
pnpm dev:nutriphi:app
# Or individually:
pnpm dev:nutriphi:backend # Terminal 1
pnpm dev:nutriphi:server # Terminal 1
pnpm dev:nutriphi:web # Terminal 2
pnpm dev:nutriphi:landing # Terminal 3
```

View file

@ -5,17 +5,17 @@
"description": "NutriPhi - AI-powered nutrition tracking with photo analysis",
"scripts": {
"dev": "pnpm run --filter=@nutriphi/* --parallel dev",
"dev:backend": "pnpm --filter @nutriphi/backend dev",
"dev:server": "pnpm --filter @nutriphi/server dev",
"dev:web": "pnpm --filter @nutriphi/web dev",
"dev:landing": "pnpm --filter @nutriphi/landing dev",
"db:push": "pnpm --filter @nutriphi/backend db:push",
"db:studio": "pnpm --filter @nutriphi/backend db:studio",
"db:seed": "pnpm --filter @nutriphi/backend db:seed",
"test": "pnpm --filter @nutriphi/backend test && pnpm --filter @nutriphi/shared test && pnpm --filter @nutriphi/web test",
"test:backend": "pnpm --filter @nutriphi/backend test",
"db:push": "pnpm --filter @nutriphi/server db:push",
"db:studio": "pnpm --filter @nutriphi/server db:studio",
"db:seed": "pnpm --filter @nutriphi/server db:seed",
"test": "pnpm --filter @nutriphi/server test && pnpm --filter @nutriphi/shared test && pnpm --filter @nutriphi/web test",
"test:backend": "pnpm --filter @nutriphi/server test",
"test:web": "pnpm --filter @nutriphi/web test",
"test:shared": "pnpm --filter @nutriphi/shared test",
"test:cov": "pnpm --filter @nutriphi/backend test:cov"
"test:cov": "pnpm --filter @nutriphi/server test:cov"
},
"devDependencies": {
"typescript": "^5.9.3"

View file

@ -7,7 +7,7 @@ AI image generation app using Replicate API with freemium credit system.
```
apps/picture/
├── apps/
│ ├── backend/ # NestJS API (port 3006)
│ ├── backend/ # Hono/Bun server (port 3006)
│ ├── mobile/ # Expo React Native app
│ ├── web/ # SvelteKit web app
│ └── landing/ # Astro marketing page
@ -21,7 +21,7 @@ apps/picture/
pnpm dev:picture:full # Start backend + web + auto DB setup
# Individual apps
pnpm --filter @picture/backend dev # Backend only (port 3006)
pnpm --filter @picture/server dev # Backend only (port 3006)
pnpm --filter @picture/web dev # Web only
pnpm --filter @picture/mobile dev # Mobile only
```

View file

@ -5,7 +5,7 @@
```
apps/planta/
├── apps/
│ ├── backend/ # NestJS API server (@planta/backend)
│ ├── backend/ # Hono/Bun compute server (@planta/server)
│ └── web/ # SvelteKit web application (@planta/web)
├── packages/
│ └── shared/ # Shared types, utils (@planta/shared)
@ -19,7 +19,7 @@ apps/planta/
```bash
pnpm planta:dev # Run all planta apps
pnpm dev:planta:web # Start web app
pnpm dev:planta:backend # Start backend server
pnpm dev:planta:server # Start backend server
pnpm dev:planta:app # Start web + backend together
pnpm dev:planta:full # Start auth + backend + web with DB setup
```
@ -45,7 +45,7 @@ pnpm preview # Preview production build
## Technology Stack
- **Web**: SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS
- **Backend**: NestJS 10, Drizzle ORM, PostgreSQL
- **Backend**: Hono + Bun, Drizzle ORM, PostgreSQL
- **AI**: Google Gemini Vision for plant analysis
- **Storage**: MinIO (S3-compatible)
- **Auth**: Mana Core Auth (JWT)

View file

@ -5,11 +5,11 @@
"description": "Planta - Plant Documentation & Care App",
"scripts": {
"dev": "turbo run dev",
"dev:backend": "pnpm --filter @planta/backend dev",
"dev:server": "pnpm --filter @planta/server dev",
"dev:web": "pnpm --filter @planta/web dev",
"db:push": "pnpm --filter @planta/backend db:push",
"db:studio": "pnpm --filter @planta/backend db:studio",
"db:seed": "pnpm --filter @planta/backend db:seed"
"db:push": "pnpm --filter @planta/server db:push",
"db:studio": "pnpm --filter @planta/server db:studio",
"db:seed": "pnpm --filter @planta/server db:seed"
},
"devDependencies": {
"typescript": "^5.9.3"

View file

@ -5,7 +5,7 @@
```
apps/storage/
├── apps/
│ ├── backend/ # NestJS API server (@storage/backend) - Port 3016
│ ├── backend/ # Hono/Bun compute server (@storage/server) - Port 3016
│ ├── landing/ # Astro marketing landing page (@storage/landing)
│ └── web/ # SvelteKit web application (@storage/web) - Port 5185
├── packages/

View file

@ -15,7 +15,7 @@
```
apps/todo/
├── apps/
│ ├── backend/ # NestJS API server (@todo/backend)
│ ├── backend/ # Hono/Bun compute server (@todo/server)
│ ├── web/ # SvelteKit web application (@todo/web)
│ └── landing/ # Astro marketing landing page (@todo/landing)
├── packages/
@ -75,7 +75,7 @@ pnpm preview # Preview build
| Layer | Technology |
|-------|------------|
| **Backend** | NestJS 10, Drizzle ORM, PostgreSQL |
| **Backend** | Hono + Bun, Drizzle ORM, PostgreSQL |
| **Web** | SvelteKit 2.x, Svelte 5 (runes mode), Tailwind CSS 4 |
| **Landing** | Astro 5.x, Tailwind CSS |
| **Auth** | Mana Core Auth (JWT) |
@ -300,7 +300,7 @@ Priority: explicit duration in text > history estimate > default fallback > none
```bash
# Unit tests
pnpm --filter @todo/backend test
pnpm --filter @todo/server test
pnpm --filter @todo/web test
# E2E tests

View file

@ -5,12 +5,12 @@
"description": "Todo App - Task Management for ManaCore Ecosystem",
"scripts": {
"dev": "pnpm run --filter=@todo/* --parallel dev",
"dev:backend": "pnpm --filter @todo/backend dev",
"dev:server": "pnpm --filter @todo/server dev",
"dev:web": "pnpm --filter @todo/web dev",
"dev:landing": "pnpm --filter @todo/landing dev",
"db:push": "pnpm --filter @todo/backend db:push",
"db:studio": "pnpm --filter @todo/backend db:studio",
"db:seed": "pnpm --filter @todo/backend db:seed"
"db:push": "pnpm --filter @todo/server db:push",
"db:studio": "pnpm --filter @todo/server db:studio",
"db:seed": "pnpm --filter @todo/server db:seed"
},
"devDependencies": {
"typescript": "^5.9.3"

View file

@ -8,7 +8,7 @@ GPS tracking app with AI city guides. Location tracking runs locally via AsyncSt
apps/traces/
├── package.json # Orchestrator (name: traces)
├── apps/
│ ├── backend/ # @traces/backend (NestJS, Port 3026)
│ ├── backend/ # @traces/server (NestJS, Port 3026)
│ │ └── src/
│ │ ├── main.ts
│ │ ├── app.module.ts
@ -31,7 +31,7 @@ apps/traces/
```bash
# Development
pnpm dev:traces:mobile # Start Expo app
pnpm dev:traces:backend # Start NestJS backend
pnpm dev:traces:server # Start NestJS backend
pnpm dev:traces:full # Start auth + backend + mobile
# Database