Back to home
58 sections · 13 chapters

Econ systemtutorial

The complete training manual — every process from registration to daily trips, LINEAR and AREA projects, all 11 trip scenario types, GPS verification, trip issues, and reports.

Training manual

Section 1 of 58: Introduction

Complete system guide

Introduction

This tutorial explains how Econ works end to end — for office staff on this web dashboard, field workers on the mobile app, and equipment owners. Use the menu on the left to jump to a specific operation (creating a project, starting a site, scanning QR, approving trip issues, generating reports, and more).

Training tip: Start with Full system lifecycle, then your role’s section. Office: Phases 4–6 + project type (LINEAR/AREA). Foreman: Phase 7 + trip scenarios. Field: 8.1.1 standard trip. Backoffice: trip issues + GPS verification.

What you will learn

  • How to set up a company, project, site, and field team from zero.
  • LINEAR (chainage) vs AREA (map polygon) projects — when to use each.
  • All 11 trip process types: standard QR, no-loader, paper QR, offline, exceptions, and more.
  • How GPS verification works for loader, driver, and unloader on LINEAR and AREA sites.
  • How to read reports, approve trip issues, and close a site.

Shorter topic pages are also available from the home menu: Platform, Trips, Trip issues, Office dashboard, Roles.

Definitions

Glossary & core concepts

TermMeaning
CompanyYour employer org in Econ. Office users may belong to several and switch in the header.
Company workerPerson in the company directory (phone, role). Created in User Management — not the same as project membership.
Project memberCompany worker assigned to a specific project (drivers often have linked equipment).
ProjectConstruction job — LINEAR (chainage CSV/map) or AREA (closed polygon on map). Contains products, places, sites, members.
Project typeLINEAR = alignment + chainage. AREA = map zone + GPS places (requires area_projects feature).
ProductMaterial tracked (DELIVERY or DISPOSAL) with units and target quantities.
Product placeLOADING, UNLOADING, or DISPOSAL point — chainage (LINEAR) or lat/lng (AREA).
SiteWork zone — chainage segment (LINEAR) or drawn polygon (AREA); dates, products, places.
ChainageDistance along centerline, e.g. 13+800 (km+mmm). LINEAR sites must sit inside project range.
boundaryGeoJsonPolygon geometry for AREA project boundary or site zone (GeoJSON).
Disposal siteSite flagged isDisposalSite — pickup zone + selected dump destinations.
Verification modeHow GPS is checked: CENTERLINE (LINEAR) or polygon rules (AREA).
GpsCheckResultpass / fail / skip per role (loader, driver, unloader).
TripOne load movement: loader → driver → unloader (office can edit and approve issues).
QR handoffLoader shows QR; driver scans in mobile to accept the trip.
Report valueFixed score on approved trip issues: 0, −1, or +1 — affects product totals.

Two apps, one story

How the system is split

Office (this website)  →  ComapySass API  →  projects, sites, reports, users
Field (mobile app)     →  Field API         →  trips, QR, offline queues, equipment

Both share the same business story: projects consume equipment and record every delivery trip.
SurfaceWhoMain work
Web dashboardEngineers, dispatch, HR, managementProjects, sites, KPIs, reports, trip issue approval
Mobile appLoader, driver, unloader, foremanWork tab, QR, site start, issue report/classify
Mobile / web (field)Equipment ownerList equipment, usage reports

A typical day

  • Morning — office: log in, switch company, check dashboard KPIs, add a site or adjust members.
  • Morning — site: foreman opens Work, syncs after poor coverage, starts site or opens loader/driver screens.
  • Handoff — loader shows QR; driver scans; unloader completes at destination.
  • Evening — office: products/equipment reports; approve trip issues; generate site report.
  • Evening — owner: mobile Reports tab for machine trip history.

Big picture

Full system lifecycle (Phases 1–9)

Econ connects equipment owners, construction companies, and field workers through one trip-tracking story. Everything below happens in order — skip a phase and field work will block.

PhaseWhoWhat happensWhere
1Any userPhone login via Telegram codeMobile or web /login
2Equipment ownerPosts equipment listingMobile Home / Add Post
3System adminCompany registered; first owner/adminOperations / admin tools
4HR / adminCompany workers added to directoryWeb User Management
5Office engineerProject, products, places, sites, membersWeb Projects
6Office engineerForeman + site settings (speed, times, flags)Web site detail
7ForemanSite starter → assign loaders/drivers/unloaders → Start siteMobile Work
8Loader, driver, unloaderDaily trips — QR, codes, offline, exceptionsMobile Work
9Office / ownerReports, GPS verification, trip issue approval, site closureWeb + mobile Reports
Registration → Company users → Project setup → Foreman starts site
    → Loader QR / driver scan / unloader complete → Reports & verification
New office user? Read Phases 4–6, then Phase 8 scenario overview. New foreman? Start at Phase 7. Loader/driver? Phase 8.1.1 standard trip.

Account setup

Phase 1 — Phone login & registration

Registration today means: your phone is already in the system, you log in with a Telegram one-time code. Self-signup on /register is not wired — an admin must add you first (Phase 4).

  1. 1
    Open login

    Web /login or mobile app login screen.

  2. 2
    Enter phone

    International format (e.g. 2519…). Mobile normalizes 09… and 9-digit local numbers.

  3. 3
    Request code

    Backend sends 6-digit code to Telegram bot linked to that phone.

  4. 4
    Enter code

    JWT stored; user lands on dashboard (web) or five tabs (mobile).

  5. 5
    If login fails

    “User not found” — phone not in company_workers. Admin adds you in User Management.

