Overview
Context
ZIYO hires specialists and places them with clients — in offices, shops and warehouses. One employee can work for several clients, and every assignment has its own schedule and rates. Without a single system it is hard to answer simple questions: who is on site right now, how many hours were worked, how much the client owes the company and how much the company owes the employee.
Goal
Bring the tracking into one app with three workspaces — for the company, the client and the employee. An employee checks in from a phone in a few taps, the arrival is confirmed by a photo, location and server time, and hours, extra time and amounts are calculated automatically. The client, meanwhile, sees only their own data.
Architecture
Hover a node or pick a module in the table below to see what it does.
Modules
Stack
- Frontend
- Next.js, TypeScript, Tailwind CSS
- Mobile app
- PWA (Serwist), Web Push, Leaflet and OpenStreetMap maps
- Server and data
- Supabase: PostgreSQL, Row Level Security, Auth, Storage, Edge Functions, pg_cron
- Reports
- ExcelJS, print form to PDF
- Hosting
- Vercel
Results
- A check-in you can trust
- Arrival and departure are confirmed by a live photo of the work area, location and server time, and the account is tied to a single device.
- Disputes do not stop the work
- A doubtful check-in never blocks the employee: it is accepted, flagged and sent to a manager for review.
- Hours and amounts add up by themselves
- The monthly timesheet shows how much the client owes the company, how much the company owes its employees and what the margin is.
- One employee, several clients
- Every assignment has its own schedule and rates, and the system does not allow shifts to overlap.
- Clients see only their own data
- Other clients, employee rates and the margin are closed off at the database level, not just in the interface.
- No app stores
- The app installs to the home screen on Android and iPhone straight from the browser and also runs on a computer.
- From idea to system, solo
- The product, the interface of three workspaces, the database, the calculations and access control were all built by one developer.
