We build interfaces the way
a weaver builds a lungi —
thread by patient thread.
lungi.dev is a small studio for thoughtful product surfaces. We do not believe in dashboards that shout. We believe in long, quiet bolts of cloth — pages that unroll horizontally, rhythmically, as if pulled gently from a wooden loom by hand.
Every stripe is intentional. Every warp thread is set in advance. The result is a continuous narrative, not a stack of tiles.
- Continuous horizontal scroll
- Stripe-only color application
- Warp-and-weft cursor
- Drape-edge motion
A snippet from the shuttle.
// stripe.ts — the fundamental unit of the bolt export type Stripe = { kind: 'thick' | 'pin' | 'selvage'; color: Hex; heightPx: number; tension?: number; // 0..1 — how taut on the loom }; export function weave(stripes: Stripe[]): Bolt { return stripes.reduce(layer, emptyBolt()); }
Five threads. One bolt.
01 · Product surfaces
SaaS dashboards, onboarding flows, marketing pages. Stripe-discipline applied to your brand.
02 · Design systems
Token libraries, motion specs, accessibility-aware components — handed off in code, not Figma.
03 · Loom-grade prototypes
High-fidelity working prototypes for usability tests and exec demos. Built in days, not weeks.
04 · Performance audits
Frame-budget reviews, animation triage, render-pipeline diagnostics. We measure twice, weave once.
05 · Long-form storytelling
Sideways-scroll editorials and product narratives — bolts of cloth, not stacks of cards.
End of the bolt.
Fold and send.
We take on three engagements per quarter. Reach out with a paragraph about what you're weaving, and we'll respond within two working days.