User must have started the Telegram bot at least once to receive codes.

Account setup

Phase 2 — Equipment owner listings

Equipment owners use the mobile marketplace to list trucks and machines. This is separate from company project work but feeds the equipment pool companies can assign to drivers.

  1. 1Home tab — browse equipment with filters (category, location, type).
  2. 2Add Post — 5-step wizard: category → type → specs → up to 4 images → details (phone required).
  3. 3Account — profile, my equipment, update GPS location for nearby features.
  4. 4Reports tab — trip history per machine (usage, not favorites).

Office analytics for equipment compliance live on the web dashboard, not the public /hearted placeholder route.

Account setup

Phases 3–4 — Company & users

Phase 3 — Company registration

  • A company record is created (name, settings, feature flags such as area_projects).
  • First owner and system admin are attached to the company.
  • Done by operations / system admin — not self-service on the public site.

Phase 4 — Add company workers

Route: /dashboard/CompanyUsers — HR adds people to the company directory.

ModeWhen to useResult
By phone (Telegram)User has TelegramFull role selection; can be loader, driver, foreman, office roles
Without TelegramNo Telegram accessLoader_load only; role cannot be changed later
Adding a company worker does not put them on a project. Phase 5 project membership is still required for mobile Work.

Field roles vs dashboard roles

TypeExamplesUsed for
Field rolesloader_load, driver, unloader, foremanMobile Work tab, QR, site operations
Dashboard rolesoffice_engineer, project_manager, site_engineer, ownerWeb projects, reports, trip issue approval

Project types

LINEAR vs AREA overview

Every project has a project type that controls how geometry, sites, places, and GPS verification work.

LINEAR (default)AREA (feature flag: area_projects)
GeometryCenterline from CSV or map points; chainage rangeClosed polygon drawn on map
Site definitionStart/end chainage inside project rangePolygon drawn inside project boundary (or full project area)
Product placesChainage point + optional distanceGPS lat/lng required; no chainage
Dashboard displayChainage column on sitesSite area (m²) — click to view map
GPS verificationUnload vs survey parquet at chainageMixed: LOADING place + site polygon rules
Best forRoads, railways, pipelinesQuarries, plants, closed yards, map zones
On AREA sites, the effective site boundary is the site polygon if drawn; otherwise the project boundary is used for containment and verification.

Project types

AREA projects — map & sites

Prerequisite: Company has area_projects feature enabled.

Step 1 — Create AREA project

  1. 1Projects → + New project → choose AREA type (not CSV chainage).
  2. 2Draw the project boundary polygon on the map (at least 3 points, closed area).
  3. 3Save — project stores boundaryGeoJson.

Step 2 — Add products & places

  1. 1Add products as usual (DELIVERY or DISPOSAL type).
  2. 2Open Product places — chainage fields are hidden for AREA.
  3. 3Enter latitude and longitude for each place (LOADING, UNLOADING, or DISPOSAL).
  4. 4Set geofence radius (m) — used for GPS verification at that place.
  5. 5Distance field remains available where applicable.

Step 3 — Create site on map

  1. 1Manage Sites → map shows project boundary (brand color).
  2. 2Draw site polygon inside project area — clicks outside boundary are rejected.
  3. 3Or tick “Use whole project area” to inherit full boundary.
  4. 4Select products and places; set start date and site name.
  5. 5Save — site stores boundaryGeoJson (or null for full-area sites).

Step 4 — Field & verification

  • Foreman starts site on mobile same as LINEAR.
  • Trips unload inside site polygon (DELIVERY) or pickup inside polygon (DISPOSAL).
  • Office Trip Details shows GPS badges per role — see GPS verification section.
  • Click site area on dashboard to open map overlay (project + site polygons).
Common mistakes: place without GPS; site drawn outside project boundary; expecting chainage on AREA unload (use polygon instead).

Project types

Disposal sites & dump places

Disposal tracks material picked up from a site zone and dumped at configured destinations. Works on both LINEAR and AREA projects with different geometry inputs.

Office setup (Phase 5)

  1. 1Create DISPOSAL product on project.
  2. 2Add DISPOSAL places (dump destinations) with GPS or chainage.
  3. 3Manage Sites → check Disposal site.
  4. 4Select DISPOSAL product(s) and which dumps apply to this site.
  5. 5Optional: Allow trip without unloader — driver can complete alone (Mode 1B).

Foreman site starter (Phase 7)

StepAction
1Assign pickup loader(s) for site pickup zone
2Assign dump unloader per configured dump (skip dumps marked noUnloader)
3No supervisor step on disposal sites
4Start site when pickup loaders (and unloaders if required) are assigned

GPS verification (AREA disposal)

  • Loader + driver-load: must be inside site polygon (pickup zone).
  • If dump destination selected: driver-unload + unloader checked against DISPOSAL place GPS.
  • If no dump selected (pickup-only): dump-side checks PASS automatically.

Mobile field app

Disposal site operations

  1. 1
    Foreman starts disposal site

    Site starter: pickup loaders + per-dump unloaders (if required). No supervisor.

  2. 2
    Loader at pickup

    Shows QR at site pickup zone; driver scans as standard delivery.

  3. 3
    Driver transport

    May select dump destination if multiple dumps configured.

  4. 4
    Unloader at dump

    Assigned per dump place; completes trip at destination GPS.

  5. 5
    Without unloader flag

    If office enabled allow trip without unloader, driver completes trip at dump.

