# StarryLingo > A full-stack English language learning web application built with Next.js StarryLingo helps users learn English through reading articles, managing vocabulary (keypoints), and using spaced repetition for review. The app features AI-powered content generation, audio support, and a freemium model with credits system. ## Core Features - **Article Learning**: Read English articles with sentence-by-sentence translations and audio - **Vocabulary Management**: Extract and save keypoints (words/phrases) from articles - **Spaced Repetition**: FSRS-based review system for optimal memorization - **AI Generation**: Auto-generate articles, translations, and word definitions - **Audio Support**: Text-to-speech and word pronunciation - **Collections**: Organize saved vocabulary into custom groups ## Tech Stack - Framework: Next.js 16.1 (App Router) - Database: PostgreSQL with Drizzle ORM - Auth: Better Auth (email OTP) - AI: Vercel AI SDK with DeepSeek, Google, OpenRouter - Styling: Tailwind CSS 4 + Shadcn/UI - Audio: Deepgram SDK - Payment: Stripe - Storage: Tencent COS ## Learner Levels - Elementary - Intermediate - Advanced - Professional ## API Endpoints ### Articles - GET /api/article - Get single article with sentences - GET /api/articles - Get user's articles list - POST /api/article/create - Create article with AI generation - DELETE /api/article/delete - Delete article ### Keypoints (Vocabulary) - POST /api/keypoint/create - Create keypoint - POST /api/keypoint/generate - AI-generate keypoints from article - GET /api/keypoint/favorites - Get user's favorite keypoints - POST /api/keypoint/favorites/batch - Batch update favorites - POST /api/keypoint/[id]/favorite - Toggle favorite status ### Review System - GET /api/review/due - Get cards due for review - POST /api/review/grade - Grade review card - GET /api/review/stats - Get review statistics ### Credits & Activation - GET /api/credits - Get credit balance and history - POST /api/activate - Activate trial with code ### Other - GET /api/word - Get word details from dictionary - GET /api/lemma-inflections - Get word lemma and inflections - GET/POST/DELETE /api/collection - Manage collections - POST /api/stream-translate - Streaming translation ## Browser Extension StarryLingo includes a Chrome extension for capturing web snippets and sending them to the app for learning.