Case studies

Selected work.

Production deployments across AI, full-stack web, mobile, and infrastructure. Names changed where NDAs apply; technical detail honest.

Technical Co-Builder Live

Joe's vision. My engineering. Built from inside the sport's home country.

mymuaythai.app is a platform connecting Muay Thai gyms, trainers, and students across Thailand. Joe had the vision, the community, and the groundwork — I own the architecture, the stack decisions, and the delivery.…

Key decisions

  • Monorepo from day one: Four separate apps sharing Supabase schemas and TypeScript types. One PR updates shared logic across all surfaces.
  • Supabase as the entire backend: No Express server. Supabase handles auth (PKCE for iOS), database, real-time subscriptions for chat, Edge Functions for business logic, and RLS as the authorization layer.
  • Stripe web-only (no 30% Apple cut): Payments flow through the web app. Mobile deep-links to web checkout. Fully compliant — gyms keep 30% more revenue.
  • LLM translation in chat: Real-time Thai ↔ English translation using LLMs with sub-second latency. Trainers and students communicate without a shared language.

Stack

Expo SDK 53 · React Native 0.79 · NativeWind · Expo Router · React 18 (web) · React 19 (admin) · Vite 5/7 · Supabase · Stripe · Cloudflare · AWS

View case study →
02

AsyncQuiz

Client Project In progress

Async quiz competition platform for a Norwegian client. Complex, multilingual, on deadline.

SparSammenAS is a Norwegian company building a quiz competition platform where teams compete asynchronously — no shared time slot required. Geir-Ove needed a senior engineer who could handle a monorepo with web, admin,…

Key decisions

  • Monorepo with shared types: Web (Next.js 14), admin dashboard, and mobile share a single TypeScript codebase. Schema changes propagate everywhere.
  • Vipps over Stripe: Norway's dominant mobile payment method. The integration is complex but the conversion rate difference is significant.
  • Async scoring with Supabase real-time: Participants complete quizzes at different times. Real-time leaderboard updates use Supabase subscriptions.

Stack

Next.js 14 · TypeScript · Supabase · Vipps · React Native · Expo

View case study →
03

Nomadory Shop

Client Project Live

Headless Shopify + Next.js 15 for a B2B nomad gear brand. Fast, flexible, no bloat.

Nomadory is a B2B nomad gear brand. They needed a storefront that didn't feel like a Shopify theme — custom design, fast performance, and a content layer they could update without a developer. No checkout on the…

Key decisions

  • Headless Shopify + Storefront API: Shopify GraphQL API for product data. Next.js 15 for the frontend. ISR with revalidate:60 keeps product data fresh.
  • No-checkout pattern: B2B customers request quotes, not instant checkout. Airtable handles the CRM side.
  • AWS Amplify for hosting: Amplify handles CI/CD from GitHub, environment variables, and custom domain.

Stack

Next.js 15 · React 19 · Tailwind 4 · Shopify Storefront API · GraphQL · AWS Amplify · Airtable · TypeScript

View case study →
04

SimplySmartChat

Internal Project Live

AI-powered WooCommerce sales assistant. RAG pipeline meets real product knowledge.

An AI chatbot that actually knows the product catalog. Built for a WooCommerce store — the bot ingests product descriptions, pricing, specs, and FAQs via a RAG pipeline, then answers customer questions with real product…

Key decisions

  • RAG pipeline with pgvector: WooCommerce product data ingested into Supabase pgvector. Semantic search retrieves relevant products before the LLM generates responses.
  • OpenRouter for model flexibility: Route between Claude, GPT-4o, and Groq depending on query complexity. Fast models for simple questions, reasoning models for comparisons.
  • Cloudflare Workers for edge processing: Query preprocessing and caching at the edge. Sub-200ms response times for cached product lookups.

Stack

Next.js · TypeScript · OpenRouter · Claude API · Supabase pgvector · Cloudflare Workers · WooCommerce REST API

View case study →
05

Thea Tech Internal Automation

Internal Project Live

n8n workflows, AI agents, and infrastructure automation. The backbone behind the business.

