managarten/apps-archived/reader/apps/mobile/docs/deployment-guide.md
Till-JS 61d181fbc2 chore: archive inactive projects to apps-archived/
Move inactive projects out of active workspace:
- bauntown (community website)
- maerchenzauber (AI story generation)
- memoro (voice memo app)
- news (news aggregation)
- nutriphi (nutrition tracking)
- reader (reading app)
- uload (URL shortener)
- wisekeep (AI wisdom extraction)

Update CLAUDE.md documentation:
- Add presi to active projects
- Document archived projects section
- Update workspace configuration

Archived apps can be re-activated by moving back to apps/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 07:03:59 +01:00

5.1 KiB

Reader App - Deployment Guide

Voraussetzungen

  1. Google Cloud Account mit aktivierter Text-to-Speech API
  2. Supabase Projekt mit konfigurierter Datenbank
  3. Expo Developer Account (für App Store Deployment)

1. Google Cloud Setup

API Key erstellen

  1. Google Cloud Console → "APIs & Services" → "Credentials"
  2. "Create Credentials" → "API Key"
  3. API Key auf Text-to-Speech API beschränken

Stimmen konfigurieren

Die App verwendet Google Neural2 Stimmen:

  • de-DE-Neural2-A (Deutsch, weiblich)
  • en-US-Neural2-A (Englisch US, männlich)
  • en-GB-Neural2-A (Englisch UK, weiblich)

2. Supabase Setup

Datenbank Migrationen

# Migrations ausführen
supabase migration up

# Oder manuell in SQL Editor:
# - supabase/migrations/20240116_create_texts_table.sql
# - supabase/migrations/20240117_create_audio_storage.sql

Environment Variables

In Supabase Dashboard → Settings → Edge Functions:

GOOGLE_TTS_API_KEY=your_google_api_key_here

Edge Functions deployen

# Supabase CLI installieren
npm install -g supabase

# Edge Functions deployen
supabase functions deploy generate-audio
supabase functions deploy get-audio-url

Storage Setup

  • Bucket "audio" wird automatisch erstellt
  • RLS Policies sind konfiguriert
  • Benutzer können nur ihre eigenen Audio-Dateien zugreifen

3. React Native App Setup

Environment Variables

Erstelle .env.local:

EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_anon_key

Dependencies installieren

npm install

App konfigurieren

In app.json:

{
	"expo": {
		"name": "Reader",
		"slug": "reader",
		"version": "1.0.0",
		"orientation": "portrait",
		"icon": "./assets/icon.png",
		"userInterfaceStyle": "light",
		"splash": {
			"image": "./assets/splash.png",
			"resizeMode": "contain",
			"backgroundColor": "#ffffff"
		},
		"ios": {
			"supportsTablet": true,
			"bundleIdentifier": "com.tilljs.reader"
		},
		"android": {
			"adaptiveIcon": {
				"foregroundImage": "./assets/adaptive-icon.png",
				"backgroundColor": "#ffffff"
			}
		}
	}
}

4. Development Testing

Lokal testen

# Development Server starten
npm start

# iOS Simulator
npm run ios

# Android Emulator
npm run android

Edge Functions testen

# Lokal
supabase functions serve

# Test Audio Generation
curl -X POST 'http://localhost:54321/functions/v1/generate-audio' \
  -H 'Authorization: Bearer YOUR_SUPABASE_JWT' \
  -H 'Content-Type: application/json' \
  -d '{
    "textId": "test-id",
    "content": "Dies ist ein Test für die Audio-Generierung.",
    "voice": "de-DE",
    "speed": 1.0
  }'

5. Production Deployment

EAS Build Setup

# EAS CLI installieren
npm install -g @expo/eas-cli

# EAS initialisieren
eas init

# Build konfigurieren
eas build:configure

Build Profile (eas.json)

{
	"cli": {
		"version": ">= 0.52.0"
	},
	"build": {
		"development": {
			"developmentClient": true,
			"distribution": "internal"
		},
		"preview": {
			"distribution": "internal"
		},
		"production": {}
	},
	"submit": {
		"production": {}
	}
}

Builds erstellen

# Development Build
eas build --profile development

# Production Build
eas build --profile production

App Store Submission

# iOS App Store
eas submit --platform ios

# Google Play Store
eas submit --platform android

6. Monitoring & Maintenance

Supabase Dashboard

  • Database Performance
  • Storage Usage
  • Edge Function Logs
  • User Activity

Google Cloud Monitoring

  • API Usage
  • Kosten überwachen
  • Rate Limits prüfen

App Analytics

  • Expo Analytics
  • Crashlytics Integration
  • Performance Monitoring

7. Kosten-Optimierung

Google Cloud TTS

  • Erste 1M Zeichen/Monat kostenlos
  • Neural2 Stimmen: $16/1M Zeichen
  • Caching implementiert zur Kostenreduzierung

Supabase

  • Free Tier: 500MB DB, 1GB Storage
  • Pro Tier: $25/Monat für erweiterte Features
  • Storage: $0.021/GB/Monat

8. Sicherheit

Best Practices

  • API Keys niemals in Client-Code
  • Row Level Security (RLS) aktiviert
  • Signed URLs für Audio-Dateien
  • JWT Token Validation

Regelmäßige Updates

  • Dependencies aktualisieren
  • Sicherheitspatches einspielen
  • API Key Rotation

9. Troubleshooting

Häufige Probleme

  1. Audio-Generierung fehlschlägt

    • Google Cloud API Key prüfen
    • Quota-Limits prüfen
    • Edge Function Logs kontrollieren
  2. Supabase Connection Issues

    • Environment Variables prüfen
    • RLS Policies kontrollieren
    • Database Connection Pool
  3. Audio-Wiedergabe Probleme

    • Expo AV Permissions
    • File System Access
    • Audio Format Kompatibilität

Logs & Debugging

# Supabase Logs
supabase logs

# Edge Function Logs
supabase functions logs generate-audio

# App Logs
expo logs

10. Nächste Schritte

Feature Roadmap

  • Push Notifications
  • Offline-First Synchronisation
  • Cloud Backup
  • Multi-User Support
  • Advanced Audio Controls

Performance Optimierung

  • Image Optimization
  • Bundle Size Reduction
  • Lazy Loading
  • Background Processing