mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 03:59:40 +02:00
Integrate new transcriber application for AI-powered YouTube video
transcription with full monorepo structure and Groq Whisper API support.
## App Structure
- apps/transcriber/apps/backend - NestJS API server (port 3006)
- apps/transcriber/apps/web - SvelteKit web application
- apps/transcriber/apps/landing - Astro marketing/content site
- apps/transcriber/apps/mobile - Expo React Native app
- apps/transcriber/packages/shared-types - Shared TypeScript types
## Backend Features
- YouTube video download via yt-dlp (child_process)
- Ultra-fast transcription via Groq Whisper API (~300x realtime)
- Fallback to local Whisper for offline use
- Job queue with background processing
- Real-time progress updates via WebSocket (Socket.io)
- Playlist management for batch processing
- Health check endpoints
## API Endpoints
- POST /transcription - Start transcription job
- GET /transcription - List all jobs
- GET /transcription/:id - Get job status
- DELETE /transcription/:id - Cancel job
- GET /transcription/stats - Statistics
- GET /whisper/models - Available models
- GET/POST/DELETE /playlist - Playlist management
- GET /health - Health checks
## Whisper Models
- Groq: whisper-large-v3-turbo (fast, $0.04/hr)
- Groq: whisper-large-v3 (accurate, $0.111/hr)
- Local: tiny, base, small, medium, large
## Monorepo Integration
- Added to pnpm workspace via apps/*/apps/* pattern
- Root scripts: transcriber:dev, dev:transcriber:*
- Package naming: @transcriber/{backend,web,landing,mobile}
- Turbo tasks: dev, build, lint, type-check
- CLAUDE.md documentation
## Technology Stack
- Backend: NestJS 10, TypeScript, Socket.io
- Web: SvelteKit 2, Svelte 5, Tailwind CSS
- Landing: Astro 4, Solid.js, Tailwind CSS
- Mobile: Expo 52, React Native, NativeWind, Zustand
- Transcription: Groq Whisper API (OpenAI-compatible)
## Migration from Python
- Original Python/FastAPI code preserved in legacy/
- Full rewrite to TypeScript/NestJS
- Same functionality with improved architecture
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
115 lines
5.8 KiB
JSON
115 lines
5.8 KiB
JSON
{
|
|
"name": "manacore-monorepo",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"description": "Manacore Monorepo containing maerchenzauber, manacore, manadeck, memoro, picture, uload, chat, nutriphi, news, and transcriber",
|
|
"scripts": {
|
|
"dev": "turbo run dev",
|
|
"build": "turbo run build",
|
|
"test": "turbo run test",
|
|
"lint": "turbo run lint",
|
|
"type-check": "turbo run type-check",
|
|
"clean": "turbo run clean",
|
|
"format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md,svelte,astro}\"",
|
|
"format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,md,svelte,astro}\"",
|
|
|
|
"setup:env": "node scripts/generate-env.mjs",
|
|
"build:packages": "pnpm --filter '@manacore/*' build",
|
|
"postinstall": "node scripts/generate-env.mjs || true && pnpm run build:packages || true",
|
|
|
|
"maerchenzauber:dev": "turbo run dev --filter=maerchenzauber...",
|
|
"manacore:dev": "turbo run dev --filter=manacore...",
|
|
"manadeck:dev": "turbo run dev --filter=manadeck...",
|
|
"memoro:dev": "turbo run dev --filter=memoro...",
|
|
"picture:dev": "turbo run dev --filter=picture...",
|
|
"uload:dev": "turbo run dev --filter=uload...",
|
|
"chat:dev": "turbo run dev --filter=chat...",
|
|
|
|
"dev:maerchenzauber:web": "pnpm --filter @maerchenzauber/web dev",
|
|
"dev:maerchenzauber:landing": "pnpm --filter @maerchenzauber/landing dev",
|
|
"dev:maerchenzauber:backend": "pnpm --filter @maerchenzauber/backend dev",
|
|
"dev:maerchenzauber:mobile": "pnpm --filter @maerchenzauber/mobile dev",
|
|
"dev:maerchenzauber:app": "turbo run dev --filter=@maerchenzauber/web --filter=@maerchenzauber/backend",
|
|
|
|
"dev:manacore:web": "pnpm --filter @manacore/web dev",
|
|
"dev:manacore:landing": "pnpm --filter @manacore/landing dev",
|
|
"dev:manacore:mobile": "pnpm --filter @manacore/mobile dev",
|
|
|
|
"dev:manadeck:web": "pnpm --filter @manadeck/web dev",
|
|
"dev:manadeck:landing": "pnpm --filter @manadeck/landing dev",
|
|
"dev:manadeck:backend": "pnpm --filter @manadeck/backend dev",
|
|
"dev:manadeck:mobile": "pnpm --filter @manadeck/mobile dev",
|
|
"dev:manadeck:app": "turbo run dev --filter=@manadeck/web --filter=@manadeck/backend",
|
|
|
|
"dev:memoro:web": "pnpm --filter @memoro/web dev",
|
|
"dev:memoro:landing": "pnpm --filter @memoro/landing dev",
|
|
"dev:memoro:mobile": "pnpm --filter @memoro/mobile dev",
|
|
|
|
"dev:picture:web": "pnpm --filter @picture/web dev",
|
|
"dev:picture:landing": "pnpm --filter @picture/landing dev",
|
|
"dev:picture:mobile": "pnpm --filter @picture/mobile dev",
|
|
|
|
"dev:uload:web": "pnpm --filter @uload/web dev",
|
|
|
|
"dev:chat:mobile": "pnpm --filter @chat/mobile dev",
|
|
"dev:chat:web": "pnpm --filter @chat/web dev",
|
|
"dev:chat:landing": "pnpm --filter @chat/landing dev",
|
|
"dev:chat:backend": "pnpm --filter @chat/backend start:dev",
|
|
"dev:chat:app": "turbo run dev --filter=@chat/web --filter=@chat/backend",
|
|
|
|
"nutriphi:dev": "turbo run dev --filter=nutriphi...",
|
|
"dev:nutriphi:mobile": "pnpm --filter @nutriphi/mobile dev",
|
|
"dev:nutriphi:web": "pnpm --filter @nutriphi/web dev",
|
|
"dev:nutriphi:landing": "pnpm --filter @nutriphi/landing dev",
|
|
"dev:nutriphi:backend": "pnpm --filter @nutriphi/backend start:dev",
|
|
"dev:nutriphi:app": "turbo run dev --filter=@nutriphi/web --filter=@nutriphi/backend",
|
|
|
|
"news:dev": "turbo run dev --filter=news...",
|
|
"dev:news:mobile": "pnpm --filter @news/mobile dev",
|
|
"dev:news:web": "pnpm --filter @news/web dev",
|
|
"dev:news:landing": "pnpm --filter @news/landing dev",
|
|
"dev:news:api": "pnpm --filter @news/api start:dev",
|
|
"dev:news:app": "turbo run dev --filter=@news/web --filter=@news/api",
|
|
"news:db:push": "pnpm --filter @manacore/news-database db:push",
|
|
"news:db:studio": "pnpm --filter @manacore/news-database db:studio",
|
|
|
|
"transcriber:dev": "turbo run dev --filter=transcriber...",
|
|
"dev:transcriber:mobile": "pnpm --filter @transcriber/mobile dev",
|
|
"dev:transcriber:web": "pnpm --filter @transcriber/web dev",
|
|
"dev:transcriber:landing": "pnpm --filter @transcriber/landing dev",
|
|
"dev:transcriber:backend": "pnpm --filter @transcriber/backend dev",
|
|
"dev:transcriber:app": "turbo run dev --filter=@transcriber/web --filter=@transcriber/backend",
|
|
|
|
"docker:up": "docker compose -f docker-compose.dev.yml --env-file .env.development up -d postgres redis",
|
|
"docker:up:auth": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile auth up -d",
|
|
"docker:up:chat": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile chat up -d",
|
|
"docker:up:all": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all up -d",
|
|
"docker:down": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down",
|
|
"docker:logs": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f",
|
|
"docker:logs:auth": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f mana-core-auth",
|
|
"docker:logs:chat": "docker compose -f docker-compose.dev.yml --env-file .env.development logs -f chat-backend",
|
|
"docker:ps": "docker compose -f docker-compose.dev.yml --env-file .env.development ps -a",
|
|
"docker:clean": "docker compose -f docker-compose.dev.yml --env-file .env.development --profile all down -v"
|
|
},
|
|
"devDependencies": {
|
|
"prettier": "^3.3.3",
|
|
"turbo": "^2.3.0",
|
|
"typescript": "^5.9.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.0.0"
|
|
},
|
|
"packageManager": "pnpm@9.15.0",
|
|
"pnpm": {
|
|
"peerDependencyRules": {
|
|
"allowedVersions": {
|
|
"@mana-core/nestjs-integration>@nestjs/common": "^11.0.0",
|
|
"@mana-core/nestjs-integration>@nestjs/core": "^11.0.0",
|
|
"react-native>react": ">=18.0.0",
|
|
"react-native>@types/react": ">=18.0.0",
|
|
"@sveltejs/vite-plugin-svelte>vite": ">=6.0.0",
|
|
"@sveltejs/vite-plugin-svelte-inspector>vite": ">=6.0.0"
|
|
}
|
|
}
|
|
}
|
|
}
|