Disposal site personnel uses disposalPlaceId on unloader assignments — one unloader per dump that requires unloading.

Trip processes

All scenario types overview

Phase 8 covers every trip process type the system supports. Pick the scenario that matches your site configuration.

#ScenarioWhen usedKey roles
8.1.1Standard loader QR → driver → unloaderDefault; loader requiredLoader, driver, unloader
8.1.2Driver creates trip without loaderSite flag allowDriverTripWithoutLoaderDriver, unloader
8.1.3Paper QRPrinted QR from web site detailDriver, unloader
8.1.4Multi-place / multi-loader2+ product places on site2+ loaders, drivers
8.1.5Verification codesPoor connectivity or process requires codesAll field roles
8.1.6Offline queued syncNo network during actionAll field roles
8.1.7Buffered acceptDriver scans before loader syncsLoader, driver
8.1.8Reassign driver mid-siteForeman changes personnelForeman, loader, new driver
8.1.9Trip exception / issueDriver reports problemDriver, foreman, office
8.1.10Office post-trip editCorrection after field doneOffice engineer
8.1.11GPS verificationAfter unloadedSystem, office
loading → driving → unloaded → (needs checking) → approved
         ↘ issue_reported → pending_approval → approved/rejected

Trip processes

8.1.1 Standard loader QR trip

The default flow: loader shows QR → driver scans → unloader completes.

Before first trip (office + foreman)

  1. 1Project has products and product places.
  2. 2Site created with products/places; allowDriverTripWithoutLoader = off.
  3. 3Loader, driver (+ equipment), unloader are project members.
  4. 4Foreman started site → status Loading.
  5. 5Loader assigned to place; driver on site personnel.

Loader — step by step

  1. 1Work → project → Loader sites (Loading status only).
  2. 2Loader site detail → select driver + product.
  3. 3Tap Show QR — app captures GPS, POST scanQRCode → trip status loading.
  4. 4Driver scans QR from LoaderQRCodeDialog.

Driver — step by step

  1. 1Work → Driver sites → Scan QR.
  2. 2Camera decrypts payload; confirm car/plate if prompted.
  3. 3POST acceptTrip → status driving.

Unloader — step by step

  1. 1Work → Unloading sites → Unloader site detail.
  2. 2Scan QR or pick trip; enter chainage (LINEAR) or confirm GPS (AREA).
  3. 3POST completeTrip → status unloaded.

Common failures & recovery

ProblemTrip statusFix
Loader never showed QRNo trip rowLoader creates QR
Accept failed / offlineloadingDriver retry or sync Q2 queue
Complete failed / offlinedrivingUnloader retry or sync Q4 queue
Driver already has active tripPick another driver
Chainage out of range (LINEAR)drivingEnter valid km+mmm inside site range

Trip processes

8.1.2 Driver without loader

Drivers start trips without loader QR when office enabled the site flag and foreman started with supervisor only.

Prerequisites

  • allowDriverTripWithoutLoader = true on site (office Manage Sites).
  • Supervisor assigned on Site starter.
  • Site started → Loading (may start with supervisor only — no loader teams).
  • Driver is project member with equipment/plate.
  • For offline create: driver needed one prior online session to cache equipment list.

Field steps

  1. 1Foreman: Site starter → assign supervisor only → Start site.
  2. 2Driver: Work → site → Create trip without loader → pick product + equipment.
  3. 3Trip goes directly to driving (no loading status from loader).
  4. 4Unloader completes as standard.
Delivery only. If flag is off, foreman must assign loaders before Start site — standard 8.1.1 path is mandatory.

Trip processes

8.1.3 Paper QR trip

For yards without phones at the loading point, office generates a printed QR from site detail.

Office — generate & print

  1. 1Site detail → Loader paper QR section.
  2. 2Generate QR (payload includes r: paper marker).
  3. 3Print and post at loading point.

Field — driver scan

  1. 1Driver scans paper QR (no loader phone needed).
  2. 2Backend creates new trip + accepts in one step → driving.
  3. 3Unloader completes as standard.
Phone loader QRPaper QR
Trip creationLoader scanQRCode firstCreated on driver scan
Who shows QRLoader appPrinted sheet
OfflineQ1 + Q2 queuesQ2 with encryptedData

Trip processes

8.1.4 Multi-place / multi-loader

When a site has 2+ product places, each place can have its own loader running parallel trips.

  1. 1Office: site links multiple places per product (or multiple products).
  2. 2Foreman: Site starter assigns one loader per place.
  3. 3Each loader generates independent QR → separate trip rows.
  4. 4Drivers must scan the QR from their assigned loader/place.
  5. 5Unloaders complete each trip independently.
Changing loader mid-day: new QR uses new loader; in-flight trips stay with original loader/driver.

Trip processes

8.1.5 Verification codes

Numeric codes alongside QR for poor connectivity or sites that require manual confirmation.

CodeRoleWhen shown
Loader verification codeLoaderAfter scanQRCode; expires (~2 min)
Driver verification codeDriverAfter acceptTrip; driver may need to confirm
Unloader verification codeUnloaderOn car row before completeTrip

When to use codes vs QR only

  • QR-only: good connectivity, standard handoff.
  • Codes: backup when camera fails or process requires verbal confirmation.
  • Expired codes: UI shows expired — regenerate by re-showing QR or re-accepting per safety rules.

Trip processes

8.1.6 Offline & sync queues

