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.
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.
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.
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.
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.
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.
Each model was used where it is strongest — and checked by the others where it is not.
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.
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.
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.
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.
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.
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.
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.
Measured on 2 August 2026. Dependencies and machine-generated files are excluded, so these are lines that were actually written for Nibblify.
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.
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.
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.
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.
Cloud Functions, Firestore triggers and scheduled jobs, plus 1,119 lines of Firestore and Storage security rules covering 47 collections.
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.
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.
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.
Counting the localisation code generated from those translations, the repositories hold roughly 463,000 lines in total.
Every repository documents its own architecture, so the model knows how this codebase works before it writes a line.
2,456 commits, not fifty. Every change is small enough to be read in full by a human before it lands.
Tests, translation key parity, SEO metadata audits and security-rule suites run across every change.
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."
Nibblify Food begins as a single Flutter project with a Firebase backend behind it.
Nibblify Partner starts, and the project stops being an app and becomes a system.
A custom static build renders the site into 10 languages, with hreflang, structured data and per-page SEO audits.
Nibblify Driver, the Staff Portal and a shared backend repository all begin within three weeks of each other.
The platform enters a citywide pilot, arriving in Le Mans tested rather than theoretical.
See the partnership →