EVR Beauty — System Update

22 Mar 2026

What we've done

WeM is a closed system — no API, no export, no documentation. Everything had to be reverse-engineered: mapping all 40 pages, figuring out how data is stored across ASP framesets, building extraction tools for each data type, then rebuilding UI, backend, and database from scratch.

Data imported from WeM

DataRecordsScraperStatus
會員 Members6,296wem-members.jsFull dump
預約 Bookings376wem-bookings.js8 days × 3 branches
產品 Products97wem-products.jsFull catalogue
護理 Treatments450wem-treatments.jsFull catalogue
員工 Staff42wem-staff.jsAll branches
財務 Finance3 dayswem-finance.jsDaily summary
發票 Invoices0Not scraped
庫存 Inventory0Not scraped
值日表 Roster0Not scraped
假期 Leave0Not scraped
會員帳戶 Accounts0Not scraped

Pages — all 40 WeM routes

#Page 頁面DataStatus
1登入 LoginDone
2綜合預約表 Bookings grid376 rowsDone
3美容師預約 Therapist view376 rowsDone
4搜尋 Booking search376 rowsDone
5會員記錄 Members6,296 rowsDone
6會計總結 Finance3 daysDone
7員工 / 美容師 Staff42 rowsDone
8分店 Branches3 branchesDone
9產品 Products97 rowsDone
10護理 Treatments450 rowsDone
11收銀處 Cashierread-onlyLayout — no write ops
12發票搜尋 Invoices0 rowsUI built, no data
13會員帳戶 Accounts0 rowsUI built, no data
14庫存查詢 Inventory0 rowsUI built, no data
15值日表 Roster0 rowsUI built, no data
16假期 Leave0 rowsUI built, no data
17對比 Compare (QA)screenshotsDone
18-19會員相片 / 組合會員Not built
20-21會員分析 / 聯絡會員Not built
22-25會員報告 / 房間預約 / 預約記錄 / 預約報告Not built
26-29銷售報告 / 零售項目 / 信用卡收款 / 收入簿Not built
30-34員工報告 / 供應商 / 儀器 / 價值查詢 / 庫存報告Not built
35-40總檔報告 / 會員報告 / 預約報告 / 銷售報告 / 庫存報告 / 員工報告Not built

What works on each page (read operations)

PageFunctions working
Bookings 預約View grid by date + branch, navigate dates, switch branches
Members 會員Search by name / phone / email / ID, pagination
Products 產品Search + category / division filter, pagination
Treatments 護理Search + category filter, pagination
Finance 會計Daily summary by branch, 4-section breakdown
Staff 員工View by branch
Booking Search 搜尋Keyword search + pagination
Invoices / Accounts / Inventory / Roster / LeaveSearch + filter UI ready, no data yet

Backend infrastructure

ComponentCountStatus
Database tables14Done
API endpoints (GET)18Done
API endpoints (POST/PUT/DELETE)0None
Automated tests31/31Passing
Data import pipelineDone
Custom scrapers built6Done
Auth systemDemo only
Logging / monitoringNot done
Input validationNot done

17 pages built out of 40. 7,200+ records imported. UI ~85% visual match to WeM.

What still needs to be done

The key gap: write operations. Right now you can look at everything, but can't create or edit anything. Staff can't use this for daily work until we build the write ops.

Write operations needed (zero built so far)

PageOperationPriority
收銀處 CashierCreate invoice / ring up saleCritical
收銀處 CashierAdd items to cart (products + treatments)Critical
收銀處 CashierProcess payment (cash, card, account deduction)Critical
收銀處 CashierPrint receiptHigh
預約 BookingsCreate new bookingCritical
預約 BookingsEdit / cancel bookingHigh
會員 MembersCreate new memberHigh
會員 MembersEdit member detailsHigh
發票 InvoicesVoid / refund invoiceHigh
帳戶 AccountsSell treatment packageHigh
帳戶 AccountsDeduct session from accountHigh
庫存 InventoryStock adjustmentMedium
值日表 RosterSet staff scheduleMedium
假期 LeaveSubmit / approve leaveMedium

Infrastructure + data

WhatPriority
Real login system (staff accounts, roles)High
Deploy to live server (HTTPS, always-on)High
PostgreSQL (concurrent multi-staff use)High
Full data migration from WeMHigh
Remaining data scrape (invoices, inventory, roster, leave, accounts)Medium
Remaining 23 pages (reports, member analysis, etc)Medium-Low
Input validation, error handlingFor production
Monitoring, backups, audit logsFor production

