// 01 / Work
Selected work.
Things I've
shipped & people use.
7 selected projects across web, mobile, and interactive experiences. Explore the problem, my contribution, and the outcome. Tap any row to expand.


Overview
I worked across the frontend and backend of Dakota Prep, an exam-preparation platform serving more than 40,000 users. Its products help tradespeople prepare for licensing exams and help educators support their students.
Problem
Licensing candidates need study material that matches their trade and exam, along with feedback that makes it clear what to practise next.
Solution
Practice exams, targeted study tools, AI-assisted learning, and progress reporting bring preparation into one connected experience.
My contribution
Built AI-tutor backend features and the review tools supporting them. Owned web and mobile payments, subscriptions, free trials, and educator purchasing flows. Rebuilt email journeys and preferences, maintained shared exam-generation and purchase logic, shipped multi-level exam progression, and launched an aptitude-exam product across web and mobile. Delivered Spanish localisation and established Playwright and Maestro end-to-end testing in CI.
Technical decisions
Kept exam-generation and subscription logic in a shared package across apps, and backed important user journeys with web and mobile end-to-end tests.
Challenges
Keeping curricula, subscriptions, localisation, and study progress consistent across a family of web and mobile products.
Outcome
Helped ship a platform serving 40,000+ users, a new aptitude-exam product, Spanish localisation, and a stronger web and mobile testing foundation.
What I learned
Useful education software connects what someone studies with what they need to do next.


Overview
Dakota Labs is a separate hands-on learning product in the Dakota ecosystem. It brings electrical concepts into interactive lessons, 3D model exploration, and virtual circuit practice.
Problem
Reading about equipment is different from understanding how its parts fit together or how a circuit behaves.
Solution
Interactive models and virtual labs let learners inspect equipment, explore components, and practise electrical concepts in a visual environment.
My contribution
Worked across the frontend and backend of Dakota Labs, including its interactive 3D learning experience. This project showcases my work beyond conventional dashboards: building interfaces where learners explore and interact with technical concepts.
Technical decisions
Keep the learning task at the centre of the interface. Model exploration and simulation controls should help explain the concept rather than compete with it.
Challenges
Bringing complex electrical concepts into an interactive experience that learners can understand and navigate.
Outcome
Contributed to a live product combining 3D learning and hands-on electrical practice.
What I learned
An interactive model is most useful when it helps someone understand a relationship they could not see in a static diagram.

Overview
Novii helps people understand themselves and navigate life transitions. I led fullstack development and built the initial version of its mobile app, contributing across the product rather than only its frontend.
Problem
Personal assessments can offer insight without giving people a practical way to carry that insight into everyday life.
Solution
A connected experience brings self-assessment, reflection, direction, and ongoing guidance into one product.
My contribution
Led fullstack development and built the initial mobile app. Delivered chat-based onboarding, AI-guided goals and action plans, task management, push notifications, and Apple and Google sign-in. Connected the mobile experience to its backend and established EAS build and delivery workflows, alongside work across the web product.
Technical decisions
Connected onboarding, goals, and everyday tasks through one mobile experience, with shared backend services and repeatable build and release workflows.
Challenges
Translating a personal and sometimes abstract process into software that feels clear and useful.
Outcome
Built the initial mobile experience and helped ship Novii’s live web and mobile product.
What I learned
Clarity comes from making the next step understandable, especially when the subject is personal.

Overview
Leyyow brings the everyday work of selling into one suite for merchants. I am currently building across its merchant dashboard, customer storefronts, and mobile storefront experience.
Problem
Merchants need to manage products, stock, customers, and orders while giving shoppers a clear path from discovery to purchase.
Solution
A connected sales suite brings business management and customer-facing storefronts together, helping merchants sell and manage their operations in one place.
My contribution
Built merchant onboarding, product and variant management, stock workflows, customer management, orders, discounts and coupons, delivery settings, and custom-domain setup. Developed the storefront shopping and checkout experience, including shipping, order confirmation, and receipts. Built the initial React Native storefront app, and improved shared forms, loading states, and end-to-end test coverage across the suite.
Technical decisions
Reuse form and interface components across merchant workflows, and keep storefront stock, pricing, and checkout aligned with the merchant suite.
Challenges
Handling product variants, changing stock, discounts, and delivery options consistently across the dashboard and storefront.
Outcome
Shipped substantial merchant and shopper workflows across the suite and storefronts, with ongoing development focused on helping merchants grow.
What I learned
Commerce software earns trust through the details: the right stock, the right total, and a clear next step.


