Initial commit from template

This commit is contained in:
Lumina
2025-12-23 04:19:57 +01:00
commit b3d8fe8dfe
76 changed files with 10491 additions and 0 deletions

147
.claude/CLAUDE.md Normal file
View File

@@ -0,0 +1,147 @@
# Lumina Project - Claude Code Kontext
## Projekt-Typ
Full-Stack Web-Applikation erstellt mit dem Lumina AI Development Platform Template.
## Tech Stack
- **Framework:** Next.js 15 (App Router)
- **Runtime:** Node.js 20+
- **Sprache:** TypeScript (strict mode)
- **Styling:** Tailwind CSS
- **UI Components:** Spartan UI
- **Backend/Database:** Supabase (PostgreSQL)
- **Auth:** Supabase Auth
- **Storage:** Supabase Storage
- **Package Manager:** pnpm (bevorzugt) oder npm
## Projekt-Struktur
```
/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ ├── (auth)/ # Auth-geschützte Routen
│ ├── layout.tsx # Root Layout
│ ├── page.tsx # Homepage
│ └── globals.css # Globale Styles
├── components/ # React Components
│ ├── ui/ # Basis UI Components
│ └── ... # Feature Components
├── lib/ # Utilities & Services
│ ├── supabase.ts # Supabase Client
│ └── utils.ts # Helper Functions
├── public/ # Static Assets
├── helm/ # Kubernetes Helm Charts
└── .claude/ # Claude Code Konfiguration
```
## Coding Conventions
### TypeScript
- Strict mode aktiviert
- Keine `any` Types - immer typisieren
- Interfaces für Objekte, Types für Unions/Primitives
- Barrel Exports aus index.ts vermeiden
### React/Next.js
- Server Components als Default
- "use client" nur wenn nötig (interaktive Components)
- App Router Patterns verwenden
- Async Components für Data Fetching
### Styling
- Tailwind CSS für alle Styles
- Keine inline styles
- cn() Helper für conditional classes
- Spartan UI Components wenn verfügbar
### Supabase
- Server-Side: Service Role Key für Admin-Operationen
- Client-Side: Anon Key für User-Operationen
- Row Level Security (RLS) immer aktivieren
- Typen aus Database generieren
## Wichtige Patterns
### API Routes
```typescript
// app/api/example/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function GET(request: NextRequest) {
try {
// Logic here
return NextResponse.json({ data });
} catch (error) {
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
}
}
```
### Supabase Server Client
```typescript
import { createClient } from '@supabase/supabase-js';
// Server-side mit Service Role
const supabaseAdmin = createClient(
process.env.SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!
);
```
### Supabase Client
```typescript
import { supabase } from '@/lib/supabase';
// Client-side Query
const { data, error } = await supabase
.from('table_name')
.select('*')
.eq('column', 'value');
```
## Environment Variables
Erforderlich:
- `NEXT_PUBLIC_SUPABASE_URL` - Supabase Project URL
- `NEXT_PUBLIC_SUPABASE_ANON_KEY` - Supabase Anonymous Key
- `SUPABASE_SERVICE_ROLE_KEY` - Supabase Service Role Key (Server-only)
- `DATABASE_URL` - PostgreSQL Connection String
Optional:
- `REDIS_URL` - Redis Cache
- `ANTHROPIC_API_KEY` - Claude API
- `OPENAI_API_KEY` - OpenAI API
## NPM Scripts
- `pnpm dev` - Development Server (Port 3000)
- `pnpm build` - Production Build
- `pnpm start` - Production Server
- `pnpm lint` - ESLint Check
- `pnpm format` - Prettier Format
## Deployment
Das Projekt unterstützt:
- **Docker:** Dockerfile vorhanden
- **Kubernetes:** Helm Charts in `/helm`
- **Harbor:** Image Registry Integration
## Slash Commands
Verfügbare Claude Code Commands:
- `/supabase-db` - Datenbank-Operationen (CRUD, Migrations, Queries)
- `/supabase-storage` - Storage-Operationen (Upload, Download, Buckets)
- `/supabase-auth` - Authentication Setup & User Management
- `/component` - Neue UI Component erstellen
- `/api` - Neue API Route erstellen
- `/deploy` - Deployment Anleitung
## Hinweise
1. **Sicherheit:** Niemals Service Role Key im Client-Code verwenden
2. **RLS:** Immer Row Level Security Policies definieren
3. **Typen:** Supabase Types mit `supabase gen types` generieren
4. **Migrations:** SQL Migrations in Supabase Dashboard oder via CLI