Behind the Platform · Engineering

Four apps. One backend.
One engineer.

Nibblify is a complete food-delivery platform: a customer app, a restaurant app, a courier app, an operations console, a backend and a website in 10 languages. It was built by one person working alongside frontier AI models. We call the method vibe engineering.

300K+
Lines hand-written
2,456
Commits since Nov 2025
6
Repositories, one platform
1
Engineer at the keyboard

The Method

What Vibe Engineering Means

Vibe engineering is not "let the AI write it and hope." It is a division of labour: the human owns the intent, the architecture and the final call; the models own the typing, the recall and the first draft; and the repository itself owns the proof — tests, validators and build-time checks that fail loudly the moment something drifts.

The human sets the direction

Every feature starts as a decision, not a prompt: what it must do, which data it touches, what it must never break. Architecture, data model and trade-offs stay human. The models are never asked what to build — only how to build what has already been decided.

The models write the first draft

Screens, controllers, data migrations, translations, tests — the first version arrives in minutes instead of days. And it is treated as exactly that: a draft, read line by line, rewritten where it is wrong, and thrown away outright when it misses the point.

The repository proves it

Nothing ships on vibes alone. 296 test files, security-rule suites, an i18n key checker, an SEO metadata audit and a link-reciprocity validator run across the code. When AI-written code is wrong, a machine says so long before a user does.

Context is written down

Each repository carries its own architecture guide — a living map of its structure, conventions and traps. The models begin every session already knowing the codebase, which is what turns them from autocomplete into a genuine collaborator.


The Collaborators

Three Models, Three Jobs

Each model was used where it is strongest — and checked by the others where it is not.

ChatGPT

Shaping the product

Product thinking, naming, user-facing copy, and the long arguments about what a feature should actually be. Most of Nibblify's screens existed as a conversation well before they existed as code.

Gemini

Research & second opinion

Wide research across APIs, platform rules and app-store policy, plus an independent read on the designs and code the other models produced. When two models disagreed, the disagreement itself was the useful signal.

Claude Code

The build agent

Working directly inside the repositories: reading the whole codebase, writing and refactoring across hundreds of files, running the test suites, fixing what it broke, and committing. This is where most of the 300,000 lines came from.


The Stack

What It's Actually Written In

Dart & Flutter

≈ 173,000 lines · 650 files

All four apps share one language and one UI toolkit, so iOS, Android and web come out of a single codebase. Flutter with Riverpod, Provider and go_router, on Dart 3.10.

JavaScript on Cloud Functions

≈ 25,500 lines · 238 functions

Node.js on Firebase Cloud Functions handles orders, payouts, driver assignment, AES-256 encryption of personal data, GDPR exports, push notifications and the entire admin API.

Firebase & Firestore

1,119 lines of rules · 47 collections

Auth, Firestore, Storage, Messaging, Remote Config, App Check, Crashlytics and Analytics — with hand-written security rules guarding every collection. The database is the contract between all four apps.

HTML, CSS & a custom build

≈ 19,300 lines · 200 static pages

This site is hand-written HTML and CSS with Tailwind, compiled by a Node build that renders every page into 10 languages and generates its own hreflang tags, structured data, sitemap and image variants.


The Numbers

Every Surface, Counted

Measured on 2 August 2026. Dependencies and machine-generated files are excluded, so these are lines that were actually written for Nibblify.

Nibblify Food

Dart · 69,600 lines · 269 files

The customer app: discovery, map exploration, typo-tolerant search, cart, checkout, live order tracking, reviews and account. Version 1.0.127, shipped in 10 languages.

Nibblify Partner

Dart · 41,700 lines · 140 files

The restaurant app: menus, offers, opening hours, live order flow, team management, payouts and the creator programme. Version 1.0.74, shipped in 10 languages.

Nibblify Driver

Dart · 11,600 lines · 50 files

The courier app: going on shift, live trip navigation, proof of delivery, earnings and wallet. Version 1.0.45, built to stay light on the low-end phones couriers actually carry.

Nibblify Staff Portal

Flutter Web · 49,900 lines · 191 files

The internal operations console: restaurant verification, driver documents and wallets, order support, live maps, analytics and monitoring — with 102 admin-only Cloud Functions behind it.

Backend & security

JavaScript · 25,500 lines · 238 functions

Cloud Functions, Firestore triggers and scheduled jobs, plus 1,119 lines of Firestore and Storage security rules covering 47 collections.

Tests

Dart & JavaScript · 42,600 lines

296 Dart test files plus emulator-backed integration suites and security-rule tests. This is the safety net that makes AI-written code safe to ship.

Translations

36 dictionaries · 57,300 lines

26 app locale files and 10 website dictionaries, expanding into a further 154,700 lines of generated Dart. Arabic ships with full right-to-left layout, not a mirrored afterthought.

This website

HTML, CSS, JS · 19,300 lines · 20 pages

20 source pages rendered into 200 localised static pages by a custom Node build — no framework, and under 250 lines of JavaScript reaching the browser.

307,000
Hand-written lines across the platform

Counting the localisation code generated from those translations, the repositories hold roughly 463,000 lines in total.


Guardrails

How We Keep AI-Written Code Honest

Write it down

Every repository documents its own architecture, so the model knows how this codebase works before it writes a line.

Small, reviewed diffs

2,456 commits, not fifty. Every change is small enough to be read in full by a human before it lands.

Machines check machines

Tests, translation key parity, SEO metadata audits and security-rule suites run across every change.

Ship, then watch

255 store builds across the four apps, with crash reporting and analytics telling us what really happened.


"The models did not replace the engineering. They removed the typing. What is left is the part that was always hard anyway — deciding what to build, and being certain that it works."
Zakaryae Ait Ouamer · Founder & CEO, Nibblify Food

Timeline

Eight Months, Six Repositories

November 2025 — first commit

Nibblify Food begins as a single Flutter project with a Firebase backend behind it.

December 2025 — the restaurant side

Nibblify Partner starts, and the project stops being an app and becomes a system.

May 2026 — the website

A custom static build renders the site into 10 languages, with hreflang, structured data and per-page SEO audits.

May 2026 — couriers and operations

Nibblify Driver, the Staff Portal and a shared backend repository all begin within three weeks of each other.

August 2026 — backed by Le Mans Innovation

The platform enters a citywide pilot, arriving in Le Mans tested rather than theoretical.

See the partnership →

Build Things This Way?

We're Hiring the Curious

If shipping at this speed — with this much of it proven by tests — sounds like your kind of engineering, we would like to hear from you.