The internal systems that keep Thea Tech running efficiently. n8n queue-mode deployment on a Contabo VPS handling workflow automation — from client onboarding notifications to automated Notion updates, Telegram alerts,…

Key decisions

  • n8n queue mode on Docker: Production n8n deployment with separate main and worker containers. PostgreSQL for persistence, Redis for queue management. Auto-restarts via systemd.
  • AI-powered document processing: Claude processes incoming briefs, extracts requirements, and creates structured Notion pages. Saves 2+ hours per client onboarding.
  • Telegram bot for ops: Real-time alerts for deployments, errors, and client messages. Quick-reply actions for common operations.

Stack

n8n · Docker · Cloudflare Tunnels · Anthropic Claude · Telegram Bot API · Notion API · PostgreSQL · Redis

View case study →
06

HubSecure

Technical Co-Builder Live

Multi-tenant FinTech compliance platform. KYC, AML, blockchain, AI agents — 12+ repos.

HubSecure is a multi-tenant FinTech compliance platform for KYC/AML verification, built for BCV Group. The system handles identity verification, AML screening against 1.7M+ sanctions records, XRPL blockchain KYC NFTs,…

Key decisions

  • Multi-tenant from the core: Single codebase serves multiple compliance clients with isolated data, configurable KYC flows, and tenant-specific branding. Row-level isolation at the database layer.
  • AI-powered AML screening: Custom AI agents screen against 1.7M+ sanctions records in real-time. Lead scoring and risk assessment automated — what used to take hours now takes seconds.
  • Blockchain for verifiable KYC: XRPL NFTs as proof-of-KYC that users own and can present to any participating institution. Polygon for RWA tokenization. Not crypto for crypto's sake — solving real compliance portability.
  • 12+ repo architecture: Monorepo wasn't practical at this scale. Separate repos for API, admin portal, client portal, KYC widget, AI agents, deploy CLI, and shared packages. Custom Deploy CLI orchestrates Cloudflare Pages deployments.

Stack

Laravel · PHP · Vue 3 · Quasar · XRPL · Polygon · AI Agents · Cloudflare Pages · PostgreSQL · Redis · TypeScript

View case study →
07

Lazz POS Offline

Client Project Live

Offline-first pharmacy POS. Tauri + SQLite desktop app that syncs when connectivity returns.

Built an offline-first pharmacy POS desktop application for the TajTech group. The app runs on Tauri + SQLite locally, handles sales, inventory, and invoicing even without internet, then syncs with the Lazz POS cloud…

Key decisions

  • Offline-first with dirty tracking: Every local mutation gets a dirty flag and timestamp. When connectivity returns, the sync engine resolves conflicts using last-write-wins with manual review for price conflicts. Pharmacies can't afford downtime.
  • Tauri over Electron: 50MB installer vs 200MB+. Native OS integration for thermal printers and barcode scanners. Rust backend for SQLite operations — fast and memory-efficient on pharmacy hardware.
  • Dual product modes: Pharma mode enforces batch tracking, expiry dates, and regulatory fields. Non-pharma mode is streamlined for general retail. Same app, different workflows based on product category.
  • .NET 9 ProductService microservice: Separate microservice handling product catalog sync across branches. PostgreSQL, EF Core, Redis caching, RabbitMQ for event-driven updates between branches.

Stack

Tauri · SQLite · React · TypeScript · CodeIgniter 4 · MariaDB · .NET 9 · PostgreSQL · Redis · RabbitMQ

View case study →
08

Moogruppen Platform

Client Project Live

Web platform for a Scandinavian creative agency. Clean, fast, content-focused.

Built a web platform for Moogruppen, a Scandinavian creative agency. Focus on performance, clean design, and a CMS that the marketing team could actually use without calling a developer.

Key decisions

  • Sanity CMS for non-technical editors: Visual editing, real-time preview, and structured content types the marketing team manages independently.
  • Performance-first architecture: Static generation for portfolio pages, ISR for blog content. Sub-second page loads.

Stack

Next.js · TypeScript · Tailwind · Sanity CMS · Vercel

View case study →