






Royal Parking Services
Parking Enforcement Website & Client Permit Portal
British Columbia, Canada
Visit live site- Role
- Full-stack Engineer
- Engagement
- Team Collaboration
- Industry
- Parking Management • Property Services
Overview
Royal Parking Services is the public website and client portal for a British Columbia parking enforcement company that manages private lots for strata councils, retail plazas, commercial offices and medical clinics. The system serves two distinct audiences from one application.
Drivers use a public four-step checkout to look up a notice by licence plate or notice number, review the violation alongside the photographed lot rules posted on site, select one or several outstanding notices, and pay by card. Contracted clients sign in to a dashboard where they issue permits with per-day time programs and multiple registered vehicles, search their permit register, store payment cards and review invoice history.
The public payment flow and the client dashboard share one API client, one auth layer and one design system, which is what keeps a consumer-facing checkout and a B2B admin panel coherent inside a single deployment.
The challenge
Private parking enforcement generates two problems at once. Drivers who receive a notice have no self-service way to see the evidence or pay, so every ticket turns into a phone call or a dispute — and disputes are expensive when the company cannot immediately show the signage posted at the lot. Meanwhile property managers have no visibility into their own permit register.
The payment flow treats the driver as untrusted by design: the client sends only notice identifiers and a plate, never an amount, and the backend computes the charge. The selection step surfaces lot rules with signage photos deduplicated by lot — the dispute-prevention evidence, shown before payment rather than after. The confirm endpoint is idempotent, letting the same call serve both the in-place card path and the 3-D Secure redirect return.
Off-the-shelf was not viable because the notice lifecycle is the company's own domain model: twelve statuses where payability is a property of the lifecycle rather than a simple paid/unpaid flag.
Links
GitHub Repository
Private — client project