We design and build web & mobile apps where
invalid states don't compile. Agile thinking, functional coding,
user-friendly design — craftsmen, artisans, and sometimes saviors to
our clients.
TypeScript where invalid states don't compile. Every application is
specified as five levels of types — core domain (T1), database rows
(T2), API contracts (T3), frontend state (T4) and actions (T5) — so
the compiler, not the code review, enforces the architecture.
The TypeFirst starting point in production form: a TypeScript
monorepo where shared Core contracts bind an Express
API of pure, testable handlers to a Vite web frontend. Change a
type once and every layer that disagrees stops compiling.
github.com/futureworkz/elm-autocomplete — open source
A headless autocomplete for Elm: debouncing and async fetching are
handled for you, every pixel of the view is left to you. One state
type, one fetcher returning a Task, single or multiple
selection. MIT, on the Elm package registry.
λ.2 About
Haniker is Han + Iker —
Han from Han Wee, Steven's Chinese given name, and Iker
from Iker Trần. Two engineers who kept choosing each other's code
reviews.
Steven Yap
Full-stack developer and tech entrepreneur. Leads product builds in
TypeScript, React Native, Elm and serverless Node — real-time,
responsive applications shipped with small, sharp teams.
Iker Trần
Functional programming and clean-code advocate. The conscience of
the codebase: if it merged, it survived his review.
λ.3 Blog
Notes on the things we build, and why they are built that way.
Why we turned a house style into a public methodology — typefirst.io is now up, with the principles, a five-part course, a sixteen-part build-it-yourself series, and the honest costs.
A TypeScript monorepo where one shared Core binds an Express API to a Vite frontend, and five levels of types describe the whole application. The template we start every project from.