Build a Duolingo Clone

This project's goal was to deconstruct and rebuild a feature-rich, modern web application to demonstrate proficiency in building a complete Software-as-a-Service (SaaS) product, including user authentication, complex database schemas, and payment processing.

Build a Duolingo Clone

Project Overview

A clone of Duolingo that allows users to register, learn languages through courses, take quizzes, and track their learning progress. Integrated with payment and authentication features.

Challenges & Solutions

Challenge: Designing a scalable PostgreSQL schema to efficiently track user progress across multiple courses, lessons, and quizzes.

Solution: I designed a normalized relational database schema with clear foreign key constraints. This ensured data integrity and allowed for efficient querying of user progress, such as fetching a user's entire course status in a single, optimized query.

Challenge: Securely integrating disparate third-party services like Clerk for authentication and Stripe for payments, while ensuring a consistent user session.

Solution: I used Stripe Webhooks to listen for successful payment events asynchronously. This triggered a server action to update the user's subscription status in the PostgreSQL database, creating a robust, event-driven system that decoupled the payment process from the core application.

Key Features

  • Secure user registration and authentication with Clerk.
  • Dynamic language course and lesson management.
  • Interactive quizzes with real-time progress tracking.
  • Full payment and subscription lifecycle integration with Stripe.
  • Modern, responsive UI built with Shadcn UI and Tailwind CSS.

Tech Stack

Next.jsShadcn UIPostgreSQLAIClerkStripe

Architecture

The tech stack mirrors modern SaaS development practices. Next.js provided the server-side rendering and API routes, Clerk handled the complexity of user management, and Stripe managed the entire payment lifecycle. PostgreSQL was selected for its data integrity and robustness as a relational database.

Gallery

Gallery image 1
Gallery image 2