Mobile queues failed mutations locally. When back online, Work → Sync all uploads them in order.

QueueWhat was offlineAPI action
Q1 — Pending trip creationsLoader generated QR but server never got scanQRCodescanQRCode replay
Q2 — Pending accept tripsDriver accepted QR offlineacceptTrip replay
Q3 — Pending driver tripsDriver created trip without loader offlinecreateTrip replay
Q4 — Pending complete tripsUnloader completed offlinecompleteTrip replay

Sync algorithm

  1. 1User taps sync badge on Work tab (must be online).
  2. 2Pass 1: Q1 creations → Q2 accepts → Q3 driver trips → Q4 completes.
  3. 3Pass 2: retry any that failed due to ordering (e.g. accept before create landed).
  4. 4Refresh cached site data (up to 15 sites per project).
  5. 5If N failed: stay online, sync again, or contact support with timestamp.

Outcome scenarios

  • All succeed: trips reach unloaded; queues cleared.
  • Partial fail: some trips stuck — retry sync; check which queue failed.
  • Idempotent retry: alreadyAccepted / alreadyCompleted treated as success.
  • Duplicate guards: system blocks abusive duplicate offline payloads.

Trip processes

8.1.7 Buffered accept

When a driver scans before the loader trip reaches the server (loader offline, driver online), the accept may be buffered instead of failing permanently.

  1. 1Loader offline: shows QR locally, trip in Q1 queue.
  2. 2Driver online: scans QR → server may store pending_offline_events buffer.
  3. 3Loader syncs Q1 → trip created on server.
  4. 4Next sync pass applies buffered accept → driving.
Related to offline Q1+Q2 ordering. Not a duplicate trip — buffer applies when create finally lands.

Trip processes

8.1.8 Reassign driver mid-site

Foreman or coordinator can change personnel while site is Loading.

  1. 1Site detail → remove driver from site personnel or change assignment.
  2. 2Add new driver from project member pool.
  3. 3In-flight trips keep original driver until complete.
  4. 4New loader QR uses newly selected driver only.
Do not expect an active driving trip to transfer — reassign affects new trips only.

Trip processes

8.1.10 Office post-trip edit

Office engineers can correct trip data after field completion.

  1. 1Open site detail or project trips table.
  2. 2Select trip → edit quantity, times, plate, locations where permitted.
  3. 3Save — may trigger re-verification or report recalculation.
  4. 4For exceptions: use trip issue approval flow instead of raw edit.
SituationAction
Wrong quantity enteredEdit trip quantity on site detail
GPS needs recheckReset checked flag; wait for verification cron
Material went to wrong placeDriver reports issue → foreman classifies → office approves

End-to-end playbook

Phase A — Office setup

Goal: Project exists, materials defined, sites created, people assigned — before field work begins.

StepWhoWhere (web)
A1 Log in (phone → Telegram 6-digit code)Engineer / admin/login → /dashboard
A2 Switch company if user has severalAdminHeader company dropdown
A3 User Management: add company workersHR/dashboard/CompanyUsers
A4 Projects → + New project (LINEAR: CSV/map · AREA: draw polygon)Engineer/dashboard/projectsHome
A5 Open project → add Products (DELIVERY or DISPOSAL)EngineerProject detail
A6 For each product → Product places (chainage or GPS)EngineerProduct places dialog
A7 + Add / Manage Users — project members (drivers need equipment)EngineerProject detail
A8 Manage Sites — chainage or map polygon, dates, products+placesEngineerProject detail
A9 Site detail — foreman, speed/times, paper QR, generate reportEngineer.../sites/[siteId]

Detailed order for a new LINEAR project

  1. 1Create project from CSV or map points — verify chainage range on project card.
  2. 2Add each material as a product with unit and target quantity.
  3. 3For DELIVERY products: add LOADING places along chainage; optional UNLOADING places.
  4. 4For DISPOSAL products: add DISPOSAL dump places with GPS or chainage.
  5. 5Assign all field workers as project members; pick truck plate for each driver.
  6. 6Create sites: delivery sites use chainage range; disposal sites tick isDisposalSite and pick dumps.
  7. 7Open site detail: set foreman, average speed, loading/unloading times.

Detailed order for a new AREA project

  1. 1Confirm company has area_projects feature enabled.
  2. 2Create AREA project — draw closed boundary polygon on map.
  3. 3Add products; for each place enter lat/lng (chainage not used).
  4. 4Assign project members as above.
  5. 5Manage Sites — draw site polygon inside project boundary (or use whole project area).
  6. 6Verify site area displays on dashboard; click to preview map overlay.
Driver without loader: When enabled on a site in Manage Sites, mobile allows starting the site with supervisor only and drivers may create trips without loader QR. Coordinate with field before enabling.

End-to-end playbook

Phase B & C — Field operations

Phase B — Field start (mobile)

StepWhoWhere (mobile)
B1 Log in; allow location & cameraAllLogin → Passcode → tabs
B2 Work → open projectCoordinator / rolesWork tab
B3 Delivery site: Site starter — loader per place + supervisor → StartForemanSites list
B3b Disposal site: pickup loaders + dump unloaders → Start (no supervisor)ForemanSites list
B4 Loader: Start loading if needed → Loader site detailLoaderLoader sites

Phase C — Daily operations (mobile)

  1. 1Loader: assign driver, display QR (or use printed loader paper QR from web site page).
  2. 2Driver: scan QR to accept trip — status becomes driving.
  3. 3Driver: transport; use verification codes if your process requires them.
  4. 4Unloader: scan or verify to complete unloading — trip becomes unloaded.
  5. 5If offline: when back online, Work → tap sync badge to upload queued actions.

