You know that stage when you're learning a new language—when you've mastered the basics and it's time to consume real content to improve your understanding and proficiency? Whether it's watching movies, listening to podcasts, or reading in your target language, immersion is key.
Audiolingu is an AI-powered podcast generator tailored for language learning. You specify your target language, current level, and interests, and it generates custom podcast episodes designed just for you. Each episode includes interactive transcripts, AI-generated quizzes to test comprehension, multiple voice options, and progress tracking to help you level up. The system continuously learns from your feedback, automatically improving future episodes based on what you like and dislike—all built for The Modern Stack Hackathon.
This repository is fully open source. You can explore, modify, or contribute to the code.
🎧 Core Learning Experience
- Interactive episode playback with word-level transcript synchronization
- AI-powered quiz generation with progress scoring and comprehension tracking
- Custom podcast episodes generated based on your level, language, and interests
🤖 AI-Powered Content
- Multi-agent AI system (podcast writer, quiz generator, title generator, and more)
- Intelligent feedback analyzer that learns from your likes/dislikes to automatically improve future episodes
- Automated daily episode generation workflows using Convex Workflows and Cron jobs
- AI-generated custom cover art for each episode
- Content tailored to avoid repetition by analyzing past episodes
🎙️ Voice & Audio
- Curated voice catalog with multiple selectable voices via ElevenLabs
- High-quality text-to-speech with word-level alignment for perfect transcript sync
- AI voice assistant powered by Vapi for interactive voice conversations and speaking practice
⚙️ Personalization & Automation
- Comprehensive onboarding flow (target language, proficiency level, interests, voice preference)
- Adaptive learning system: AI analyzes your episode feedback (likes, dislikes, and comments) to identify patterns and automatically personalize future content
- Daily cron jobs to automatically generate new episodes
- Email notifications via Resend when your episode is ready
- Opt-in/opt-out controls for daily podcasts and email preferences
🔐 Authentication & Infrastructure
- Google OAuth and magic link authentication with Better Auth
- Rate limiting with Upstash Redis
- Cloudflare R2 for scalable audio and image storage
- Mobile-responsive design with modern UI (shadcn/ui, Radix UI, TailwindCSS)
Frontend
- Next.js 15 App Router with React 19
- TypeScript for type safety
- TailwindCSS, Radix UI, and shadcn/ui for modern UI components
Backend & Infrastructure
- Convex for everything backend: database, authentication, serverless functions, workflows, cron jobs, agent components, etc.
- Cloudflare R2 for audio and image storage
AI & Generation
- OpenAI GPT-5 for multi-agent system (podcast generation, quiz creation, content analysis, feedback analysis)
- Intelligent feedback loop: AI agent analyzes user preferences to continuously improve episode quality
- OpenAI GPT-Image-1 for AI-generated episode cover art
- ElevenLabs for high-quality text-to-speech with word-level alignment
- Scorecard for AI evaluation, A/B testing, and improving model reliability
Authentication & Communication
- Better Auth for Google OAuth and magic link authentication
- Resend for transactional emails and daily episode notifications
- Upstash Redis for rate limiting on magic links
- Vapi for real-time voice AI assistant and conversational practice
Prerequisites:
- Node.js 18+ and npm
- Convex CLI and a Convex project
- Clone and install
git clone https://github.com/MaikoCode/audiolingu-oss.git
cd audiolingu
npm install- Local environment
cp .env.example .env.local
# Fill in values as needed- Dev server
npx convex dev
npm run dev
# visit http://localhost:3000- Build & start (production)
npx convex deploy
npm run build
npm run startFollow the Convex deployment guide: Convex Deployment Guide
Environment setup:
- Local Next.js:
.env.local(copy from.env.example) - Convex environment variables: set these in your Convex deployment
Required Convex env vars:
AI_GATEWAY_API_KEY
BETTER_AUTH_SECRE
ELEVENLABS_API_KEY
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
R2_ACCESS_KEY_ID
R2_BUCKET
R2_ENDPOINT
R2_SECRET_ACCESS_KEY
R2_TOKEN
RESEND_API_KEY
RESEND_FROM
SCORECARD_API_KEY
SITE_URL
UPSTASH_REDIS_REST_TOKEN
UPSTASH_REDIS_REST_URL
REACT_APP_VAPI_PUBLIC_KEY
REACT_APP_VAPI_ASSISTANT_ID
REACT_APP_VAPI_BASE_URL (optional)
Project by @Maiko for The Modern Stack Hackathon.
MIT
