FlowDelivery v0.4.0
FlowDelivery v0.4.0
Release date: 2026-07-07
Objective
Publish the persisted checkout milestone on top of the v0.3.0 cart release,
turning the shopping flow into the project's first complete write path from
Flutter UI to Supabase Postgres.
Included
- Protected
/checkoutroute reached from the cart checkout CTA. - Checkout UI aligned with the approved prototype: order summary, item
quantities, subtotal, fixed delivery fee, total, delivery address, payment
method, confirm action, failure retry, and success confirmation with order
ID. CheckoutViewModelas a RiverpodNotifier<CheckoutState>with explicit
idle, submitting, success, and failure states.- Double-submit protection while an order is being placed.
- Cart clear exactly once after a successful order.
- Pure-Dart checkout domain entities and repository contract:
OrderDraft,PlacedOrder,OrderRepository, and neutral failure codes. - Supabase-backed data layer with
PlacedOrderDto,OrderRemoteDatasource,
OrderRepositoryImpl, and app-boundary composition. ordersandorder_itemsdatabase foundation with explicit grants, RLS
scoped toauth.uid(), and the atomiccreate_orderSECURITY INVOKER
function.- Localized checkout copy across pt_BR, pt, and en through ARB plus generated
AppLocalizations. - Focused tests for checkout datasource, repository, ViewModel, page states,
cart CTA behavior, router guard behavior, localization guards, theme guard,
and Trello guard. - Sprint 10 documentation, memory, technical debt notes, and Supabase setup
runbook reconciled after validation.
Architecture
Checkout is the first write-capable feature in FlowDelivery:
CheckoutPage
-> CheckoutViewModel
-> OrderRepository
-> OrderRemoteDatasource
-> Supabase RPC create_order
The cart remains session-local and domain-owned by CartNotifier. Checkout
builds an OrderDraft from that cart state, submits it through the repository
boundary, and lets Supabase persist the order and order items atomically.
Web Deployment
- Live demo: https://leomoraesitu.github.io/flowdelivery-app/
- Publishing follows the existing tag workflow:
.github/workflows/deploy-web.ymlbuilds and deploys Flutter web
automatically when thev0.4.0tag is pushed. - Manual owner step: keep the Supabase Auth URL allow-list aligned with the
GitHub Pages origin and reset-password redirect.
QA Evidence
- Sprint 10 consolidated validation matrix: 66 passing tests.
- Focused checkout suites:
- checkout datasource tests
- checkout repository tests
- checkout ViewModel tests
- checkout page widget tests
- cart checkout CTA tests
- router guard tests
- Guard suites remained green:
- hardcoded-copy guard
- ARB catalog parity
- generated localization freshness
- Theme Guard
- Trello Guard
- GitHub PR checks passed before merge:
feat/checkout -> developdevelop -> main
Known Limitations
- Payment gateway integration is not included; payment is a static
cash-on-delivery demo method. - Delivery address is a localized demo placeholder, not profile-backed data.
- Order history, order tracking, Realtime status updates, cancellation, and
editing are future slices. - Coupons, discounts, dynamic delivery fee, and distance calculation remain
out of scope. - Cart persistence across app restarts remains planned scope.
Artifact
- Web deployment is produced by the GitHub Pages workflow after the
v0.4.0
tag is pushed. flowdelivery-v0.4.0-supabase.apkflowdelivery-v0.4.0-supabase.apk.sha1flowdelivery-v0.4.0-supabase.apk.sha256
Checksums:
SHA-1: 0a93f77293a6e945bc8fa82935d361240a83229f
SHA-256: 8ea1cda2d846cbd51257a9cc0e4dfa35b42de8d6004415fa027391905def3732