We're stubborn about quality.
Tests get written before the feature. Coverage gates are not negotiable. We'd rather miss a deadline than ship something we know is fragile.
We're three friends in a small workshop in Madagascar, building web, desktop and mobile applications for companies abroad. We charge a fraction of what a London studio would. We hold the work to the standard a London studio should.
We're three people in a single room in Antananarivo — Dan and Dina, married, and Hasina, Dina's twin sister. Three engineers, one family, one workshop.
The arrangement is unusual on purpose. We charge a fraction of what a London or Berlin studio would, because rent here is reasonable and we like it that way. What you save is not on care. It's on geography.
Tests get written before the feature. Coverage gates are not negotiable. We'd rather miss a deadline than ship something we know is fragile.
Most days. We argue, we disagree, we end up with code that's better than any one of us would have written alone.
We get to make beautiful things, with our family, for clients who trust us. That's not a small thing. It shows up in the work.
From the shape of the idea to the green pipeline that ships it. We don't subcontract, we don't hand off, we don't disappear after launch.
React, Next.js, Remix, Vue. Server-rendered, edge-deployed, type-checked from database to button.
Native-feeling iOS & Android from a single codebase, or fully native when the problem demands it.
Cross-platform desktop with native fidelity. Installers, auto-update, code signing — the unglamorous bits, done right.
APIs, data pipelines, authentication, observability, infrastructure. The invisible scaffolding that decides if it holds.
Across the platforms we run, a few stacks keep coming back. These are the ones we've gone past 'we can do that' on — the ones we know in the seams.
Six platforms in production across Odoo 11 through 19. Custom modules running from eleven on the small end to ninety-five on the large. Mainline modules we've backported, mainline modules we've forward-ported, and a handful of mixins that get inherited everywhere we work.
Three platforms in production where Django sits alongside something else — Odoo, S3, OAuth2 clients, a React frontend. Multi-tenant via Postgres RLS, parallel test suites that finish in minutes, and a long memory for the parts of Django that matter when load arrives.
We're not religious about process — we're religious about the work being good. Process is just what's left when you write down how we keep it good.
A week of conversation. Not a Zoom that ends with action items — a real talk where we figure out what you actually need (which is rarely what you first asked for).
Architecture diagrams, data flow, failure modes. If we can't draw the system, we can't build it. The drawing is the contract.
Trunk-based, small pull requests, pair review. Every merge requires a green pipeline — unit, integration, end-to-end, type checks, linters, coverage floor.
Automated QA suites, accessibility audits, performance budgets. A build only goes out when it earns its way through every gate.
Logs, traces, alerts. You should know a regression exists before your users do. We should know before you.
Documentation, retainers, careful handover. We don't disappear the day the invoice clears.
You'll work with all of us, on every project. There's no second tier, no junior offshoring, no account manager between you and the work.
Designs the spine of every project — APIs, data models, the layers customers never see but that decide whether a product lives a year or ten. Comfortable across Python and Node: Odoo, Django, Flask, FastAPI. Believes most front-end pain is back-end debt wearing a costume. The reason there's a workshop here at all.
Builds the layer customers actually touch — web in React and Vue, native-feeling iOS and Android in React Native. Cares about motion, microcopy, and the unglamorous work of staying fast on a five-year-old phone. One desk from Dan, two from Hasina — same room, same standards.
Catches things before customers do. Writes Playwright suites, manages test plans in Xray and Zephyr, and treats every regression as a personal grievance. Dina's twin sister — same room, same family, same standard for what ships.
We take roughly one engagement at a time. What's here was built, shipped, and tended after.
A Belgian SaaS marketplace that pairs customers with vetted independent specialists, across Belgium and Switzerland. Inherited in 2022 as a Symfony tier on Odoo 8 — rebuilt as clean Django on Odoo 16, and run by the same three engineers ever since.
A multi-tenant workforce-management SaaS — Django + DRF backend, React frontend, Terraform-managed AWS. We've held the CTO chair since 2023, architecting all three layers and growing the engineering team into the system as it scaled.
A hybrid Odoo 16 + Django platform managing Indigenous student scholarships, enrollment, billing and document handling. Two stacks on one Postgres database, with documents in S3 behind short-lived presigned download URLs.
A multi-stack platform for a US aesthetics and treatments company — an Odoo 18 ERP, a Next.js website on AWS, Lambdas for UPS shipment tracking and link verification, GCP Cloud Run services for OpenAI verification pipelines. We own the seams: the AWS Terraform estate, the serverless integrations, and the QA load testing.
An Odoo 19 platform that runs the company end to end — sales, CRM, HR, projects, treatment, cashflow, GAAP audit. Forty-odd custom modules, a nightly Playwright regression on AWS, and the first project where the three of us hold distinct seats: Dan on architecture and DevOps, Dina on Odoo modules, Hasina on test automation.
A French Odoo 11 platform for Wood, a pool-equipment supplier — built around a metadata-driven product configurator that lets customers spec a pool through a dynamic questionnaire whose entire shape is rows in the database.
A multi-million-euro Salesforce stack rebuilt on Odoo 16 for METRO's restaurant-tech arm — the commercial backend that powers DISH for tens of thousands of independent restaurants across Europe. We led the feature recreation: FastAPI gateway, RabbitMQ event bus, Vonage telephony, sales flow and product catalogue.
A five-surface platform we built for our own congregation — an Odoo 19 administrative board with the Madagascar accounting localisation we had to ship to make it work, a public Vue 3 website, a Flask + Nuxt 3 cockpit for the worship team, and an Expo companion app for the congregation. Five stacks, one community, made with gratitude.
More coming as they ship.
See all work →“We hired them in 2022 to take over a platform held together by hope. Within a year they'd rebuilt the Symfony tier as a clean Django app and migrated the Odoo side from 8 to 16, schema by schema, without losing a record. Four years on, they're still the engineering team behind it.”
“They ship, and the code keeps running. When a deadline is tight, they hit it. When something starts buckling under load, they find where and fix it. Two and a half years in, we've put a lot through them and the platform is still standing.”
“Three of them, three seats — modules, infrastructure, test automation. Every PR passes through at least two of them. The nightly Playwright run tells us about regressions before our users do. It's the most boring success story I've been part of, and that's a compliment.”
“Dan owns the parts of our stack we don't have time or skill depth to think about — AWS, the Lambdas, GCP, QA before our launches. Deploys land. Things stay green. The bridge between Odoo and the rest of the world keeps working. I truly believe that this developer is gifted.”
Excellence is a quiet form of gratitude — for the people we get to build with, the people who trust us with their projects, and the unlikely opportunity to do what we love together.
We read every message. A real person — one of the three — will write back within two working days.