H2O Origin
ADMIN PORTAL
Water Asset
Management Platform
The central control layer connecting the Technician App and Customer App through one shared, auditable backend.
Ecogleam Manufacturing (Pvt) Ltd
Origin of Clean Water, Origin of Health.
Sign in to continue
{{ signInSub }}
{{ authNotice }}
{{ authError }}
Two-factor authentication — enter the 6-digit code from your authenticator app.
{{ authError }}
DEMO MODE · BACKEND NOT CONFIGURED
Add your Supabase URL + anon key in supabase-config.js to enable real sign-in. Meanwhile, explore a role:
{{ configLine }}
{{ pageTitle }}
{{ pageSub }}
No matches. Try a customer, asset ID, job or claim reference.
VIEWS
Live · updated {{ refreshedAgo }}
Jobs by status
Last 8 weeks · click a segment to drill down
{{ b.m }}
Completed In progress Assigned
Water quality
Approved results · quarter
88%pass rate
Passed
142
Failed
12
Retest
7
Approval aging
Pending items by wait time
{{ a.label }}{{ a.n }}
Top alerts
{{ alertCount }} need action
Recent activity
{{ ac.who }} {{ ac.what }}
{{ ac.when }}
SUBMISSIONCUSTOMER · ASSETTYPETECHNICIANSLASTATUS
Queue clear
No {{ apprTabLabel }} awaiting review right now.
{{ rv.id }}{{ rv.statusLabel }}
{{ rv.type }} · {{ rv.customer }} · {{ rv.asset }}
SLA remaining
{{ rv.slaRemaining }}
Technician
{{ rv.tech }}
Filter replacements
{{ s.n }}
{{ s.name }}
{{ s.sku }} · batch {{ s.batch }}
{{ s.tag }}
Service checklist
{{ ck.label }}
Technician notes
{{ rv.notes }}
Evidence photos
{{ rv.photoCount }} uploaded
{{ p }}
Basic water test
{{ rv.wtStatus }}
{{ pm.name }}
limit {{ pm.limit }}
{{ pm.value }}
{{ pm.tag }}
Previous approved service
{{ rv.prevService }}
QR validation
Scanned asset matches {{ rv.asset }}
Audit timeline
{{ tl.text }}
{{ tl.when }}
{{ rv.actionHint }}
TESTCUSTOMER · ASSETTECHNICIANpHTDSPRELIMSLA
{{ wd.id }}
{{ wd.type }} · {{ wd.customer }} · {{ wd.asset }}
{{ wd.statusLabel }}
Parameters vs {{ wd.profile }} limits
PARAMETERLIMITMEASUREDRESULT
{{ p.name }}{{ p.limit }}{{ p.value }}{{ p.tag }}
{{ wd.flag }}
pH trend vs approved history
Sample metadata
{{ m.k }}{{ m.v }}
Reviewer decision
{{ wd.hint }}
Asset
pH
limit 6.5 – 8.5
{{ l.m }}
TDS
limit ≤ 300 mg/L
{{ l.m }}
Reading history · {{ tr.asset }}
SAMPLEDpHTDSSTATUSREVIEWER
{{ r.date }}{{ r.ph }}{{ r.tds }}{{ r.status }}{{ r.reviewer }}
{{ pr.name }}
DEFAULT
{{ pr.scope }}
{{ r.p }}{{ r.lim }}
{{ pr.effective }}
REPORTLABORATORYCUSTOMER · ASSETSCOPESTATUSVALIDITY
Upload report
{{ s.label }}
{{ wiz.title }}
{{ wiz.sub }}
Drop laboratory report here
PDF, JPG, PNG, DOCX or XLSX · max 25 MB · scanned for malware
Ceylon_Aqua_LR2091.pdf · 1.8 MB
{{ f.label }}
{{ f.value }}
PARAMETERMETHODRESULTLIMIT
{{ r.p }}{{ r.method }}{{ r.result }}{{ r.limit }}{{ r.tag }}
Assigned reviewer
Nadia R. · Water Quality Reviewer
All required metadata and file checks passed
On submit the report enters Under review. It stays internal until an approved report is explicitly published to the Customer App.
Report preview
{{ lr.file }}
{{ lr.num }}
{{ lr.lab }} · {{ lr.customer }} · {{ lr.asset }}
{{ lr.statusLabel }}
{{ m.k }}{{ m.v }}
Structured results
PARAMETERRESULTLIMIT
{{ r.p }}{{ r.result }}{{ r.limit }}{{ r.tag }}
{{ lr.hint }}
{{ unassignedCount }} unassigned
Technician
{{ d.day }}{{ d.date }}
{{ jobSelCount }} selected
JOBCUSTOMER · ASSETTYPETECHNICIANSCHEDULEDPRIORITYSTATUS
{{ j.ref }}
{{ j.customer }}
{{ j.asset }}
{{ j.type }}
{{ j.tech }}
{{ j.sched }}
{{ j.priority }}
{{ j.status }}
No jobs match this filter.
{{ jd.ref }}{{ jd.status }}{{ jd.priority }} priority
{{ jd.type }} · {{ jd.customer }}
Job details
{{ m.k }}{{ m.v }}
Required on completion
{{ r }}
Status timeline
{{ tl.title }}
{{ tl.detail }}
Actions
Create service job
Job reference {{ nextJobRef }} · generated automatically
{{ f.label }}
{{ f.value }}
Assign technician
{{ tg.label }}
ASSET IDCUSTOMER · LOCATIONMODELSTATUS{{ assetCol5 }}
{{ ad.id }}{{ ad.status }}
{{ ad.model }} · {{ ad.customer }} · {{ ad.site }}
Five-stage filter schedule
STAGELAST REPLACEDNEXT DUESTATUS
{{ s.n }}{{ s.name }}
{{ s.last }}{{ s.next }} {{ s.status }}
Service & test history
{{ h.title }} · {{ h.detail }}
{{ h.when }}
Asset record
{{ m.k }}{{ m.v }}
QR code
{{ ad.id }}
Secure token · scans log user & time
{{ dd.id }}{{ dd.status }}
{{ dd.model }} · {{ dd.customer }} · {{ dd.site }}
Warranty
{{ dd.wStatus }}
{{ dd.wStart }}{{ dd.wEnd }}
{{ dd.wRemain }}
{{ m.k }}{{ m.v }}
Warranty claims
{{ c.title }}
{{ c.detail }}
{{ c.status }}
No claims recorded for this dispenser.
Linked filtration unit
{{ k.v }}
{{ k.k }}
CLAIMCUSTOMERDISPENSERISSUEWARRANTYSTATUS
No claims here
No warranty claims match this filter.
{{ cl.id }}{{ cl.statusLabel }}
{{ cl.issue }} · {{ cl.customer }}
{{ cl.warranty }}
Claim details
{{ m.k }}{{ m.v }}
Audit timeline
{{ tl.title }}
{{ tl.detail }}
Inspection findings
{{ f.k }}
{{ f.v }}
Decision
Approve the warranty outcome; the customer-visible resolution is published separately.
Decision recorded. Publish the customer-visible resolution or close the claim.
{{ dueTitle }}
ASSETCUSTOMER · LOCATIONSTAGEDUE DATEWINDOW
{{ c.name }}
{{ c.customer }} · {{ c.window }}
{{ c.status }}
{{ c.done }} of {{ c.total }} units complete{{ c.pct }}%
{{ s.v }}
{{ s.k }}
CUSTOMERTYPESITESUNITSPLANSTATUS
{{ cd.initials }}
{{ cd.name }}{{ cd.status }}
{{ cd.type }} · {{ cd.code }} · {{ cd.plan }}
{{ k.v }}
{{ k.k }}
Sites
{{ s.name }}
{{ s.address }}
{{ s.units }} units
{{ s.health }}
Portal users
{{ u.initials }}
{{ u.name }}
{{ u.role }}
{{ u.state }}
Contacts
{{ c.name }} · {{ c.title }}
{{ c.detail }}
No technicians yet. Use “Invite technician” to create the first account.
{{ td.initials }}
{{ td.name }}{{ td.state }}
{{ td.code }} · {{ td.region }} · last login {{ td.lastLogin }}
{{ k.v }}
{{ k.k }}
Assigned & recent jobs
{{ j.ref }}
{{ j.type }}
{{ j.customer }}
{{ j.status }}
Availability & skills
{{ m.k }}{{ m.v }}
Append-only log · {{ auditCount }} events · records are immutable
{{ e.action }}{{ e.category }}
{{ e.detail }}
{{ e.actor }} · {{ e.role }}{{ e.source }}{{ e.corr }}
{{ e.when }}
{{ g.label }}
{{ setPanel.title }}
{{ setPanel.desc }}
{{ s.title }}
{{ r.label }}
{{ r.desc }}
{{ r.value }}
NAMEEMAILROLESTATUSLAST ACTIVEACTIONS
{{ u.initials }}{{ u.name }}
{{ u.email }}
{{ u.role }}
{{ u.status }}
{{ u.last }}
No users match this filter.
{{ roleSelName }}
Permission matrix · changes are audited and effective on next token refresh
Super Admin always holds every permission — these cannot be revoked.
{{ g.label }}
{{ p.label }}
{{ h.name }}
{{ h.status }}
{{ h.metric }}
Recent events & errors
{{ e.t }}
{{ e.d }}
{{ e.when }}
Scheduled jobs
{{ j.name }}
{{ j.sched }}
{{ j.last }}
Storage usage
{{ b.name }}{{ b.used }}
All buckets private · signed-URL access only · daily backup 02:00 · last restore test passed.
{{ g.label }}
{{ rp.title }}
{{ rp.sub }}
{{ f.k }}{{ f.v }}
{{ k.v }}
{{ k.k }}
{{ rp.chartTitle }}
{{ b.m }} {{ l.m }}
{{ c }}
{{ cell.v }}
SITECUSTOMERUNITSHEALTHTIMEZONE
{{ sd.name }}
{{ sd.customer }} · {{ sd.address }}
Location hierarchy
{{ n.label }} {{ n.meta }}
Asset-location history
{{ h.asset }} {{ h.move }}
{{ h.reason }} · {{ h.when }}
Access & operations
{{ m.k }}
{{ m.v }}
Site plans
{{ sd.planCount }} files
{{ p }}View
DOCUMENTLINKED TOVERSTATUSVISIBILITY
{{ d.ext }}
{{ d.name }}
{{ d.cat }} · {{ d.size }}
{{ d.linked }}
v{{ d.ver }}
{{ d.status }}
{{ d.visibility }}
TEMPLATERECIPIENTCHANNELSSTATUS
{{ t.recipient }}
{{ ch.label }}
{{ t.status }}
EVENTRECIPIENTCHANNELSTATUS
{{ d.event }}
{{ d.when }}
{{ d.recipient }}
{{ d.channel }}
{{ d.status }}
{{ stub.title }}
{{ stub.sub }}
Planned for a later stage
{{ f.t }}
{{ f.d }}
{{ modal.title }}
{{ modal.sub }}
{{ modal.fieldLabel }}
Customer-visible note (optional)
{{ confirm.title }}
{{ confirm.body }}
{{ form.title }}
{{ form.sub }}
{{ fd.label }}{{ fd.req }}
Selected: {{ fd.fileName }}
{{ form.error }}
{{ toast.msg }}