SIDE PROJECT 03 / 13

Lingua

Trip-focused Spanish learning across web, mobile, API, audio, and shared contracts.

Lingua is a Spanish-learning app designed around a real trip outcome rather than generic daily practice. Users track destination, departure date, current level, weekly progress, and competency gaps.

Lingua Spanish learning dashboard preview
FIG. 01 — LINGUA SPANISH LEARNING DASHBOARD PREVIEW
Web
Primary Alpha
End-to-end flow
Mobile
Read Parity
Expo baseline
Typed
Contracts
Shared across apps
Private
Repository
Product in progress
ABOUT

The repository sets up a web-first alpha with shared contracts, mock and Prisma-backed API paths, mobile read parity, and provider boundaries for LLM and audio features.

The product architecture supports gradual hardening: start with typed mocks, preserve the same contracts for production persistence, and keep AI/audio providers swappable.

  • Trip countdown and level targets mapped to concrete travel situations.
  • Shared contracts across Next.js web, Expo mobile, and NestJS API layers.
  • LLM and audio provider boundaries so coaching and speech work can evolve independently.
  • PostHog and Sentry hooks planned into the product baseline.
HOW IT WORKS
01

Trip-Ready Learning

Lessons tied to travel scenarios and competency gaps.

  • Destination and departure timeline
  • Level progression tracking
  • Scenario-based missions
  • Competency coverage by topic
02

Web and Mobile Parity

Shared product contracts reduce drift across clients.

  • Next.js App Router web flows
  • Expo SDK 52 mobile baseline
  • Typed API contracts
  • Mobile read parity scaffolding
03

Provider Boundaries

AI and audio can be changed without rewriting core UX.

  • LLM abstraction
  • Audio provider abstraction
  • Mock and production data paths
  • Smoke test scaffolding
UNDER THE HOOD
TurborepoNext.jsExpoNestJSClerkPrismaTurborepo with pnpmNext.js 15 App RouterExpo SDK 52Shared TypeScript contractsNestJS REST APIClerk authenticationPostgreSQL with PrismaPostHog and Sentry integration points