End-to-end playbook

Phase D — Reporting & closure

StepWhoWhere
D1 Dashboard KPIs and recent activityManagementWeb /dashboard
D2 Products report + product analysisEngineer / QSDashboard → Products tile
D3 Equipment report (filters, drill-down)OfficeSidebar Equipment Report
D4 Site detail → Generate report / mark DoneEngineerSite detail page
D5 Approve trip issues (updates totals & may auto-report one trip)BackofficeSite or project trip panels
D6 Owner equipment usageOwnerMobile Reports tab

Office dashboard

Sign in & company switch

  1. 1
    Open /login

    Enter phone number in international format as your organization standardizes.

  2. 2
    Request code

    Backend sends a one-time code; user reads it in Telegram.

  3. 3
    Enter 6-digit code

    App stores JWT and redirects to /dashboard.

  4. 4
    Switch company (if applicable)

    Header → Company dropdown → pick company → new token for that company → dashboard reloads.

  5. 5
    Logout

    Sidebar Logout clears session; use on shared PCs.

Session uses browser storage with token refresh; you may need to log in again after a long day. The /register page is not wired for self-signup — onboard users via User Management instead.

Office dashboard

Dashboard KPIs

Quick actions (large tiles)

  • Projects → project list
  • Products → products report (not in narrow sidebar)
  • Users → Company Users
  • Account → account settings

What you see on the dashboard

  • Overview cards: total cars, users, projects, active sites.
  • Material delivery: each product row — planned vs delivered, progress bar; tap row for product analysis.
  • Trip statistics: counts by loading, driving, unloading, unloaded, needs checking, approved.
  • Site statistics: not started, loading, done, with/without foreman.
  • Recent trips, sites, projects — useful for daily standups.

Office dashboard

User management

Route: /dashboard/CompanyUsers — used by HR / admin.

Mode A — By phone (Telegram user)

  1. 1Open Add User → choose By phone.
  2. 2Enter country code and phone; fetch preview if offered.
  3. 3Select role from directory → Save under current company.

Mode B — Without Telegram

  1. 1Choose Without Telegram — read warning: user becomes Loader_load only; role cannot be changed later.
  2. 2Enter name, phone, optional username → Save.
After adding company workers, project engineers must still add them as project members or they will not see assignments on mobile Work.

Office dashboard

Projects list & export

  1. 1Sidebar → Projects (/dashboard/projectsHome).
  2. 2Search filters project names on the current loaded page (10 per page).
  3. 3+ New project opens creation dialog.
  4. 4Export CSV downloads Project Name, Cars, Workers, KPI %, Points, Chainage Range for the current filtered page — paginate if you need all projects.

Office dashboard

Create project (CSV / map)

Prerequisite

Login must have an active company. If the dialog says company is missing, re-login or switch company.

Mode A — Upload CSV

  1. 1Tab Upload CSV → enter project name.
  2. 2File must end with .csv.
  3. 3Required columns: chainage, easting, northing, elevation.
  4. 4Example row: 13+800,500000.0,1200000.0,1500.5
  5. 5Submit Create — wait for success — page reloads.

Mode B — From map points

  1. 1Tab From map points → project name.
  2. 2Set interval in meters (e.g. 50) for derived chainage along the polyline.
  3. 3Optional starting chainage: 0+000, 13+800, or plain meters; empty = 0+000 at first point.
  4. 4Enter at least two points per line as longitude,latitude (WGS84), e.g. 38.123456,9.012345.
  5. 5Optionally click the map to append points.
  6. 6Submit Create project.
Common mistakes: wrong column names; unparseable chainage; swapped lat/lng; only one map point.

Office dashboard

Project detail & members

Route: /dashboard/projectsHome/[id]

Recommended order for a new project

  1. 1Products — create each material (name, unit, targets).
  2. 2Product places — for each product, define places along chainage.
  3. 3+ Add / Manage Users — attach company workers; drivers must pick plate/equipment when required.
  4. 4Manage Sites — create sites (see next section).
  5. 5Cars dialog — maintain project vehicles as needed.

Assign existing worker to project

  1. 1Open + Add / Manage Users.
  2. 2Select worker from available list.
  3. 3If role is driver — pick equipment / plate before assign.
  4. 4Assign to project — confirm row in members table.

Invite by phone from project dialog

  1. 1Enter country code and phone → fetch preview.
  2. 2Choose role and status → Save (may create company worker then assign).
  3. 3Tell user to log in on mobile with same phone.

Office dashboard

Manage sites (LINEAR)

Open Manage Sites from project detail. For LINEAR projects the dialog shows allowed chainage range. For AREA projects use the map-based site dialog — see AREA projects section.

FieldRule
Site nameRequired
Start chainagee.g. 13+800 — inside project range
End chainageAfter start — inside project range
Start dateRequired
Allow driver trip without loaderOptional — drivers may create trips without loader QR on this site
ProductsTick at least one
Places per productFor each ticked product, tick at least one place

After save, open the site from the table for trip management and reports.

Office dashboard

Site detail & trips

Route: .../sites/[siteId]

Trips table

  • Monitor statuses: loading, driving, unloading, unloaded, needs checking, approved.
  • Trip issue banners show when driver reported an issue or foreman classified — waiting for backoffice.
  • Edit trip fields where permissions allow (quantity, times, plates).

