Zohar App v2 — Vehicle-Centric Redesign Help

Technical Approach

What Changes

This redesign affects only the navigation and presentation layer. The engine stays the same.

  • Home screen: Add Vehicle Hub card to existing feature grid

  • New routes: Smart Dashboard, Vehicle Detail View

  • New screens: Dashboard, vehicle detail, action panels

  • New controllers: VehicleDetailController that composes existing services

What Does NOT Change

  • Service layer — AuthService, WebSocketService, PhotoUploadService, all untouched

  • Data models — RecentMoked, MokedSubItem, all untouched

  • Offline architecture — SQLite queues, deferred uploads, all untouched

  • Existing routes — Old cards and flows remain functional during phased rollout

  • API endpoints — No new server endpoints required

Backend: Status Timestamp Tracking

The dashboard needs to show how long each vehicle has been waiting (e.g., "3 days waiting for appraisal"). The current Monday.com board tracks milestone dates but not when a status last changed.

New Monday.com Columns

Three new date columns on the Zohar Leasing board, auto-updated by the existing webhook handler:

Column

Tracks

Updated when

תאריך שינוי סטטוס

Vehicle status change time

COLUMN_STATUS changes

תאריך שינוי שמאות

Appraisal status change time

COLUMN_APPRAISAL_STATUS changes

תאריך שינוי חלקים

Parts status change time

COLUMN_PARTS_STATUS changes

Server Change

In cars_data_service.py webhook handler: when a status column change is detected, also update the corresponding date column with datetime.now(). No new endpoints, no new tables — just 3 extra column writes in the existing webhook flow.

Dashboard Calculation

wait_time = today - status_changed_at

Displayed on vehicle cards as: "3 ימים ממתין לשמאות"

New Components

Component

Purpose

VehicleHubCard

Prominent home screen entry point

SmartDashboardScreen

Queue-based vehicle list with role filtering

DashboardQueueWidget

Collapsible queue section with count badge

VehicleDetailScreen

Tabbed vehicle view

VehicleDetailController

Composes existing service calls

MokedCardWidget

Expandable moked summary with inline actions

QuickActionBar

Contextual action buttons based on status

ActionPanelSheet

Reusable slide-in panel container

RequestAdditionPanel

Photos + notes action panel

PreInvoicePanel

Review + confirm action panel

RepairPhotosPanel

Camera + upload action panel

Controller Pattern

The VehicleDetailController does not duplicate existing business logic. It composes existing services:

class VehicleDetailController extends GetxController { final String plateNumber; final _dataRepo = Get.find<DataRepositoryService>(); final _mokedsCtrl = Get.find<MokedsController>(); RxList<RecentMoked> mokeds = <RecentMoked>[].obs; Future<void> approveAddition(String subitemId) => ... Future<void> requestAddition(AdditionData data) => ... }

Existing workflow controllers (e.g., CarPickupFormFlowController) are not reused inside the vehicle view. New lightweight action handlers are created instead, delegating to the same underlying services.

16 March 2026