The one I would open first
Costwares — restaurant finance and BI platform
React · TypeScript · Firebase · Cloud Functions · Recharts
My largest codebase: a point-of-sale and financial-intelligence platform for restaurants. Not just reporting — the analytics layer does the work a finance team would.
- 1,628 commits across 1,049 files over six months.
- A real P&L engine: theoretical versus actual cost of goods with variance, EBITDA, and break-even with safety margin.
- ABC Pareto stock categorisation and menu engineering — median-split of sales volume against margin to classify every item as star, puzzle, plowhorse, or dog.
- Multi-branch dashboards, peak-hour heatmaps, and basket-lift analysis on a shared Recharts theme.
- Role-based access enforced with Firebase custom claims, synced by Cloud Functions; runs locally against seeded emulators.
71 commitsClean Arch · MVVM
Costwares Online — the same engine, for marketplaces in development
Marketplace sellers see revenue, not margin. This carries the Costwares profit engine to e-commerce: commission, shipping, returns, withholding, VAT, and ad spend reconciled into true net profit, then multi-marketplace stock and demand forecasting on top. Built on a strict Clean Architecture — the domain layer depends on nothing.
109 commitsFlutter
Hora — production Flutter architecture not released
A feature-complete horoscope app built strictly on Clean Architecture and MVVM — dependency inversion all the way down, domain logic testable without a widget tree.
- 109 commits over eight months across 361 files — sustained, not a weekend.
live on webExpo · Supabase
Sonra Hallederiz — who owes whom, settled in one tap
Shared expenses between friends: add people with a six-character invite code — no phone numbers, no email swapping — log who paid for what, then let it simplify the debt graph into the fewest transfers that settle everyone.
- Split evenly, by percentage, or by exact amount; groups for a holiday, a flat, or one Friday night.
- Built with Expo Router and Supabase row-level security, so a group's data is enforced at the database, not just the UI.
Open the live app
46 commitsMV3 · React · Claude
PostPilot — a Chrome extension that repurposes what you're reading
Open any article, click once, and get posts written for X, LinkedIn and Instagram — plus a reply generator that drafts three responses in a chosen tone. A full product rather than a demo: free tier of three a week, Pro at $12/month.
- Manifest V3 throughout — service worker, content script for page extraction, React popup.
- Claude via edge functions; Supabase for auth and rolling usage limits; Lemon Squeezy as merchant of record so tax is handled globally.
internal toolNext.js 16 · Drizzle
Hukids Catalog — the back office of a children's clothing store
Six modules that run the day: product records with size-level stock, a reverse pricing calculator that works backwards from the margin you want, low-stock alerts, competitor scraping across marketplaces, and a drag-and-drop catalogue builder that renders to PDF and a page-flip viewer.
- The module I like most: bulk photo matching — a vision model pairs a folder of photos to the right products, then a drag-and-drop board lets a human confirm or correct each one.
- Next.js 16 App Router with Cache Components, Drizzle ORM on Neon Postgres, Vercel Blob for photos and PDFs.
- No screenshots here: it is an internal tool wired to a live store database, so it does not run standalone.
27 commitsExpo · Supabase
What4Eat — the household answer to "what do I cook tonight?"
A meal planner for a whole household rather than one person: weekly routines fill the plan automatically, and the shopping list is whatever the plan needs minus whatever the kitchen already holds.
- The pantry does not pretend to know your kitchen. Each item carries a confidence — certain or estimated — that decays over time, so the app says "doubtful in 3 days" instead of quietly being wrong.
- Expo with Supabase row-level security; React Query persisted to storage and an offline banner, because a kitchen is exactly where the signal drops.
Python · DockerLinear · Telegram
AI Orchestrator — a development pipeline I run from my phone
I did not want to babysit a terminal, so I built the harness around it. A containerised Python service watches my Linear board; when an issue moves to AI Ready it checks out the right project, runs a coding agent against it, and reports back over Telegram — editing one message in place as the job moves through its phases rather than spamming the chat.
- I answer with /approve, /reject, or /revise plus written feedback — revise loops the work back with my notes attached, so a human stays in the decision seat.
- The verdict writes straight back to Linear as a status change and a comment; job history, phase and duration are kept in a state file that survives restarts.
- Docker Compose mounts the project tree, a shared
CLAUDE.md template and the agent config, so any project in the workspace is addressable by name.