← Back to portfolio

Learning Product Case Study

NullKeys

Local-first multilingual typing trainer designed around adaptive practice, keyboard-layout analysis, and privacy-first progress tracking without accounts or remote sync.

Current NullKeys interface preview

Impact Metrics

33

Language packs available in the browser-served content set.

0

Accounts, remote sync, or telemetry required for progress tracking.

3

Local storage layers used for preferences, history, and install hints.

Problem

Many typing products optimize for accounts and cloud continuity, but that trade-off can weaken privacy, local ownership, and multilingual depth for learners who want more than a simple speed test.

My Role

I designed and built the adaptive practice flows, local progress architecture, multilingual learning surfaces, and browser-first product experience.

Stack

  • Next.js
  • TypeScript
  • Tailwind CSS
  • IndexedDB
  • Cloudflare

Architecture

  • Adaptive practice, typing tests, and keyboard analysis share one learner-state model.
  • Browser storage keeps preferences, history, and cached content on-device.
  • Multilingual content packs support deeper drills without accounts or backend profiles.

Outcome

NullKeys ships as a privacy-first typing product that combines adaptive review, multilingual practice, and local archive portability without introducing a cloud-backed learner profile.

Product Highlights

The app goes beyond a one-page typing test with keyboard-layout exploration, replayable session history, benchmark flows, and manual export/import for local ownership of progress.

Live Site Verification

GitHub Actions runs post-deploy verification every 30 minutes with live verification alerts and automatic recovery closure. Authoritative uptime monitoring should run in Cloudflare Health Checks or an external synthetic monitor.