I build product interfaces that feel instant and stay that way.
I am a full-stack engineer and software engineering student based in Adama, Ethiopia. Over the past three years, I transitioned from crafting raw web foundations to architecting modular, type-safe production systems across the entire application stack.
I believe performance is not a polish step performed before launch—it is an architectural decision made on day one. I build with Next.js, NestJS, TypeScript, and PostgreSQL, focusing on local-first experiences, predictable state boundaries, and clean system design that reads like clear technical documentation.
Three years, in three parts.
I started with the core foundations.
Three years ago, I began writing semantic HTML, CSS layouts, and asynchronous JavaScript every single day. I quickly found out I loved the engineering discipline behind web systems—building tools and interfaces that run fast and make other people more capable.
Full-stack architecture with Next.js & NestJS.
Expanded into complete production architecture—relational database modeling with PostgreSQL and Prisma, clean domain-driven REST APIs in NestJS, and performant server-rendered Next.js applications with contract-first TypeScript.
Building production-grade systems from Adama, Ethiopia.
Now architecting full-stack web applications and local-first software like Mezmur+. I focus on modular systems, sub-100ms response times, and zero-drift codebases—actively preparing to ship high-impact features for remote engineering teams.

Six rules I work by.
None of them are original. All of them were learned by building, testing, and getting things wrong first.
Measure first
No rewrite starts before there is an empirical benchmark for performance. Otherwise nobody can tell when it is done or whether the change truly improved user latency.
Ship clean architecture
Modular domain boundaries, thin controllers, and explicit contracts mean codebases scale gracefully across team members without collapsing into tangled dependencies.
Type safety by default
Strict TypeScript and runtime schema validation with Zod replace loose runtime guesses with rock-solid compile-time contracts from database models to UI components.
Less JavaScript, faster DOM
The fastest code is the code the browser never has to parse. Leverage semantic HTML and native CSS layouts before reaching for heavy client-side scripts.
Document everything
Architectural decisions, trade-offs, and API schemas belong in the repository alongside the code so any engineer can onboard and contribute immediately.
User experience is the metric that matters
Sub-100ms interactions, keyboard accessibility, and zero layout shifts are not polish or afterthoughts—they are core engineering requirements.
What I am focused on right now.
- Building
- Mezmur+Multilingual Amharic/Afaan Oromo lyrics app
- Maintaining
- Mezmur+Preparing for public release
- Reading
- Designing Data-Intensive ApplicationsMartin Kleppmann
- Based in
- Adama, EthiopiaWorking remote hours