Work
What we have shipped
Client projects and the products we build in-house, described by what actually exists. Clients are not named at their request, so those entries cover the sector and the build. Our own products are named once they are live.
You will not find conversion percentages or traffic figures here. We did not measure them, so quoting them would be making them up. Where something is not finished, it says so.
The brief
An agency running its inventory by hand needed buyers to be able to search listings themselves, and needed staff to add and edit those listings without going through a developer every time.
What we built
- Property catalogue with search and filtering by location, property type, and sale or rental status
- Area-based browsing for the neighbourhoods that drive most enquiries
- Per-listing agent assignment, so an enquiry reaches the person handling that property
- Staff login and an admin area for managing listings, no deployment required to publish a change
- Seller intake form for owners submitting a property to list
- WhatsApp handoff for buyers who would rather message than fill in a form
02 · Client project
Dry bulk and cargo chartering
- Region
- United Arab Emirates
- Scope
- Frontend, plus ongoing hosting and maintenance
Still on a maintenance retainer with us.
The brief
A brokerage whose work happens over email and phone needed a public face that explained a service most visitors do not already understand, and sorted enquiries before they landed.
What we built
- Service breakdown across chartering and fixtures, voyage management, laytime and demurrage, and claims handling
- A four-stage process explainer taking an enquiry from initial details through matching, negotiation, and settlement
- Commodity segments covering steel and metals, grains, aggregates, fertilizers, project cargo, and minerals
- Enquiry form that routes by intent, separating cargo listings, tonnage offers, laytime questions, and claims
- Direct contact paths and published office hours for a desk that works across time zones
03 · Client project
Clothing and apparel retail
- Region
- Canada
- Scope
- Full stack, storefront and admin
Built and handed over, including the code. We do not host or maintain it, so there is no live link here.
The brief
A clothing retailer needed to sell online without handing a permanent cut of every order to a hosted platform, and needed to price for shoppers paying in more than one currency.
What we built
- Storefront catalogue with size and colour variants, each tracked as its own stock item
- Cart and Stripe checkout
- Multi-currency pricing, so a shopper sees and pays in their own currency
- Admin area for order management, covering the lifecycle from placed through fulfilled
- Inventory tracking tied to variants rather than to the parent product
04 · In-house product
Shoppable 3D room planner and marketplace
- Scope
- Full stack, in-browser 3D, native iOS companion
In development. Feature complete, visual design pass outstanding.
Our own product, and where the 3D and real-time work we sell gets proven before it reaches a client.
The brief
Furnishing a room means guessing whether pieces work together, then tracking each one down separately. This one lets you lay the room out in 3D from a catalogue of real, purchasable items, then buy the whole look in one go.
What we built
- In-browser 3D planner built on React Three Fiber for placing floor and wall items, with each room stored as a lightweight recipe that rebuilds from the database rather than a saved scene file
- Accounts and per-user ownership, plus public read-only share links that rebuild a room in 3D for anyone holding the URL
- A marketplace of published rooms, with cover images captured from the 3D scene, buy-the-whole-look or single-item checkout, and saved collections
- PDF export laying out the 3D preview, an itemised cost breakdown, and the total
- Real-time multi-user editing, where adds, moves, rotations and removals sync live between collaborators with presence and per-user selection, metered through Stripe
- An iPhone companion app that scans a real room with Apple RoomPlan, then turns the LiDAR scan into draft rooms to review and adjust before saving
05 · In-house product
Food delivery marketplace
- Scope
- Full stack, Django backend, Next.js customer app
In development.
The brief
Food delivery is a three-sided problem. Customers order, restaurants fulfil, drivers deliver, and money has to move correctly between all of them. Most builds stop at the menu and the cart; this one models the settlement and logistics underneath.
What we built
- Customer web app with address entry, phone number handling, and Google Maps for delivery addresses
- Ordering domain covering orders, line items, per-item modifiers, promo codes, and redemption tracking so a discount cannot be reused
- Driver side with driver records, live location, delivery assignment, and payout accounting
- Customer wallets backed by a transaction ledger, alongside subscription support
- Notifications, reviews, and daily restaurant and platform metrics for reporting
06 · In-house product
Neptune Atlas
Ship broking and chartering platform
- Scope
- Full stack, multi-tenant SaaS, data pipeline and billing
Live and selling. Card billing runs on live Stripe keys with trials, promo codes and per-licence proration, and the map draws from 94,338 AIS fixes on file.
Our own product, built on ten months of measured notes from an Odoo addon still in daily use at a working broking desk. The position-list parser now ships: a broker pastes a tonnage circular and a rules-based reader proposes rows for review, never accepting them automatically, because a name is the worst key on a hull. The four port line-up scrapers and SSO still have their schema and API in place without the code behind them, and the interface refuses those features rather than implying otherwise.
The brief
A broking desk matches cargo to tonnage, negotiates a rate, and takes a commission. The desk this grew out of ran that cycle on an Odoo addon that loaded 2.15 million vessel rows at 55 rows a second, went offline for 25 minutes on a single 238 MB upload, and assumed one customer forever. Neptune Atlas is the same domain rebuilt as something several desks can subscribe to.
What we built
- Vessel register of 94,412 hulls with tonnage search by size band, deadweight and position, loaded from a 2,152,729 row purchased CSV in 15.8 seconds
- Positions, cargoes, fixtures, laytime and demurrage as separate records, because a live position, a position list and a port line-up are three different things
- Multi-tenant Postgres 16: one shared reference schema holding the world fleet and 11,425 ports, marinas excluded because a marina is not a berth a Panamax calls at, a private schema per desk for its fixture book, and a control schema for accounts and audit that survives a desk being dropped
- Five subscription tiers in the database rather than in code, from a free browse tier through graduated per-seat pricing to a quoted Enterprise, with an offline provider for desks that are invoiced by hand
- Feature and quota entitlements resolved by a SQL function, so an operator reading the database during an incident gets the same answer the API gives
- Sessions split into a 15 minute access token held in memory and a rotating HttpOnly refresh cookie, with reuse detection that kills the whole token family
- Owner outreach against 30,718 companies, 11,234 of them with an email on file, plus a React desk client covering the dashboard, tonnage search, fixtures, laytime and the map
Yours could be next.
Every client project here started as a 30-minute call and a written scope. Tell us what you are building and you get a fixed quote within 48 hours of that call.