Site settings

  • Set foreman / supervisor.
  • Average car speed, loading time, unloading time — often required before save.

Loader paper QR

Generate printable QR for yards without phones at the loading point (paper QR creates a new trip on driver scan — see QR scenarios).

Generate report

  1. 1Check whether a report already exists for the site/day.
  2. 2Click Generate Report when eligible trips are complete — recalculates equipment-per-trip scores for that calendar day.
  3. 3Approving a trip issue can run the same logic for that single trip only.

Finish site

When work is truly complete, use the action to set site status Done.

Office dashboard

Trip issues (backoffice)

NONE → ISSUE_REPORTED → PENDING_APPROVAL → APPROVED
                              ↘ reject → ISSUE_REPORTED (foreman may re-classify)

Step by step

  1. 1
    Driver reports issue

    Mobile — trip owner flags problem. Status: issue_reported. Excluded from product totals.

  2. 2
    Foreman classifies

    Mobile or dashboard — picks one of four resolution types. Status: pending_approval.

  3. 3
    Backoffice approves or rejects

    Dashboard Trip Exception panel on site/project — roles: owner, sys_admin, project_manager, office_engineer, site_engineer.

  4. 4
    On approve

    reportValue snapshotted from classification. Reached intended / new useful location → trip may become unloaded + per-trip equipment report generated.

  5. 5
    On reject

    Returns to issue_reported; classification cleared; foreman can submit again.

See Trip issues (exceptions) below for classification values and report impact.

Office dashboard

Products report

  1. 1Dashboard quick action → Products (/dashboard/products-report).
  2. 2View aggregates across projects: target vs current, active trips hints.
  3. 3Use search and filters.
  4. 4Click a product for Product analysis — charts, progress, logistics views.
  5. 5Approved trip issues contribute fixed report values; pending issues contribute zero.

Office dashboard

Equipment report

  1. 1Sidebar → Equipment Report.
  2. 2Choose date range (calendar).
  3. 3Optionally filter by project and site.
  4. 4Generate / refresh — driver-centric compliance-style summary.
  5. 5Click equipment row for individual machine view (period may default to today — check on-screen labels).
Current implementation may always send groupBy=project in the API until UI supports other groupings.

Office dashboard

Where to find features

You want…Path
ProjectsSidebar → Projects
Company usersSidebar User Management or Dashboard Users tile
Equipment reportSidebar Equipment Report
Nearby equipmentSidebar Nearby Equipment
Products reportDashboard Products tile (not sidebar)
AccountHeader user menu
LogoutSidebar bottom
Full tutorialTop menu → Tutorial

Mobile field app

Install, permissions, login

  • Install from Play Store or internal channel your company provides.
  • If forced update modal appears, install latest build from store.
  • Grant camera (QR) and location (nearby projects, trip payloads).

Sign in

  1. 1Enter phone — app normalizes 09… to 2519…, 9-digit local to 251…, keeps 251… as-is.
  2. 2Send code → read Telegram → enter 6 digits on passcode screen.
  3. 3Five tabs appear on success.
  4. 4Logout: Account → Log out on shared phones.

Mobile field app

Five tabs overview

TabPurpose
HomeEquipment marketplace feed — filters, pagination, detail
WorkProjects — role-based sites, QR, sync
Add PostFive-step equipment listing wizard (tab bar hidden)
ReportsOwner trip history by date range — not favorites
AccountProfile, my equipment, nearby projects, logout

Mobile field app

Work tab anatomy

  • Title: Projects — subtitle Online or Offline · using saved data.
  • Filter chips: All, Active, Upcoming, Completed (derived from material progress on cards).
  • Sync badge (top right): upload offline queues when online.
  • Project cards: name, dates, site count, progress — tap to continue.

Role priority (multiple hats)

If user has mixed roles, Work filters in order: Loader first, else Driver, else Unloader, else generic coordinator list.

Mobile field app

Foreman / coordinator

  1. 1
    Work → project

    Generic routing → Sites list with Active / Done / All.

  2. 2
    Not Started site

    Site starter: assign loader per product place, assign supervisor, Start site when enabled.

  3. 3
    Driver without loader sites

    Start may enable with supervisor only when office enabled the flag.

  4. 4
    Loading / Done site

    Site detail — manage drivers, loaders, unloaders, view trucks.

  5. 5
    Classify trip issues

    When driver reported issue — pick resolution type → pending_approval for backoffice.

Mobile field app

Loader operations

  1. 1
    Work → project

    See loader-assigned projects only.

  2. 2
    Loader sites

    Lists sites in Loading status (Not Started may use Start loading flow first).

  3. 3
    Loader site detail

    Refresh trucks → select driver → show QR in LoaderQRCodeDialog.

  4. 4
    Wait for driver scan

    Online: immediate accept. Offline: show QR, sync later from Work.

  5. 5
    Pending trips strip

    If offline at QR time, local pending items until sync succeeds.

Mobile field app

Driver operations

  1. 1
    Work → project → Driver sites

    Cards show chainage, pending cars, coarse status.

  2. 2
    Scan QR

    Camera → scan loader QR → confirm → trip becomes driving (same trip, no duplicate).

  3. 3
    Transport & codes

    Use car info and verification codes per site process.

  4. 4
    Report trip issue

    If delivery went wrong — flags issue_reported for foreman.

  5. 5
    Create trip without loader

    Only if site.allowDriverTripWithoutLoader — pick product + equipment; may need one online session to cache trucks.

