mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-20 04:53:38 +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>
47 lines
No EOL
1.1 KiB
Bash
Executable file
47 lines
No EOL
1.1 KiB
Bash
Executable file
#!/bin/bash
|
||
# YouTube Transcriber - Start Script
|
||
|
||
echo "🎥 YouTube Transcriber System"
|
||
echo "============================="
|
||
echo ""
|
||
|
||
# Check if virtual environment exists
|
||
if [ ! -d "venv" ]; then
|
||
echo "Creating virtual environment..."
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
pip install -r requirements.txt
|
||
else
|
||
source venv/bin/activate
|
||
fi
|
||
|
||
# Start services
|
||
echo "Starting services..."
|
||
echo ""
|
||
|
||
# Start FastAPI backend
|
||
echo "1️⃣ Starting API Server (Port 8000)..."
|
||
uvicorn api_server:app --reload --host 0.0.0.0 --port 8000 &
|
||
API_PID=$!
|
||
|
||
# Wait for API to start
|
||
sleep 3
|
||
|
||
# Start Astro frontend
|
||
echo "2️⃣ Starting Website (Port 4321)..."
|
||
cd website && npx astro dev &
|
||
WEB_PID=$!
|
||
|
||
echo ""
|
||
echo "✅ System started!"
|
||
echo ""
|
||
echo "📍 Access points:"
|
||
echo " • Public Website: http://localhost:4321"
|
||
echo " • Admin Panel: http://localhost:4321/admin"
|
||
echo " • API Docs: http://localhost:8000/docs"
|
||
echo ""
|
||
echo "Press CTRL+C to stop all services"
|
||
|
||
# Wait for interrupt
|
||
trap "echo 'Stopping services...'; kill $API_PID $WEB_PID; exit" INT
|
||
wait |