Skip to content

FlowDelivery v0.4.0

Choose a tag to compare

@leomoraesitu leomoraesitu released this 07 Jul 16:13

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 /checkout route 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.
  • CheckoutViewModel as a Riverpod Notifier<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.
  • orders and order_items database foundation with explicit grants, RLS
    scoped to auth.uid(), and the atomic create_order SECURITY 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.yml builds and deploys Flutter web
    automatically when the v0.4.0 tag 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 -> develop
    • develop -> 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.apk
  • flowdelivery-v0.4.0-supabase.apk.sha1
  • flowdelivery-v0.4.0-supabase.apk.sha256

Checksums:

SHA-1:   0a93f77293a6e945bc8fa82935d361240a83229f
SHA-256: 8ea1cda2d846cbd51257a9cc0e4dfa35b42de8d6004415fa027391905def3732