Uses
The full stack I build with — languages, frameworks, infrastructure, and tooling.
Editor & Terminal
- VS CodePrimary editor for everything.
- GitHub CopilotInline completions — useful for boilerplate, never trusted for logic.
- WeztermGPU-accelerated terminal. Fast and scriptable.
- Zsh + StarshipShell with a minimal, informative prompt.
Languages
- TypeScriptDefault for all frontend and Node.js work. No plain JS.
- PythonML pipelines, data work, and scripting.
- SQLWritten by hand — I want to know what hits the database.
Frontend
- Next.jsReact framework of choice. Server components for data, client components for interaction.
- Vue 3Composition API for dedicated frontend apps — used in Techrise POS.
- PiniaState management for Vue. Clean API, good DevTools support.
- Tailwind CSSUtility-first styling. Consistent spacing and no CSS files to maintain.
- shadcn/uiComponent primitives built on Radix — copy in, own the code, style as needed.
- Radix UIAccessible headless primitives for custom component work.
Backend
- Node.js + ExpressREST APIs and service layers — straightforward, well-understood.
- BullMQRedis-backed job queues for async work like PDF generation and email dispatch.
- StreamlitFast internal UIs for ML tools — used for the Credit Risk Assessor.
Databases
- PostgreSQLPrimary database for everything relational. Hosted on Neon for serverless projects.
- RedisCaching, job queues via BullMQ, and session storage.
- Drizzle ORMType-safe queries that stay close to SQL. Preferred over Prisma for new projects.
- PrismaUsed in older projects and monorepos where the schema-first workflow fits.
Infrastructure & DevOps
- DockerContainerized environments for POS terminals — database consistency and fast machine swap.
- VercelDeployment for Next.js projects. Zero-config, edge functions, instant previews.
- ElectronPackaging web apps for POS hardware — kiosk mode, native printer access.
Payments & Integrations
- M-Pesa Daraja APISTK push payments and transaction polling for Kenyan retail and fintech.
- PaystackCard, bank transfer, and mobile money for East African SaaS.
Testing
- VitestUnit and integration tests for TypeScript projects. Fast, native ESM, great watch mode.
- PlaywrightEnd-to-end tests across real browsers — used for critical checkout and auth flows.
- Testing LibraryComponent tests that exercise behaviour rather than implementation details.
Design & Tooling
- FigmaDesign and prototyping before touching code.
- PostmanAPI testing and documenting collections for team handoff.
- TablePlusDatabase GUI — query, inspect, and edit without writing migrations for one-offs.
- LinearIssue tracking. Simple, fast, no ceremony.
- ObsidianNotes and thinking. Local-first, Markdown, no lock-in.