Skip to content
Pedro Melo
All projects

Movio Entregasside project

A courier app built spec-first with AI agents

Movio's React Native courier app, and the spec-driven workflow where AI agents implement and people review. A side project.

Role
Fullstack developer, side project
Period
May 2026 – Present
deliveries
55k+
to accept an order
~4s
checks before every merge
5

Try it

On the left, a feature goes from spec to plan, tasks, PR and OTA update. On the right, the courier app before and after it. Try a delivery first, then ship the feature and try again. The data is made up.

# Proof of delivery with photo and code ## Acceptance scenarios1. Given an order on its way, when the courier reaches   the customer, then the app asks for a photo and the code.2. Given a wrong code, when the courier submits,   then the delivery stays open.3. Given a marketplace order that already requires the   partner's code (iFood, 99Food), then that code wins.4. Given the courier is far from the drop-off, when they   try to finish, then the API refuses with 409.
Movio v1.3.14Online

Waiting for offers…

Events

    The problem

    Movio connects restaurants on iFood, 99Food, Takeat and Open Delivery to couriers. An order has to reach a courier and be accepted quickly, and couriers are on the move, on unstable networks, with the app often in the background.

    Most of the code is written by AI agents in Cursor and Claude Code. Without a clear spec they guess, and review turns into rework.

    What I built

    • In the courier app: the real-time ride-offer queue over WebSocket, proof of delivery with a photo and a code, background location, push notifications, OTA updates and Sentry.
    • Brought Spec Kit into the project: every relevant feature starts as a business spec, which becomes a plan and tasks before the agents implement it.
    • Each repository's rules live in AGENTS.md and CLAUDE.md, and every delivery goes through lint, typecheck, build, E2E tests and human review on the PR.
    • The API's delivery-domain spec gathers the scenarios, contracts and data model that guide the agents.

    Decisions

    The spec is the source of truth
    Acceptance scenarios are written first, in Given/When/Then; plans, tasks and tests come from them.
    Push offers, don't poll
    Offers reach the courier over WebSocket the moment they exist.
    Ship without a store release
    Once a PR is approved, an OTA update puts the change on couriers' phones.

    Stack

    • React Native
    • TypeScript
    • WebSocket
    • OTA
    • Sentry
    • Node.js
    • PostgreSQL
    • Spec Kit
    • Claude Code
    • Cursor
    • Playwright