Culilingo is an interactive English learning platform for Spanish speakers that combines video lessons with gamified learning experiences.
- Interactive Video Lessons: Learn with real video content, subtitles, and speed controls
- Multiple Choice Questions: Immediate feedback with explanations in Spanish
- Gamification: Points, streaks, achievements, and leaderboards
- Progress Tracking: Detailed analytics by category and skill level
- Content Management: Admin panel for managing videos and questions
- Responsive Design: Optimized for mobile and desktop
- Frontend: Next.js 13+ with App Router, TypeScript, Tailwind CSS
- UI Components: shadcn/ui, Radix UI primitives
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js
- File Storage: AWS S3 (or compatible)
- AI Services: OpenAI GPT-4, Whisper API
- Deployment: Vercel (frontend) + Render (database)
- Node.js 18+
- PostgreSQL database
- AWS S3 bucket (for video storage)
- OpenAI API key
- Clone the repository:
git clone https://github.com/your-username/culilingo.git
cd culilingo- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localFill in your environment variables in .env.local
- Set up the database:
npx prisma migrate dev
npx prisma db seed- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
- users: User accounts and profiles
- categories: Lesson categories (Travel, Work, etc.)
- videos: Video metadata and storage info
- scenes: Individual video segments
- questions: Multiple choice questions
- options: Answer choices for questions
- attempts: User question attempts
- scores: User points and progress
- leaderboards: Ranking data
- Users have many attempts and scores
- Videos belong to categories and have many scenes
- Scenes have many questions
- Questions have many options and attempts
GET /api/lessons- Get paginated lessons with filtersPOST /api/auth/login- User authenticationGET /api/leaderboard- Public leaderboard
POST /api/attempts- Submit question attemptsGET /api/me/progress- User progress dataGET /api/me/achievements- User achievements
POST /api/admin/videos- Upload new videosGET /api/admin/questions/draft- Get draft questionsPUT /api/admin/questions/:id- Edit questionsPOST /api/admin/questions/:id/publish- Publish questions
- Video Upload: Admin uploads video with metadata
- Transcription: Whisper API generates English transcripts
- Scene Detection: AI identifies natural break points
- Question Generation: GPT-4 creates multiple choice questions
- Review & Edit: Admin reviews and refines AI-generated content
- Publication: Content goes live for students
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on git push
- Create PostgreSQL database on Render
- Note the connection string
- Run migrations:
npx prisma migrate deploy
- Create S3 bucket for video storage
- Set up CORS policy for browser uploads
- Configure IAM user with appropriate permissions
- Video Streaming: Progressive download with adaptive bitrates
- Image Optimization: Next.js Image component with WebP
- Caching: Redis for session data and leaderboards
- CDN: CloudFront for global video delivery
- Database: Connection pooling and query optimization
- Authentication: Secure JWT tokens with refresh rotation
- Rate Limiting: API protection against abuse
- Input Validation: Zod schemas for type safety
- CORS: Proper cross-origin resource sharing
- Content Reporting: User-generated content moderation
- User Events: Video play, question attempts, completion
- Performance: Response times and error rates
- Business Metrics: User engagement and retention
- Error Tracking: Comprehensive error logging
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and add tests
- Commit:
git commit -am 'Add feature' - Push:
git push origin feature-name - Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email help@culilingo.com or join our Discord server.