Full operations checklist

Every operation we've mapped in the system — grouped by area. This is what staff interact with day-to-day.

預約 Bookings

What staff doesStatus
View today's bookings by branchWorking
Switch between dates (previous / next day)Working
Switch between branches (CWB, TST, LP)Working
See which therapist has which bookingWorking
Search bookings by customer name or phoneWorking
Create a new bookingNot built
Edit or cancel an existing bookingNot built
Book a room (not just therapist)Not built

會員 Members

What staff doesStatus
Look up a member by name, phone, email, or IDWorking
Browse members with paginationWorking
Register a new walk-in customerNot built
Edit a member's phone, email, addressNot built
View a member's full profile + historyNot built

收銀處 Cashier / POS

What staff doesStatus
View cashier screen layoutLayout only
Ring up a sale — add products or treatmentsNot built
Apply discount or promotionNot built
Process payment (cash, card, account deduction)Not built
Print receiptNot built

帳戶 Accounts / Packages

What staff doesStatus
Look up a member's account balanceUI ready, no data
Sell a treatment package to a memberNot built
Deduct a session when member uses a treatmentNot built

發票 Invoices

What staff doesStatus
Search invoices by branch, date, memberUI ready, no data
Void or refund an invoiceNot built

產品 Products + 護理 Treatments

What staff doesStatus
Browse products by name or categoryWorking
Browse treatments by name or categoryWorking
View pricing and product detailsWorking

會計 Finance

What staff doesStatus
View daily revenue summary by branchWorking
See breakdown (cash, card, account, outstanding)Working

員工 Staff / 值日表 Roster / 假期 Leave

What staff doesStatus
View staff directory by branchWorking
View staff roster / scheduleUI ready, no data
Set or edit the weekly rosterNot built
Submit or approve leaveNot built

庫存 Inventory

What staff doesStatus
Search stock levels by branchUI ready, no data
Adjust stock (count, restock, write-off)Not built
Does this cover what your staff needs? If there's anything missing or if some of these don't matter, let us know — it directly affects what gets built and in what order.

Roadmap

Stage 1: View System 查看系統 — done
Stage 2: Write Operations 操作功能
Stage 3: Go Live 上線
Stage 4: Parallel Run 並行運行
Stage 5: Full Replacement 完全取代

Maintenance cost reference 維護費用參考

Not a quote — just a reference for planning the economics of running the system long-term. Whether it's us or someone else maintaining it, this is roughly what it costs.

HK market rate for a senior developer who knows a custom system like this is around HKD 400-600/hr. The numbers below assume you find someone at ~HKD 400/hr — adjust proportionally if the rate is different.

Hosting 伺服器

~HKD 200-300/month for server + database. Negligible.

Maintenance vs development — two different things

Maintenance = keeping the system running. Bug fixes, security patches, monitoring, incident response.
Development = building new features, new pages, new integrations. Billed separately by the hour.

These are different cost buckets. Maintenance keeps the lights on. Development adds capabilities.

Maintenance hours by phase (assuming ~HKD 400/hr)

PhaseWhat to expectHours/month~HKD/month
Stabilisation (first 3 months after launch)Edge cases, data cleanup, hotfixes, staff-reported issues10-15 hrs4,000-6,000
Settling (months 4-6)Fewer bugs, occasional fixes, refinements6-10 hrs2,400-4,000
Steady state (month 7+)Patches, monitoring, minor tweaks4-8 hrs1,600-3,200

The first few months after any new system launch are always heavier — that's normal. It's the cost of replacing a system that's been running for years. Stabilises over time.

New features / development work

Maintenance keeps the system running. If you want new capabilities — new reports, new pages, integrations with other tools — that's development work, scoped and priced separately.

What this means in practice

At ~HKD 400/hr:

Year 1 average (maintenance only): ~HKD 3,000-5,000/month. Higher at the start (stabilisation), lower as the system matures. Plus hosting (~HKD 300).

Year 2+ steady state: ~HKD 1,600-3,200/month if the system is stable and no major changes needed.

For comparison: Current development phase is HKD 30,000/month — that's building the whole system from scratch. Post-launch maintenance is a fraction of that.

The system is standard web technology (Node.js, PostgreSQL, HTML) — no vendor lock-in. Any capable developer can pick it up and maintain it.

Would be helpful to know


All data extraction from WeM has been strictly read-only — nothing was created, modified, or deleted in the production system.