Skip to content
Frank David Lee DE

All projects

In progress

heyAppa

Playful language-learning app – starting with Korean.

Period
since Jul 2026
Role
Concept, development and operations (solo)
Status
In progress
Stack
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Prisma
  • PostgreSQL
  • pgvector
  • Anthropic SDK
  • Zod
  • Vitest
  • AWS
  • Terraform
Screenshots coming soon

Problem

Learning a language with its own script takes stamina – and practice that's fun. I'm learning Korean myself. A learning app shouldn't leave anyone out along the way, including people who learn with a keyboard or a screen reader.

Solution

heyAppa is a playful language-learning app, starting with Korean. Its mascot Appa, a purple dragon, accompanies learners through the app – with a dedicated character bible as the binding reference for how he looks.

  • Translations and stories generated with an LLM via the Anthropic SDK.
  • Review with flip cards; custom ordering by drag and drop – with mouse, touch or keyboard.
  • Interface in German, English and Korean.

Accessibility

Before the redesign, accessibility came first, in three rounds. It is now a baseline that must not regress.

  • Contrast tokens, focus trap in dialogs and keyboard control for reviews; global shortcuts no longer fire inside input fields.
  • Visible focus and focus management in context menus; no nested interactive controls, and focus returns after flipping a card.
  • Keyboard sorting with screen reader announcements; hints and announcements in German, English and Korean, covered by tests.

Architecture and decisions

  • Next.js 16 (App Router) with React 19, TypeScript and Tailwind 4; Prisma 6 with PostgreSQL and pgvector; Zod at the boundaries, tests with Vitest.
  • Runs on AWS with infrastructure in Terraform; deployment runs the migration check, build and service restart in sequence.
  • Agents with clear roles: Claude Code implements exactly one task per pull request, Codex reviews the change read-only, and findings go back into the same PR. Visible changes only move on after my visual review, and merging is always manual.
  • The agent works as an edit-only worker in a fresh working directory; an orchestrator owns branch, commit and PR and only allows approved paths.
  • Redesign on a frozen foundation: design brief, a design system as the implementation contract and briefs per screen – the logic stays untouched.

Status

heyAppa is in development. The accessibility rounds are complete, and the redesign is planned and documented.