| WO # | Type | Asset | Title | Status | Due |
|---|---|---|---|---|---|
| {{w.woNo}} | {{w.type==='Preventive'?'PM':'CM'}} | {{assetName(w.assetId)}} | {{w.title}} | {{w.status}} | {{dueLabel(w).t}}{{dueLabel(w).t}} |
| Part | Avail | Min |
|---|---|---|
| {{i.name}} {{i.partNo}} |
{{i.qtyAvailable}} | {{i.minLevel}} |
| WO # | Type | Priority | Asset | Title | Assigned | Status | Due | Cost | |
|---|---|---|---|---|---|---|---|---|---|
| {{w.woNo}} | {{w.type==='Preventive'?'PM':'CM'}} | {{w.priority||'—'}} | {{assetName(w.assetId)}} | {{w.title}} | {{w.assignedTo||'—'}} | {{w.status}} | {{dueLabel(w).t}}{{dueLabel(w).t}} | {{fmtMoney(woTotalCost(w))}} |
| Done ✓ | Asset | Task | Frequency | Assigned | Last Done | Next Due | Status | |
|---|---|---|---|---|---|---|---|---|
| {{assetName(s.assetId)}} | {{s.task}} | every {{s.frequencyDays}}d | {{s.assignedTo||'—'}} | {{s.lastDone||'—'}}today | {{s.nextDue}} | {{pmStatus(s).t}} |
| Code | Name | Category | Location | Criticality | Status | Parts | Added by | |
|---|---|---|---|---|---|---|---|---|
| {{a.code}} | {{a.name}} | {{a.category||'—'}} | {{a.location||'—'}} | {{a.criticality||'—'}} | {{a.status||'—'}} | {{(a.parts||[]).length||''}} | {{a.createdBy||'—'}} |
| Part No. | Name | Category | Location | Available | Used | Min | Stock | Unit Cost | Value | Added by | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{i.partNo}} | {{i.name}} | {{i.category||'—'}} | {{i.location||'—'}} | {{i.qtyAvailable}} | {{consumedQty(i.id)}} | {{i.minLevel}} | {{fmtMoney(i.unitCost)}} | {{fmtMoney((Number(i.qtyAvailable)||0)*(Number(i.unitCost)||0))}} | {{i.createdBy||'—'}} |
| Task | Asset | Assigned | Due | Overdue |
|---|---|---|---|---|
| {{s.task}} | {{assetName(s.assetId)}} | {{s.assignedTo||'—'}} | {{s.nextDue}} | {{-s.days}}d |
| Technician | Tasks | Overdue | On-time |
|---|---|---|---|
| {{a.name}} | {{a.total}} | {{a.overdue||''}} | {{a.pct}}% |
| Asset | Jobs | Downtime | Cost |
|---|---|---|---|
| {{k==='none'?'(unassigned)':assetName(k)}} | {{v.jobs}} | {{v.downtime.toFixed(1)}}h | {{fmtMoney(v.cost)}} |
| Part | Used | Avail | Cost of use |
|---|---|---|---|
| {{c.i.name}} {{c.i.partNo}} | {{c.used}} | {{c.i.qtyAvailable}} | {{fmtMoney(c.used*(Number(c.i.unitCost)||0))}} |
| Date | WO # | Type | Asset | Title | Tech | Downtime | Cost |
|---|---|---|---|---|---|---|---|
| {{w.completedDate||'—'}} | {{w.woNo}} | {{w.type==='Preventive'?'PM':'CM'}} | {{assetName(w.assetId)}} | {{w.title}} | {{w.assignedTo||'—'}} | {{(Number(w.downtimeHours)||0).toFixed(1)}}h | {{fmtMoney(woTotalCost(w))}} |
| When | User | Action | Details |
|---|---|---|---|
| {{fmtTs(a.ts)}} | {{a.username}} | {{a.action}} | {{a.detail}} |
User: upload, download/export, create & edit — but cannot delete data or manage users.
| Name | Username | Note | Requested | |
|---|---|---|---|---|
| {{ s.name }} | {{ s.username }} | {{ s.note||'—' }} | {{ fmtTs(s.requestedAt) }} |
| Name | Username | Role | Created | |
|---|---|---|---|---|
| {{u.name||'—'}}you | {{u.username}} | {{u.role}} | {{u.createdAt?fmtTs(u.createdAt):'—'}} |
| Plant | Location | Created | |
|---|---|---|---|
| {{p.name}}current | {{p.location||'—'}} | {{p.createdAt?fmtTs(p.createdAt):'—'}} |
{{q.message}}
Step-by-step guides to operate the software.
How do I create a work order?
Work Orders → + New Work Order. Pick the type, machine and spares used, set the status. Marking it Completed deducts the spares from stock.
How do I mark a PM task done?
On PM Schedules, tick the Done ✓ checkbox on that row. The next due date moves forward automatically.
How do I upload from Excel?
Backup / Data → download a template, fill it in Excel, then “↑ Upload file”. Re-uploading updates existing rows.
How do I get a new account?
On the login screen tap “+ Request an account”, choose your plant and submit. An admin approves it.
How do I install it on my phone?
Android (Chrome): ⋮ → Add to Home screen. iPhone (Safari): Share → Add to Home Screen.
Describe your problem — you'll get an instant suggested answer, and an admin can reply too.
{{q.message}}
Code, Name, Category, Location, Criticality, Status, Manufacturer, Model, Serial, Install Date.
Part No, Name, Category, Location, Qty Available, Min Level, Unit Cost, Unit, Supplier.
Machine Code, Part No, Qty, Interval (days), Notes. Add machinery & spares first.
Machine Code, Task, Frequency (days), Assigned To, Last Done, Next Due, Active. Matched by machine + task.
Download this plant's data as a JSON backup.
Replace this plant's data from a backup.
Delete all maintenance data (users kept).
{{S.db.assets.length}} assets · {{S.db.workOrders.length}} work orders · {{S.db.pmSchedules.length}} PM · {{S.db.inventory.length}} spares