- Next.js
- Expo
- Tanstack Start
- Mastra
- Inngest
- RAG
- AI Agents
- Kubernetes
- CI/CD
Most recently, I have been core to building a greenfield AI-first workflow platform. I designed and built production-grade AI automations and internal agents from scratch, including customized AI workflows that autonomously assign and fix codebase bugs, and retrieval-augmented generation (RAG) systems integrating internal data tools to instantly resolve support inquiries for both staff and customers.
This role let me dive deep into modern AI solution patterns using Mastra for LLM backend architectures, Inngest for workflows and events, Tanstack Start, Vercel's AI SDK, and training classification models in Python. I am confident in selecting the right models, designing robust prompting strategies, and implementing guardrails to keep AI workflows stable, secure, and performant. The frontend handles streaming with server-sent events and is built as a highly interactive offline-first application.
Over the years, I have contributed to various aspects of our technology stack, being the first developer at Noona. My main focus to begin with was building the marketplace (the consumer-facing apps) from the ground-up. I initially developed a client-side SPA using Create React App back in 2018 and a mobile app with bare React Native, all written in Javascript, powered by a GraphQL API.
Through iterative improvements, I migrated the codebases to Typescript, Next.js, Expo, Nativewind and Tailwind, and things were in a good place. To further support team growth and development velocity, I architected a more scalable solution that enabled parallel development across multiple projects, leveraging React Native for Web. That was when I moved our Expo app and Next.js app to a monorepo, using Turborepo and pnpm workspaces. This enabled code sharing between the mobile apps and the web app. We weren't only sharing UI components, but entire features/screens. This meant we still benefited from Next.js's data fetching capabilities, etc., but didn't have to write everything twice, for the web and native. This also bridged the gap between the web and native development, improving feature parity between the platforms.
For Noona HQ, the enormous back-office app that company owners use. I made several significant contributions to that product; rewrite from JS to TS, leading the development of a fully-fledged POS system, initiating a big rewrite/transition from Meteor to React and introducing shadcn/ui. What I am proud of the most in the HQ development is that I architected and implemented multiple calendar systems including a traditional appointment calendar for salons and a timeline-based reservation system for restaurants, both featuring drag-and-drop functionality, resizing capabilities, and optimistic updates for instant user feedback.
To keep things short, I also briefly want to mention a few other things I've been working on for the last couple of years:
- Next.js app router
- React Server Components (Next.js and Expo too)
- Expo Router
- iOS Live Activities and widgets
- Native iOS development with Swift, SwiftUI and Objective-C
- Native Android development with Kotlin and Java
- tvOS development with React Native
- macOS & Windows development with React Native
- Building a universal UI library from a design system for React Native and web
- CI/CD with Github Actions and CircleCI
- Kubernetes + Docker