A selection of engineering projects spanning multi-tenant SaaS platforms, AI-powered tools, interactive dashboards, and open-source CLI toolkits. Each one reflects my commitment to clean architecture, automated testing, and strict TypeScript. Browse the code, read the case studies, or filter by technology.
Every project I build starts with a simple premise: understand the problem before writing a single line of code. I work with feature-based architecture and DDD-lite principles so the business domain is reflected in the project structure. I invest time upfront in research, mapping user flows, identifying domain entities, and defining bounded contexts before opening the editor. This dramatically reduces long-term technical debt and ensures every implementation decision answers a real business requirement. The result is a codebase where directory names reflect product capabilities rather than technical layers.
My tech stack is pragmatic, not hype-driven. I choose TypeScript for type safety, React for declarative interfaces, Node.js with Express for REST APIs, and PostgreSQL as my relational database. On the frontend I work with React 19 and Tailwind CSS 4, prioritizing WCAG 2.2 AA accessibility. On the server side I build APIs with Express and Prisma ORM, applying Zod validation and repository patterns. Every stack decision passes three filters: it solves the real problem, it adds value to the team, and it keeps complexity manageable.
Every project goes through research, architecture design, implementation with tests, and automated deployment. I prioritize readable code over premature optimization. Continuous integration with GitHub Actions ensures every PR passes linting, type checking, and the full test suite before merge. I write unit tests with Vitest and React Testing Library, and integration tests for API endpoints. When a bug surfaces, I write a test that reproduces it first, then fix it. This discipline lets me refactor with confidence and ship software that works, even under deadline pressure.