All projects
Haziq Nazeer
Full-stackReal-time AI Arabic-Learning Platform2025 — Present

LinguaLeap

An AI platform that turns real Arabic news into complete lessons — live spoken practice over a custom OpenAI Realtime bridge, word-synced audio, XP and streaks, and dual Stripe + RevenueCat billing.

Full-Stack Engineer
LinguaLeap preview

01 — Overview

The project

LinguaLeap ingests real Arabic news articles and YouTube clips, then uses LLMs to generate complete lessons — vocabulary, grammar, comprehension questions, word-timed narration and live spoken practice — across Reading, Listening, Teaching and Speaking modes. It's a NestJS 11 backend (TypeORM + PostgreSQL) with a Next.js 15 / React 19 web app and a Flutter mobile client.

Role

Full-Stack Engineer

Timeline

2025 — Present

Stack

8 technologies

02 — Context

Problem & approach

The problem

Language learning only sticks with live practice and daily habits, and content has to stay fresh without manual authoring — all while keeping voice low-latency and subscription billing reliable.

My approach

I built the flagship real-time speaking agent: a Socket.IO gateway bridging the browser to OpenAI's Realtime model with server-side voice-activity detection, a commit debounce, heartbeats and a transcript hallucination filter. I built the autonomous content pipeline (news scraping → LLM generation → Google TTS with word-level timing → S3) with custom rate limiting and a generation lock that prevents duplicate LLM work, the XP / streak / progress systems, and dual Stripe + RevenueCat billing with correct raw-body webhook handling. The TypeORM schema uses composite and partial indexes, and heavy work runs through Bull queues with exponential backoff — built to scale.

03 — Showcase

A closer look

Live AI speaking practice — full-duplex voice with the Arabic tutor

Live AI speaking practice — full-duplex voice with the Arabic tutor

Karaoke-style reading — word-level synchronised audio with tap-to-translate

Karaoke-style reading — word-level synchronised audio with tap-to-translate

Learner dashboard — streaks, XP and progress tracking

Learner dashboard — streaks, XP and progress tracking

04 — Capabilities

Key features

01

Live AI speaking

Full-duplex voice over a custom Socket.IO ↔ OpenAI Realtime bridge with server-side VAD.

02

Automated content pipeline

Lessons generated from real Arabic news (NewsAPI + 26 verified YouTube channels).

03

Word-synchronised audio

Karaoke-style reading highlight via Google TTS word timing.

04

XP, streaks & ILR levels

Gamified progression that drives daily habit formation.

05

Dual billing

Stripe Checkout + RevenueCat, gated by a @RequiresSubscription decorator.

06

Push & email notifications

FCM and email delivered through Bull queues and cron schedules.

05 — Contribution

My role

As Full-Stack Engineer, here is exactly what I owned and delivered on this project.

  • Built the real-time speaking gateway (Socket.IO ↔ OpenAI Realtime) with VAD, commit debounce, heartbeat and a hallucination filter.
  • Built the autonomous content pipeline: scraping → LLM lesson generation → Google TTS → S3, with custom rate limiting and a concurrency lock.
  • Designed the TypeORM / PostgreSQL schema with composite and partial indexes for hot queries.
  • Implemented XP, streaks and progress tracking.
  • Integrated dual Stripe + RevenueCat billing with signature-verified, raw-body webhooks.
  • Offloaded video processing and notifications to Bull queues with exponential backoff and cron scheduling.

06 — Engineering

Challenges I solved

Challenge

Low-latency, full-duplex voice with messy browser audio.

Solution

A Socket.IO ↔ OpenAI Realtime bridge that strips WAV headers on the fly, runs server-side VAD, debounces commits and heartbeats the connection; the client reconnects with capped backoff.

Challenge

Concurrent requests could trigger duplicate, expensive LLM lesson generation.

Solution

An in-process generation lock skips work already in flight, plus a queue-based rate limiter around the OpenAI and Google TTS APIs.

Challenge

Stripe's raw-body webhook signature is easy to break behind a JSON parser.

Solution

Registered the webhook raw-body middleware before JSON parsing and verified every event with constructEvent, with a success-page fallback if the webhook is delayed.

07 — Toolbox

Built with

NestJSNext.jsTypeORMPostgreSQLOpenAI RealtimeSocket.IOStripeBullMQ

08 — Impact

Outcomes

4 modes

Reading · Listening · Teaching · Speaking

Auto-generated

Lessons from live news

Real-time

AI speaking practice

Next project

LKnight LMS

Learning Management System

Want something like this built?

I'm available for freelance work. Let's build yours.

Hire me