Skip to content

RELEASE PLAN — PHASE 11

VietGara — Mobile Core

Version 11.0 — October 9, 2026 · Cloud: Google Cloud Platform (GCP) · Backend: Go

1. Introduction

Phase 2 delivered the owner app, the admin app and the foundations of the technician and customer apps (sign-in, today’s work, vehicles). Deferring what remains until after the backend foundations has three reasons:

  • Offline sync carries data that Phases 5-10 change. Quantities become decimals and gain units (Release 6.0), stock is consumed through documents with cost (Phase 7), and parts are reserved (Release 7.3). Building sync first would mean redoing its conflict handling.
  • The customer app depends on the new identity model. Customers and suppliers are garage-owned profiles that link to a user with consent (Release 5.1).
  • Nothing blocks launch. Garages work with the web consoles and the owner app; customers can approve quotes through the public link; e-mail covers notices.

This phase comes before Scheduling because booking is push-first through the Customer App: the device tokens, push channel and customer app core are its prerequisites.

2. Overview of the 3 Releases

ReleaseNameMain ModulesDemoable Value
11.0Real-time & PushPush gateway, device tokens, all four appsProgress and approvals appear instantly, and every app gets push notifications
11.1Technician App — Core FeaturesProgress updates, photos, offline syncThe technician works fully in the workshop even without a connection
11.2Customer App — Core FeaturesQuote approval and progress in-appThe customer approves a quote and follows the repair in the app, no web link needed

3. Release Details

Release 11.0 — Real-time & Push

  • Backend:
    • Firebase Cloud Messaging for push, and a WebSocket gateway only if the real bidirectional needs justify it (the choice is made in this release; push alone covers most hand-offs).
    • Push notifications (FR-NOT-03) to all four apps, with per-app device-token registration bound to the user:
      • Owner App: quote decided, repair order completed, payment received.
      • Technician App: line assigned.
      • Customer App: quote ready, vehicle ready.
      • Admin App: new garage registered.
    • The device tokens and the notification preferences are reused by the booking reminders of Phase 12.
  • Apps and owner web: repair progress updates instantly, with no refresh or pull-to-refresh (FR-REP-05).
  • Not in this release: the Repair Order Service split that Release 2.6 used to include. ADR-001 splits services on measured load, which Phase 9 produces, so the split joins the other splits in Release 15.0.
  • Definition of Done: a technician changes a line’s status in the app, and the customer and the owner see it within seconds with no action. Each app receives its push notifications on a real device.

Release 11.1 — Technician App: Core Features

  • Backend:
    • extend the Repair Order API to support sync per LLD Section 5.1 (ClientVersion, conflict resolution);
    • repair order photos (FR-REP-04) as files of the registry (Release 5.0): private, uploaded with a resumable request, served through signed URLs;
    • quantities and parts follow the units of Release 6.0: the app reads and writes base-unit quantities, and shows the part’s units from the catalogue; parts consumed through the technician app respect the cost and reservation rules of Phase 7.
  • App:
    • update line-item status (FR-REP-03 in the app, FR-TAPP-02);
    • before/after photos (FR-TAPP-03);
    • a local DB (drift/SQLite) and a sync queue (LLD Section 5.2);
    • an Offline Banner (Design System Section 3.8).
  • Definition of Done: with the device offline, update 3 line items and take 2 photos. When the connection returns, everything syncs to the server with no data loss and no duplication, with the right units on part lines.

Release 11.2 — Customer App: Core Features

  • App:
    • approve or reject quotes in the app instead of only through the public link (FR-CAPP-03); the quote comes from a garage whose customer profile is linked to the user (Release 5.1);
    • follow repair progress per line, live through the real-time channel of Release 11.0;
    • see and answer garage link requests (FR-CAPP-05, Release 5.1) in the same navigation.
  • Out of this release: online payment and receiving the e-invoice in the app (FR-CAPP-04). They need the payment gateway and e-invoicing, and arrive with them in Phase 16 (Releases 16.0–16.1). Until then the app shows the settlement and its receipt PDF.
  • Booking in the app (FR-CAPP-06) follows in Phase 12.
  • Definition of Done: a quote sent by the garage appears in the app. The customer approves part of it, the garage sees the decision on the owner web and the owner app, and the customer follows the resulting repair order.

4. Dependency Diagram

flowchart TD
  P10(["Phase 10 complete"]) --> R110["Release 11.0<br/>Real-time & push"]
  P10 --> R111["Release 11.1<br/>Technician core + offline sync"]
  R110 --> R112["Release 11.2<br/>Customer core"]
  R110 --> DONE(["Phase 11 complete"])
  R111 --> DONE
  R112 --> DONE

The technician core (11.1) does not depend on push and can be built in parallel with 11.0. The customer core (11.2) follows 11.0 because it follows progress in real time. The Phase 2 apps keep working meanwhile: compatibility updates for the rename, MFA, link requests and units are listed in the Phase 2 plan.