How natsouzax/lexuri works
Lexuri is a research prototype for learning English through music. Its main journey is account setup and level selection, studying songs with synced lyrics and translation, saving vocabulary, completing a three-day review cycle, and turning personal takeaways into a song. Album study, glossary practice, speaking/pronunciation, and gamification are additional product branches. The README documents the overall learner flow; source excerpts confirm selected API-to-service and persistence relationships, while many UI and route implementations were not sampled.
Main entry points: supabase-server.ts Supabase data · route.ts Takeaways and verses · YoutubeSyncPlayer.tsx Synced lyric player · LessonView.tsx Lesson and chunks
Components 24
Song learning
- Song and album catalog
app/(app)/feed/page.tsx - Album journeys
app/(app)/albums/page.tsx - Static lesson library
data/featured-lessons/index.ts - Synced lyric player
components/YoutubeSyncPlayer.tsx - Lesson and chunks
components/LessonView.tsx - Floating translator
components/FloatingTranslator.tsx
Review and glossary
- Vocabulary library
app/(app)/flashcards/page.tsx - Three-day song review
components/review/SrsSession.tsx - Spaced repetition
lib/srs.ts - Glossary practice
app/api/glossary-practice/route.ts - Speaking review
components/review/SpeakingReview.tsx
Personal music
- Takeaways and verses
app/api/takeaways/route.ts - Personal song studio
components/music/MusicStudio.tsx - Personal song generation
app/api/user-songs/route.ts
Progress and accounts
- Sign in and level
app/(auth)/register/page.tsx - Dashboard and missions
app/(app)/dashboard/page.tsx - XP and leaderboard
lib/gamification.ts
Runtime services
- Translation and definition
app/api/llm/translate/route.ts - Speech assessment
app/api/speaking-review/[id]/assess/route.ts - Supabase data
lib/supabase-server.ts - Media and lyrics adapters
lib/media/index.ts
Other components
- Learner
- OpenAI services
- YouTube media
Connections 27
- Learner → Sign in and level: creates account
README.md - Sign in and level → Song and album catalog: opens songs
README.md - Song and album catalog → Static lesson library: loads lessons
data/featured-lessons/index.ts - Album journeys → Static lesson library: uses album tracks
data/featured-lessons/index.ts - Static lesson library → Synced lyric player: supplies synced lyrics
README.md - Synced lyric player → YouTube media: plays video
README.md - Synced lyric player → Lesson and chunks: shows lyrics
README.md - Lesson and chunks → Floating translator: opens translation
README.md - Floating translator → Translation and definition: requests translation
README.md - Translation and definition → OpenAI services: calls model
- Lesson and chunks → Vocabulary library: saves vocabulary
README.md - Vocabulary library → Three-day song review: starts review
README.md - Three-day song review → Spaced repetition: schedules cards
README.md - Three-day song review → Takeaways and verses: captures takeaways
README.md - Takeaways and verses → Supabase data: stores learning data
app/api/takeaways/route.ts - Takeaways and verses → OpenAI services: generates verses
- Glossary practice → OpenAI services: assesses answers
app/api/glossary-practice/route.ts - Glossary practice → Supabase data: reads and writes practice
app/api/glossary-practice/route.ts - Takeaways and verses → Personal song studio: feeds personal song
README.md - Personal song studio → Personal song generation: requests song data
- Personal song generation → OpenAI services: generates song
app/api/user-songs/route.ts - Personal song generation → Supabase data: stores song sections
app/api/user-songs/route.ts - Speaking review → Speech assessment: submits practice
- Speech assessment → Supabase data: loads review items
- Dashboard and missions → XP and leaderboard: shows progress
app/(app)/dashboard/page.tsx - XP and leaderboard → Supabase data: persists awards
app/api/gamification/award-action/route.ts - Media and lyrics adapters → YouTube media: fetches captions
lib/media/index.ts