Training manual
Scroll or use the contents sidebar to navigate 40 sections.
Tip: hover a heading for the section link icon
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).
Shorter topic pages are also available from the home menu: Platform, Trips, Trip issues, Office dashboard, Roles.
| Term | Meaning |
|---|---|
| Company | Your employer org in Econ. Office users may belong to several and switch in the header. |
| Company worker | Person in the company directory (phone, role). Created in User Management — not the same as project membership. |
| Project member | Company worker assigned to a specific project (drivers often have linked equipment). |
| Project | Construction alignment (chainage) from CSV or map points; contains products, places, sites, members. |
| Product | Material tracked on a project (e.g. aggregate) with units and target quantities. |
| Product place | Loading/handoff point along the line for that product. |
| Site | Segment of project (start/end chainage), dates, linked products/places. |
| Chainage | Distance along centerline, e.g. 13+800 (km+mmm). Sites must sit inside the project range. |
| Trip | One load movement: loader → driver → unloader (office can edit and approve issues). |
| QR handoff | Loader shows QR; driver scans in mobile to accept the trip. |
| Report value | Fixed score on approved trip issues: 0, −1, or +1 — affects product totals. |
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.
| Surface | Who | Main work |
|---|---|---|
| Web dashboard | Engineers, dispatch, HR, management | Projects, sites, KPIs, reports, trip issue approval |
| Mobile app | Loader, driver, unloader, foreman | Work tab, QR, site start, issue report/classify |
| Mobile / web (field) | Equipment owner | List 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.
Goal: Project exists, materials defined, sites created, people assigned — before field work begins.
| Step | Who | Where (web) |
|---|---|---|
| A1 Log in (phone → Telegram 6-digit code) | Engineer / admin | /login → /dashboard |
| A2 Switch company if user has several | Admin | Header company dropdown |
| A3 User Management: add company workers | HR | /dashboard/CompanyUsers |
| A4 Projects → + New project (CSV or map) | Engineer | /dashboard/projectsHome |
| A5 Open project → add Products | Engineer | Project detail |
| A6 For each product → Product places | Engineer | Product places dialog |
| A7 + Add / Manage Users — project members (drivers need equipment) | Engineer | Project detail |
| A8 Manage Sites — chainage, dates, products+places | Engineer | Project detail |
| A9 Optional: site detail — foreman, settings, loader paper QR | Engineer | .../sites/[siteId] |
Phase B — Field start (mobile)
| Step | Who | Where (mobile) |
|---|---|---|
| B1 Log in; allow location & camera | All | Login → Passcode → tabs |
| B2 Work → open project | Coordinator / roles | Work tab |
| B3 Not Started site → Site starter: loaders per place + supervisor → Start site | Foreman | From sites list |
| B4 Loader: Start loading if needed → Loader site detail | Loader | Loader sites |
Phase C — Daily operations (mobile)
- 1Loader: assign driver, display QR (or use printed loader paper QR from web site page).
- 2Driver: scan QR to accept trip — status becomes driving.
- 3Driver: transport; use verification codes if your process requires them.
- 4Unloader: scan or verify to complete unloading — trip becomes unloaded.
- 5If offline: when back online, Work → tap sync badge to upload queued actions.
| Step | Who | Where |
|---|---|---|
| D1 Dashboard KPIs and recent activity | Management | Web /dashboard |
| D2 Products report + product analysis | Engineer / QS | Dashboard → Products tile |
| D3 Equipment report (filters, drill-down) | Office | Sidebar Equipment Report |
| D4 Site detail → Generate report / mark Done | Engineer | Site detail page |
| D5 Approve trip issues (updates totals & may auto-report one trip) | Backoffice | Site or project trip panels |
| D6 Owner equipment usage | Owner | Mobile Reports tab |
- 1Open /login
Enter phone number in international format as your organization standardizes.
- 2Request code
Backend sends a one-time code; user reads it in Telegram.
- 3Enter 6-digit code
App stores JWT and redirects to /dashboard.
- 4Switch company (if applicable)
Header → Company dropdown → pick company → new token for that company → dashboard reloads.
- 5Logout
Sidebar Logout clears session; use on shared PCs.
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.
Route: /dashboard/CompanyUsers — used by HR / admin.
Mode A — By phone (Telegram user)
- 1Open Add User → choose By phone.
- 2Enter country code and phone; fetch preview if offered.
- 3Select role from directory → Save under current company.
Mode B — Without Telegram
- 1Choose Without Telegram — read warning: user becomes Loader_load only; role cannot be changed later.
- 2Enter name, phone, optional username → Save.
- 1Sidebar → Projects (/dashboard/projectsHome).
- 2Search filters project names on the current loaded page (10 per page).
- 3+ New project opens creation dialog.
- 4Export CSV downloads Project Name, Cars, Workers, KPI %, Points, Chainage Range for the current filtered page — paginate if you need all projects.
Prerequisite
Login must have an active company. If the dialog says company is missing, re-login or switch company.
Mode A — Upload CSV
- 1Tab Upload CSV → enter project name.
- 2File must end with .csv.
- 3Required columns: chainage, easting, northing, elevation.
- 4Example row: 13+800,500000.0,1200000.0,1500.5
- 5Submit Create — wait for success — page reloads.
Mode B — From map points
- 1Tab From map points → project name.
- 2Set interval in meters (e.g. 50) for derived chainage along the polyline.
- 3Optional starting chainage: 0+000, 13+800, or plain meters; empty = 0+000 at first point.
- 4Enter at least two points per line as longitude,latitude (WGS84), e.g. 38.123456,9.012345.
- 5Optionally click the map to append points.
- 6Submit Create project.
Route: /dashboard/projectsHome/[id]
Recommended order for a new project
- 1Products — create each material (name, unit, targets).
- 2Product places — for each product, define places along chainage.
- 3+ Add / Manage Users — attach company workers; drivers must pick plate/equipment when required.
- 4Manage Sites — create sites (see next section).
- 5Cars dialog — maintain project vehicles as needed.
Assign existing worker to project
- 1Open + Add / Manage Users.
- 2Select worker from available list.
- 3If role is driver — pick equipment / plate before assign.
- 4Assign to project — confirm row in members table.
Invite by phone from project dialog
- 1Enter country code and phone → fetch preview.
- 2Choose role and status → Save (may create company worker then assign).
- 3Tell user to log in on mobile with same phone.
Open Manage Sites from project detail. Dialog shows allowed chainage range for the project.
| Field | Rule |
|---|---|
| Site name | Required |
| Start chainage | e.g. 13+800 — inside project range |
| End chainage | After start — inside project range |
| Start date | Required |
| Allow driver trip without loader | Optional — drivers may create trips without loader QR on this site |
| Products | Tick at least one |
| Places per product | For each ticked product, tick at least one place |
After save, open the site from the table for trip management and reports.
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
- 1Check whether a report already exists for the site/day.
- 2Click Generate Report when eligible trips are complete — recalculates equipment-per-trip scores for that calendar day.
- 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.
NONE → ISSUE_REPORTED → PENDING_APPROVAL → APPROVED
↘ reject → ISSUE_REPORTED (foreman may re-classify)Step by step
- 1Driver reports issue
Mobile — trip owner flags problem. Status: issue_reported. Excluded from product totals.
- 2Foreman classifies
Mobile or dashboard — picks one of four resolution types. Status: pending_approval.
- 3Backoffice approves or rejects
Dashboard Trip Exception panel on site/project — roles: owner, sys_admin, project_manager, office_engineer, site_engineer.
- 4On approve
reportValue snapshotted from classification. Reached intended / new useful location → trip may become unloaded + per-trip equipment report generated.
- 5On reject
Returns to issue_reported; classification cleared; foreman can submit again.
See Trip issues (exceptions) below for classification values and report impact.
- 1Dashboard quick action → Products (/dashboard/products-report).
- 2View aggregates across projects: target vs current, active trips hints.
- 3Use search and filters.
- 4Click a product for Product analysis — charts, progress, logistics views.
- 5Approved trip issues contribute fixed report values; pending issues contribute zero.
- 1Sidebar → Equipment Report.
- 2Choose date range (calendar).
- 3Optionally filter by project and site.
- 4Generate / refresh — driver-centric compliance-style summary.
- 5Click equipment row for individual machine view (period may default to today — check on-screen labels).
- 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
- 1Enter phone — app normalizes 09… to 2519…, 9-digit local to 251…, keeps 251… as-is.
- 2Send code → read Telegram → enter 6 digits on passcode screen.
- 3Five tabs appear on success.
- 4Logout: Account → Log out on shared phones.
| Tab | Purpose |
|---|---|
| Home | Equipment marketplace feed — filters, pagination, detail |
| Work | Projects — role-based sites, QR, sync |
| Add Post | Five-step equipment listing wizard (tab bar hidden) |
| Reports | Owner trip history by date range — not favorites |
| Account | Profile, my equipment, nearby projects, logout |
- 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.
- 1Work → project
Generic routing → Sites list with Active / Done / All.
- 2Not Started site
Site starter: assign loader per product place, assign supervisor, Start site when enabled.
- 3Driver without loader sites
Start may enable with supervisor only when office enabled the flag.
- 4Loading / Done site
Site detail — manage drivers, loaders, unloaders, view trucks.
- 5Classify trip issues
When driver reported issue — pick resolution type → pending_approval for backoffice.
- 1Work → project
See loader-assigned projects only.
- 2Loader sites
Lists sites in Loading status (Not Started may use Start loading flow first).
- 3Loader site detail
Refresh trucks → select driver → show QR in LoaderQRCodeDialog.
- 4Wait for driver scan
Online: immediate accept. Offline: show QR, sync later from Work.
- 5Pending trips strip
If offline at QR time, local pending items until sync succeeds.
- 1Work → project → Driver sites
Cards show chainage, pending cars, coarse status.
- 2Scan QR
Camera → scan loader QR → confirm → trip becomes driving (same trip, no duplicate).
- 3Transport & codes
Use car info and verification codes per site process.
- 4Report trip issue
If delivery went wrong — flags issue_reported for foreman.
- 5Create trip without loader
Only if site.allowDriverTripWithoutLoader — pick product + equipment; may need one online session to cache trucks.
- 1Work → project → Unloading sites
My unloading sites list.
- 2Unloader site detail
See incoming vs unloaded trucks.
- 3Scan / complete unload
Correct QR for trip → confirm → unloaded.
- 4Refresh & sync
Pull to refresh if stale; Work → sync after offline complete.
| Action while offline | Queue |
|---|---|
| Loader generated trip/QR not reaching server | Pending trip creations |
| Driver accepted trip | Pending accept trips |
| Driver created trip without loader | Pending driver trips |
| Unloader completed unload | Pending complete trips |
Sync all
- 1Be online → Work → tap sync badge.
- 2Upload order: creations → accepts → driver trips → completes (may repeat once).
- 3Refreshes cached site data (bounded: up to 15 sites per project).
- 4If N failed, stay online and sync again or contact support.
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.
| Status | Phase | Who acts |
|---|---|---|
| loading | At product place | Loader |
| driving | En route | Driver |
| unloading | At destination | Unloader |
| unloaded | Complete | — |
| needs checking | Pending GPS verification | System / office |
| approved | Verified closed | Office / automated check |
Office: project, site, workers, products
↓
Foreman: Site starter → loaders per place + supervisor → Start site
↓
Loader: assign driver → QR (or paper QR)
↓
Driver: scan QR → driving → transport
↓
Unloader: verify / scan → unloaded
↓
Office: optional GPS check → needs checking / approved
↓
Reports: dashboard, site generate-report, owner mobile Reports| Scenario | Expected result |
|---|---|
| Loader creates trip → driver scans same QR | One trip: loading → driving (no duplicate) |
| Driver creates trip without loader (site flag on) | One trip, status driving immediately |
| Paper QR (r: paper) from web Loader paper QR | New trip created on scan, then accepted → driving |
| QR without identifier | Fallback: find LOADING trip by loader + product |
| Client sends identifier in body | Must not be overwritten by empty decrypt |
| Step | Actor | Status after |
|---|---|---|
| Normal trip | — | NONE |
| Driver flags issue | Driver | ISSUE_REPORTED |
| Foreman classifies | Site foreman (project_sites.foremanId) | PENDING_APPROVAL |
| Backoffice approves | Dashboard role | APPROVED + reportValue set |
| Backoffice rejects | Dashboard role | ISSUE_REPORTED (classification cleared) |
ISSUE_REPORTED, PENDING_APPROVAL: excluded from product totals (contribution 0). APPROVED: uses snapshotted reportValue.
| Classification | Report value | Trip status on approve |
|---|---|---|
| Material returned to loading site | 0 | Unchanged |
| Material wasted at wrong place | −1 | Unchanged |
| 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.
- 1Mobile Reports tab — pick start/end date.
- 2Equipment list with trip counts for range.
- 3Tap equipment → trip list with times, locations, quantity.
- 4Web office uses dashboard + equipment report + site generate-report instead.
ComapySass backend can verify unloaded trips against survey Parquet (from project CSV):
- Runs periodically for trips with status unloaded and not yet checked.
- Compares driver/unloader GPS to survey point within ~100 m (Haversine).
- Trips may show needs checking until verified, then approved.
Owner / marketplace (mobile & field web)
- 1Home: browse equipment with filters.
- 2Add Post: 5 steps — category, type, specs, up to 4 images, details (phone required).
- 3Account: profile, my equipment, update location for nearby features.
- 4Reports: usage and trips per machine (not the web Hearted placeholder).
| Role | Tool | Main tasks |
|---|---|---|
| Office / engineers | This web dashboard | Projects, sites, reports, trip review, user management |
| Foreman | Mobile Work | Start site, assign loaders, classify trip issues |
| Loader | Mobile / field web | Start loading, QR handoff, verification codes |
| Driver | Mobile / field web | Accept trips, transport, report issues |
| Unloader | Mobile / field web | Verify arrival, complete unloading |
| Equipment owner | Mobile / field web | List equipment, usage reports, notify interest |
- 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.
| Symptom | Likely cause | What to try |
|---|---|---|
| Web login no code | Phone not registered / Telegram bot | Admin checks worker; start bot; retry |
| Cannot create project | Missing companyId on token | Re-login; switch company |
| Site save fails | Chainage outside range; no places | Fix chainage; add product places |
| Mobile no projects | Not project member | Office assigns on project |
| Work shows Offline | Network; cached list | Coverage; sync when online |
| Loader list empty | Only Loading sites shown | Foreman must start site |
| Driver cannot create trip | Site flag off | Office enables allow without loader |
| Sync failures | Bad queued payload | Retry; capture time for support |
| Web Hearted empty | Placeholder route | Use dashboard reports |
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.
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.