Mobile field app

Unloader operations

  1. 1
    Work → project → Unloading sites

    My unloading sites list.

  2. 2
    Unloader site detail

    See incoming vs unloaded trucks.

  3. 3
    Scan / complete unload

    Correct QR for trip → confirm → unloaded.

  4. 4
    Refresh & sync

    Pull to refresh if stale; Work → sync after offline complete.

Mobile field app

Offline & sync

Action while offlineQueue
Loader generated trip/QR not reaching serverPending trip creations
Driver accepted tripPending accept trips
Driver created trip without loaderPending driver trips
Unloader completed unloadPending complete trips

Sync all

  1. 1Be online → Work → tap sync badge.
  2. 2Upload order: creations → accepts → driver trips → completes (may repeat once).
  3. 3Refreshes cached site data (bounded: up to 15 sites per project).
  4. 4If N failed, stay online and sync again or contact support.
Web dashboard has no equivalent mutation queue — office needs connectivity for changes.

Mobile field app

Verification codes

Some deployments use numeric codes alongside or instead of QR:

  • Loader may show loader verification code with expiry on trip card.
  • Driver enters or confirms driver code after scan.
  • Unloader uses unloader verification code on car row.
  • Expired codes show expired in UI — request regeneration per safety rules.

Trips & QR

Trip statuses

StatusPhaseWho acts
loadingAt product placeLoader
drivingEn routeDriver
unloadingAt destinationUnloader
unloadedComplete
needs checkingPending GPS verificationSystem / office
approvedVerified closedOffice / automated check

Trips & QR

Full trip lifecycle

PHASE 5 — Office: project, products, places, sites, members
PHASE 6 — Office: foreman, speed, loading/unloading times, flags
PHASE 7 — Foreman: Site starter → assign teams → Start site (Loading)
PHASE 8 — Field:
    Loader: assign driver → QR (or paper QR / driver-create if configured)
    Driver: scan QR → driving → transport
    Unloader: scan/verify → unloaded
PHASE 9 — Office:
    GPS verification → needs checking / approved
    Trip issues → approve/reject
    Generate report → site Done

End-to-end journey map

JourneyOffice setupField pathFinal state
P-01 Standard deliveryProject, site, members, foremanLoader QR → driver scan → unloaderunloaded
P-02 Paper QRGenerate paper QR on site detailDriver scan paper → unloaderunloaded
P-03 Driver without loaderEnable no-loader flagSupervisor start → driver create → unloaderunloaded
P-04 Multi-place2+ places on site2 loaders, 2 parallel trips2× unloaded
P-07 Exception loopDriver report → foreman classify → office approveapproved + reportValue

Trips & QR

QR payload variants

QR typeBehaviourTrip status after
Standard loader QRDecrypt → find trip → acceptTriploading → driving
Paper QR (r: paper)Creates trip + accept in one scandriving immediately
Driver without loaderNo QR — driver createTrip APIdriving immediately
Legacy QR without identifier jFallback: find LOADING trip by loader + productdriving
QR includes tripIdUpdates that specific tripdriving
Non-paper loader QR, no trip yetError or buffer (8.1.7) — never duplicate create
Client must not overwrite identifier in request body with empty decrypt result — backend uses body identifier when payload lacks j.

Trip issues

Issue workflow

StepActorStatus after
Normal tripNONE
Driver flags issueDriverISSUE_REPORTED
Foreman classifiesSite foreman (project_sites.foremanId)PENDING_APPROVAL
Backoffice approvesDashboard roleAPPROVED + reportValue set
Backoffice rejectsDashboard roleISSUE_REPORTED (classification cleared)

ISSUE_REPORTED, PENDING_APPROVAL: excluded from product totals (contribution 0). APPROVED: uses snapshotted reportValue.

Trip issues

Classifications & reports

ClassificationReport valueTrip status on approve
Material returned to loading site0Unchanged
Material wasted at wrong place−1Unchanged
Material reached intended site+1→ unloaded (+ endTime if missing)
Material unloaded at new useful location+1→ unloaded (+ endTime if missing)
  • On approve for +1 outcomes: per-trip equipment report runs (same logic as Generate Report for that day, that trip only).
  • reportGenerated = true on the approved trip.
  • Foreman can re-classify until backoffice approves or rejects.

Reports

Owner reports (mobile)

  1. 1Mobile Reports tab — pick start/end date.
  2. 2Equipment list with trip counts for range.
  3. 3Tap equipment → trip list with times, locations, quantity.
  4. 4Web office uses dashboard + equipment report + site generate-report instead.

Reports

GPS trip verification

Econ runs automatic GPS verification after a trip reaches unloaded. The goal is to confirm that load and unload actions happened in the right place — either along a LINEAR alignment (chainage) or inside an AREA site zone polygon.

When verification runs

  • Runs periodically for trips with status unloaded and not yet checked.
  • Writes per-role results to the trip: loader/driver/unloader GPS checks plus an overall tripStatus label.
  • Office sees the badges in Trip Details; mobile sees them as informational.

LINEAR projects (alignment / chainage)

LINEAR verification uses the survey parquet (from the project CSV) as the source of truth.

  • Loader: loader GPS is compared to the selected LOADING product place (point + radius or chainage-derived point).
  • Driver (unload): driver unloading GPS is compared to the survey point at the unloaded chainage.
  • Unloader: unloader GPS is compared to the same survey point at the unloaded chainage.
  • Typical radius: ~100m (configurable via place geofence where applicable).

