https://github.com/bernietv/duo-clone
Duolingo Clone build with NextJS and Drizzle π¦π’πππ§
https://github.com/bernietv/duo-clone
drizzle-orm nextjs stripe zustandjs
Last synced: about 1 month ago
JSON representation
Duolingo Clone build with NextJS and Drizzle π¦π’πππ§
- Host: GitHub
- URL: https://github.com/bernietv/duo-clone
- Owner: BernieTv
- License: mit
- Created: 2024-11-19T16:49:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-27T15:05:28.000Z (over 1 year ago)
- Last Synced: 2025-03-24T07:47:27.723Z (about 1 year ago)
- Topics: drizzle-orm, nextjs, stripe, zustandjs
- Language: TypeScript
- Homepage: https://duolingo-clone-ali.vercel.app
- Size: 566 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π Duolingo Clone Built with Next.js, React, Drizzle, and Stripe π
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. ππ
---
### π **Table of Contents** π
1. [Project Description](#project-description) π
2. [Tech Stack](#tech-stack) π»
3. [Key Features](#key-features) β¨
4. [Prerequisites](#prerequisites) βοΈ
5. [Cloning the Repository](#cloning-the-repository) π₯
6. [Install Packages](#install-packages) π¦
7. [Setup .env File](#setup-env-file) π
8. [Setup Drizzle ORM](#setup-drizzle-orm) ποΈ
9. [Seed the App](#seed-the-app) π±
10. [Start the App](#start-the-app) π
---
### π **Project Description** π
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 π.
---
### π» **Tech Stack** π οΈ
- **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 π¨
---
### β¨ **Key Features** π
- π **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 π²
---
### βοΈ **Prerequisites** π οΈ
Ensure you have **Node version 14.x** installed on your system. π»π§
---
### π₯ **Cloning the Repository** πΎ
To clone the repository, run the following command:
```shell
git clone https://github.com/BernieTv/Duo-clone.git
```
---
### π¦ **Install Packages** π§©
Install the required packages using npm:
```shell
npm i
```
---
### π **Setup .env File** π
Create your `.env` file and configure the following environment variables:
```js
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=""
CLERK_SECRET_KEY=""
DATABASE_URL="postgresql://..."
STRIPE_API_KEY=""
NEXT_PUBLIC_APP_URL="http://localhost:3000"
STRIPE_WEBHOOK_SECRET=""
```
---
### ποΈ **Setup Drizzle ORM** π§οΈ
To set up the database schema, run:
```shell
npm run db:push
```
---
### π± **Seed the App** πΎ
To seed the application with data, run:
```shell
npm run db:seed
```
Or for production setup:
```shell
npm run db:prod
```
---
### π **Start the App** π
To run the app in development mode, execute:
```shell
npm run dev
```