An open API service indexing awesome lists of open source software.

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 πŸ¦‰πŸŸ’πŸ“šπŸŒπŸ§ 

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
```