AREA projects (closed polygon sites)

AREA verification combines product places (where loading happens) with the site polygon (where unloading must occur).

CaseLoader + Driver load checked againstDriver unload + Unloader checked against
AREA + DELIVERY productLOADING place (point + geofence radius)Site zone polygon (inside boundary)
AREA + DISPOSAL product (pickup-only)Site zone polygon (pickup must be inside)PASS when no dump destination is selected
AREA + DISPOSAL product (known dump)Site zone polygon (pickup must be inside)DISPOSAL dump destination place (point + geofence radius)
Tip: On AREA sites, the office creates the site zone by drawing on the map. Trips that unload outside the drawn zone will fail the unload-side verification.

GPS capture points

EventRoleFields capturedChecked against
Load startLoaderloaderLat, loaderLngLOADING place or site polygon (by product type)
Accept / loadDriverdriverLat, driverLngSame as loader for AREA DELIVERY
Unload completeDriverdriverUnloadingLat, driverUnloadingLngSite polygon or chainage point
Unload completeUnloaderunloaderLat, unloaderLngSite polygon or chainage point

Per-role outcomes

ResultMeaningOffice action
passGPS within allowed zone/geofenceNo action — informational badge
failGPS outside expected zoneTrip may show Loader/Driver/Unloader Location Issue
skipNo GPS captured for that roleInformational — not treated as pass

Verification statuses on trip

  • unloaded — field work complete.
  • needs checking — GPS rule mismatch; awaiting review.
  • approved — passed automated or manual review; counts in compliance reports.
  • tripStatus labels: verified, loader_red, driver_red, unloader_red, etc.

Spatial buffer (AREA polygons)

Polygon checks use a tolerance buffer (default 20m). DuckDB converts meters to degrees for WGS84 — otherwise far-away points could incorrectly pass.

Equipment marketplace

Listings & owner flow

Owner / marketplace (mobile & field web)

  1. 1Home: browse equipment with filters.
  2. 2Add Post: 5 steps — category, type, specs, up to 4 images, details (phone required).
  3. 3Account: profile, my equipment, update location for nearby features.
  4. 4Reports: usage and trips per machine (not the web Hearted placeholder).
Web route /hearted in the main (non-dashboard) area is Coming soon — office analytics live under /dashboard.

People

Roles & tools

RoleToolMain tasks
Office / engineersThis web dashboardProjects, sites, reports, trip review, user management
ForemanMobile WorkStart site, assign loaders, classify trip issues
LoaderMobile / field webStart loading, QR handoff, verification codes
DriverMobile / field webAccept trips, transport, report issues
UnloaderMobile / field webVerify arrival, complete unloading
Equipment ownerMobile / field webList equipment, usage reports, notify interest

People

Security & access

  • Phone + Telegram one-time code for web and mobile.
  • Web: JWT in browser storage, company-scoped token, ~24h session guard with refresh.
  • Mobile: long-lived session in device storage with refresh on 401.
  • RBAC: dashboard areas (users, trip approve, reports) depend on company role keys.
  • Multi-company: switch company on web header only.

Privacy policy

Help

Troubleshooting

SymptomLikely causeWhat to try
Web login no codePhone not registered / Telegram botAdmin checks worker; start bot; retry
Cannot create projectMissing companyId on tokenRe-login; switch company
Site save fails (LINEAR)Chainage outside range; no placesFix chainage; add product places
Site save fails (AREA)Polygon outside project boundaryRedraw site inside project map
Add place fails (AREA)chainagePoint required errorEnter lat/lng instead — chainage not used on AREA
GPS all pass but wrong locationAREA trip used CENTERLINE modeEnsure project type AREA; re-run verification
Loader pass, unloader fail (AREA)Unload GPS outside site polygonCheck site boundaryGeoJson matches field location
Mobile no projectsNot project memberOffice assigns on project
Work shows OfflineNetwork; cached listCoverage; sync when online
Loader list emptyOnly Loading sites shownForeman must start site
Driver cannot create tripSite flag offOffice enables allow without loader
Sync failuresBad queued payloadRetry; capture time for support
Web Hearted emptyPlaceholder routeUse dashboard reports

Help

FAQ

Can one person be loader on one project and driver on another?

Yes on server; mobile Work shows loader view if any assignment is loader (see role priority).

Where are favorites on mobile Reports tab?

Reports tab is equipment usage history, not favorites (internal name Hearted).

Who creates the site?

Geometry and products on web; starting site for field work is usually mobile foreman.

Can drivers work without loaders?

Only if office enabled Allow driver to create trip without loader on that site.

What is the difference between LINEAR and AREA?

LINEAR uses chainage along a centerline. AREA uses map polygons and GPS coordinates for places and site zones. See Project types section.

Do I need chainage on AREA projects?

No. Sites show area (m²) instead of chainage. Product places require latitude and longitude.

What happens if GPS verification fails?

Trip shows fail badges per role. Office reviews in Trip Details. Field should allow location permission and work inside the defined site zone or loading place.

Help

Known limitations

Web

  • /register does not submit — use User Management.
  • Main /hearted is not office analytics.
  • Projects status filter may be incomplete server-side.
  • CSV export is current page only.

Mobile

  • Forced update if store version ahead of app check.
  • Role priority can confuse loader+driver users.
  • Driver-create-trip offline needs one online session to cache equipment list.

Finished the guide? Put it into practice.

Log in to the dashboard or hand the mobile app to your field team — the same workflows you just read about are live in your company account.