Senior Software Engineer · Full-Stack TypeScript

Josiah Moser

Tulsa, OK · TypeScript · React / Solid · Node · PostgreSQL

Available immediately for full-time or contract work

For the last four years I was Director of Technology at LearnCraft Spanish, where I designed, built, and matured a learning platform used by over 3,000 monthly learners. I started as the only engineer, made the first hire in 2024, and left behind a codebase my successor now runs on his own.

I built that platform to outlast me. The intent lives in explicit types and schemas instead of in my head, and the tooling enforces it. CI blocks any merge that fails the architecture checklist, the domain core is mutation-tested, and lint rules enforce boundaries and dependency directions. This is what made the codebase safe to hand off, and what makes it safe for AI tools to ship into.

Josiah Moser

Featured work

LearnCraft Spanish

Director of Technology · 2022–2026

A grammar-based quizzing and student record platform for a language coaching company. I designed and built the web stack, ran it in production for four years, and rearchitected it under live traffic without a ground-up rewrite or downtime.

  • Strangler-fig migration from an untyped JavaScript monolith to strict TypeScript with hexagonal boundaries, while feature work continued uninterrupted.
  • Student data locked down with server-enforced roles, JWT-authoritative auth, and Zod validation on everything crossing the wire.
  • Correctness enforced by tooling rather than by review: a mutation-tested domain core, an architecture checklist that hard-blocks any CI merge that violates it, and lint-enforced boundaries. The patterns are clear enough that my successor and AI tools follow them by default.

Open source

Tooling and projects I build in the open. The repos carry the full detail.

eslint-plugin-import-boundaries
ESLint rules that keep imports honest as a codebase grows: architectural boundaries enforced through pure AST evaluation, no filesystem reads. Published on npm and used in all my projects.
Prevail: Ancient Battles
The rules engine for a tabletop-style ancient warfare game I’m designing. Stateless, event-sourced, fully and headlessly replayable, with 1,500+ tests and a ~86% mutation score.
PortableNote
An open spec for portable personal notes: a compliance test suite, a hexagonal Rust core, and a SolidJS client over a Tauri bridge.

How I work

As a lifelong lover of classical music, art, and architecture, I build for continuity and longevity over rapid sprawl. That means encoding human intent clearly in the code itself: explicit types and schemas, enforced boundaries and dependency directions, and strict tooling enforcement. What has always been good for human collaboration is especially important for AI agents, and documentation and tools still cannot do the work that imitation of sound patterns does.

I learned this by paying for the alternative. I built LearnCraft fast and untyped, then spent years migrating it in place under live traffic to undo the bottlenecks I had inadvertently introduced. The success of this work has enabled my successor to manage the platform on his own; sound architecture outlasts its builders.

My typical stack is TypeScript end to end: React or Solid on the client, Node and PostgreSQL on the server, Zod at the boundaries. I care about UI and accessibility, but architecture and systems design are where I do my deepest work.

Stack & tooling
The tools I reach for most.

TypeScript · Node · React · Solid · Vite · PostgreSQL · Zod · TanStack Query · Vitest · Stryker · GitHub Actions · Netlify · Cloudflare · Auth0


Connect

If you're hiring, looking for a contractor, or just curious about the LearnCraft work, send me an email. I'm available immediately and happy to share what I've learned.

Résumé (PDF)typeset in Typst, view the source.

josiah@classicalmoser.dev

© 2026 classicalmoser.dev