Built to still be fast in year three.
Attendance is a time-series problem that grows every day you operate. A system that feels quick during a 200-person pilot and crawls at 3,000 people wasn't engineered — it was demonstrated. This page is what's underneath.
Architecture at a glance
Three clients, one API, one database of record. The face-recognition engine, object storage, push and SMS are all integrations behind interfaces — swappable without touching the rest of the system.
What each one is built with, and why that matters to you.
Mobile app
Built with Flutter — one codebase producing both the Android and iOS builds.
Why you care: one release train, not two. A fix ships to your whole workforce at the same time, and there is no second app quietly falling a version behind.
Admin dashboard
A modern Angular single-page application with interactive maps and charts.
Why you care: your administrators work in one screen that updates in place, instead of a page reload between every approval in a queue of two hundred.
REST API
.NET and ASP.NET Core, organised in Clean Architecture with vertical feature slices, documented with OpenAPI.
Why you care: every capability the dashboard has, your own systems have too. Nothing is trapped behind a UI-only feature.
Three years of history, still queryable in under a second.
Every employee generates punches, location logs and audit entries every single day. Multiply that by thousands of people and a few years and you have a table that a naive schema simply stops being able to answer questions about.
WMS360 stores that history in partitioned time-series tables, sized from the outset for tens of millions of rows. The consequence is the only one you should care about: a dashboard that stays fast in year three, and a report that returns while the person who asked for it is still looking at the screen.
Run it where your policy says it has to run.
Some organizations can put workforce biometrics in a public cloud. Others genuinely cannot. Both are supported, and it is a deployment decision rather than a different product.
Cloud
Managed and hosted, the fastest route to a running pilot. Object storage, push and SMS wired up out of the box.
Private cloud
Your own tenancy and your own region, when data residency is contractual rather than preferential.
On-premise
Fully inside your perimeter. Face images and documents fall back to local disk storage, so an on-premise install doesn't require a cloud storage account to function.
The parts that reduce your risk, not ours.
Versioned, transactional migrations
Schema changes are numbered scripts applied in a transaction, not hand-run SQL against a live database at 11pm. An upgrade either completes or leaves nothing behind.
Separate QA and production
Automated delivery into distinct environments with isolated credentials, so a change is exercised somewhere real before it reaches the people who depend on it.
Integration tests against a real database
The test suite hosts the actual API against a real PostgreSQL instance rather than a mock. Constraint violations and trigger side effects surface in the test run, not in your month-end.
Structured logging and telemetry
Diagnostics are built in rather than added after the first incident, so "it was slow yesterday afternoon" is a question with an answer.
Need the depth for a security review?
Dependency and patch policy, backup and disaster recovery, data residency, sub-processors and environment separation — the questions a CIO asks before approving a pilot. Ask, and we'll answer your team directly.
Put it in front of your IT team.
We're happy to run the architecture session with your engineers in the room. It's a faster conversation than a procurement questionnaire.