Audio-first spaced repetition system for language learning with hands-free practice sessions.
Monorepo structure:
packages/core- Shared TypeScript domain models and scheduling enginepackages/storage- Storage adapters (IndexedDB for web, SQLite for mobile)apps/web- Next.js web applicationapps/mobile- Expo React Native iOS application
- Node.js 18+
- pnpm 8+
- FFmpeg (for audio segmentation) - Download FFmpeg and ensure it's in your PATH
- OpenAI API key (for Whisper transcription)
pnpm installCreate a .env.local file in the apps/web directory:
OPENAI_API_KEY=sk-your-openai-api-key-hereNote: The OpenAI API key is required for the Whisper transcription feature. Get your API key from OpenAI.
pnpm dev:webpnpm dev:mobilepnpm build:core
pnpm build:webpnpm test:core- Audio-first practice sessions
- Leitner-like spaced repetition scheduling
- Hands-free operation (speech recognition for ratings)
- Background audio support on iOS
- Local storage with export/import
- Session persistence and recovery
- OpenAI Whisper Integration: Upload audio files to automatically transcribe and translate into sentence pairs
- Multi-language Support: Study multiple languages with separate data storage per language
- Time-aligned Audio Segments: Extract individual sentence audio clips from longer recordings
- Duplicate Detection: Fuzzy matching to identify similar sentences before adding
- Sentence Validation: Automatic filtering to ensure only complete sentences are saved
MIT