Overview
Ontra Mobility builds tools for transit planning, operations, and rider journeys. I contributed as a fullstack engineer to a product serving the practical needs of public transportation.
Problem
Transit agencies need to understand demand, compare service options, and connect planning decisions with the people using their networks.
Solution
Ontra connects planning, operational tools, and rider-facing experiences so agencies can work toward better transit service.
My contribution
Contributed fullstack engineering to Ontra’s web and mobile transit platform. Worked across multimodal journey planning, live trip information, interactive route and stop maps, and bike-share integrations, connecting user-facing experiences with backend APIs and workflow-driven services.
Technical decisions
Worked within a shared web and mobile codebase, connecting trip-planning experiences to typed APIs, geospatial services, and backend workflows.
Challenges
Presenting routes, stops, live transit updates, and multiple travel modes clearly across web and mobile.
Outcome
Contributed to responsive web and mobile journey-planning experiences with live transit information.
What I learned
Domain-heavy software needs interfaces that help people reason about their work, not simply display more data.


Overview
EngageX helps people practise public speaking, presentations, and media communication. Its athlete-focused experience targets professionals in leagues such as the NBA, NHL, and WNBA. I led frontend development.
Problem
Professional athletes face interviews and public appearances where confidence, clarity, and preparation matter. They need a useful way to practise before the real moment.
Solution
Immersive speaking environments and AI-assisted feedback give users a place to rehearse, review their performance, and keep improving.
My contribution
Led the frontend build from the initial application setup through user and admin dashboards, authentication, and the core practice experience. Built public-speaking and presentation sessions with recording, timers, slide navigation, audience questions, and live feedback. Implemented session reports, voice analytics, progress visualisations, and dedicated NBA, WNBA, and NFL media-training experiences.
Technical decisions
Built reusable session, recording, timer, and reporting components so public-speaking, presentation, and athlete-training experiences could share a consistent foundation.
Challenges
Coordinating recording, playback, audience interaction, timers, and report states while keeping the experience responsive and understandable.
Outcome
Shipped the frontend foundation, core practice and reporting flows, and dedicated athlete media-training experiences.
What I learned
Coaching interfaces should make feedback actionable and practice feel worth returning to.

Overview
TekTalk is a social network for people in tech. I built its frontend across the feed, profiles, topic conversations, events, notifications, and direct messaging.
Problem
A community needs more than a feed. People need ways to discover conversations, find each other, and stay connected.
Solution
Posts, topic spaces, profiles, events, search, and chat bring community activity into one responsive web application.
My contribution
Built authentication, posting, comments, likes, follows, profile editing, topic pages, events, search history, and notifications. Implemented direct messaging with unread indicators and image handling, then refined mobile navigation, loading states, infinite scrolling, and responsive layouts.
Technical decisions
Use shared state and routed views to connect the feed, profiles, notifications, and conversations, with responsive layouts for mobile use.
Challenges
Keeping posts, notifications, unread messages, and profile updates coherent as users move through the application.
Outcome
Shipped the community frontend, including direct messaging and the core social interactions.
What I learned
A social product depends on small interactions working consistently across every place a conversation can start.
How I build.
Seven categories, in order of how often I reach for them. Tools matter less than judgement; but here's what's on the bench.
AI-driven workflows
Production AI surfaces, not demos. Streaming UI, retrieval, evals, agentic tool-calling, voice, built into the actual product loop. Three live products use the AI features I shipped.
Frontend
I build interfaces that hold up under real conditions: flaky networks, low-end devices, fast iteration. Component systems that scale beyond the launch sprint.
Styling & UI
Tailwind by default, design tokens always. I treat motion, accessibility, and responsive behaviour as features throughout the build.
Backend & Data
Supabase with strict RLS, REST or RPC, edge functions for auth and webhooks. I write Postgres that other engineers can read six months later.
Mobile
React Native with Expo, NativeWind for styling, offline-first by default. Shipped apps live in pockets across networks I can't pretest on.
State & Data
TanStack Query for server state, Zustand or Pinia when local. The right tool, not the trendy one, and rarely Redux unless the team already runs it.
Tools & Ops
Git, GitHub Actions, Vercel, Netlify, Figma, Linear. CI that runs the eval suite. Deploys that don't wake people up.
How the
work moves.
Not a methodology, a habit. The steps stay the same; the time spent at each one is what changes.
Understand
Sit with the problem before reaching for a framework. Ask whose day this is supposed to improve.
Map flows
Draw the user's path on paper. Find the smallest version that still teaches us something real.
Architect
Decide the data shape before the UI shape. The right Postgres schema removes a hundred future bugs.
Build
Composable, typed, and small. Each component owns one decision; the system stays editable.
Integrate
Wire data with care. Optimistic updates, retry logic, and error states designed before the happy path is celebrated.
Stress-test
The empty state. The 3G state. The 47-character name. Edge cases are the product.
Polish
Motion, micro-copy, hierarchy. The last 5% is what people remember and what makes them trust the rest.
Ship & learn
Deploy small, listen close, iterate weekly. Software is never done. It just gets useful sooner.






