A fun, gamified language-learning platform inspired by Duolingo, built with modern technologies to provide an immersive experience. This project leverages AI voices, gamification features, and a robust backend system to help users learn new languages while having fun. ππ
- Project Description π
- Tech Stack π»
- Key Features β¨
- Prerequisites βοΈ
- Cloning the Repository π₯
- Install Packages π¦
- Setup .env File π
- Setup Drizzle ORM ποΈ
- Seed the App π±
- Start the App π
This project is a Duolingo clone built using Next.js, React, Drizzle, and Stripe, offering a fully functional language-learning experience. It includes various gamification elements like hearts β€οΈ, points π, and leaderboards π, plus additional features such as AI-generated voices π£οΈ and a premium tier π³ with Stripe for unlimited hearts π.
- Next.js 14 π - Framework for building fast, server-rendered React applications π
- React βοΈ - Library for building user interfaces π»
- DrizzleORM π§οΈ - Lightweight ORM for database interaction πΎ
- PostgresDB (NeonDB) ποΈ - Database used for storing user data and progress π
- Stripe π³ - Payment processing for Pro Tier subscription π°
- Clerk π - Authentication and user management π€
- ElevenLabs AI π§ - AI voices for dynamic and personalized language lessons ποΈ
- Shadcn UI π¨ - Component system for a modern, responsive design π
- React Admin π οΈ - Admin dashboard for managing the app βοΈ
- Vercel π - Platform for fast and reliable deployment π
- Tailwind CSS πͺΆ - Utility-first CSS framework for rapid UI development π¨
- π Next.js 14 & server actions for optimal performance π
- π£οΈ AI Voices powered by ElevenLabs AI for dynamic language learning π§
- π¨ Beautiful Component System using Shadcn UI for seamless UI/UX β¨
- π Amazing Characters designed by KenneyNL for an engaging experience πΎ
- π Authentication via Clerk for secure sign-in and user management π
- π Sound Effects to enhance the learning atmosphere π§
- β€οΈ Hearts System for in-game challenges and progression π
- π Points / XP System to track and motivate user progress π
- π No Hearts Left Popup when hearts run out, creating urgency β³
- πͺ Exit Confirmation Popup to prevent accidental exits
β οΈ - π Practice Old Lessons to regain hearts and keep progressing πͺ
- π Leaderboard to encourage friendly competition π₯
- πΊοΈ Quests Milestones for a gamified learning experience π€οΈ
- ποΈ Shop System to exchange points for hearts π°
- π³ Pro Tier unlocking unlimited hearts with Stripe for premium access π
- π Landing Page for easy navigation and access π§
- π Admin Dashboard powered by React Admin for smooth management π§βπΌ
- π§οΈ ORM Integration using DrizzleORM for database handling π
- πΎ PostgresDB via NeonDB for robust data storage ποΈ
- π Deployment on Vercel for fast and reliable hosting π
- π± Mobile Responsiveness ensuring accessibility on all devices π²
Ensure you have Node version 14.x installed on your system. π»π§
To clone the repository, run the following command:
git clone https://github.com/BernieTv/Duo-clone.gitInstall the required packages using npm:
npm iCreate your .env file and configure the following environment variables:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=""
CLERK_SECRET_KEY=""
DATABASE_URL="postgresql://..."
STRIPE_API_KEY=""
NEXT_PUBLIC_APP_URL="http://localhost:3000"
STRIPE_WEBHOOK_SECRET=""To set up the database schema, run:
npm run db:pushTo seed the application with data, run:
npm run db:seedOr for production setup:
npm run db:prodTo run the app in development mode, execute:
npm run dev