IT projects

Field service management

Sanad

The daily work organiser for a service company: it plans the jobs, sends the technicians, records parts and photos, plans maintenance contracts and writes the invoices.

  • PHP 8
  • PDO
  • SQLite
  • MySQL
  • Vanilla JS
  • EN · DE · NL · AR
  • RTL
The main screen of Sanad with demo data
A look inside · The main screen of Sanad with demo data

At a glance

4
roles: admin, dispatcher, technician, accountant
4
languages with Arabic RTL
1
click from a done job to an invoice
2
databases: SQLite or MySQL

The goal

Service companies plan on paper and phones: jobs get lost, parts are not billed and contracts are forgotten. Sanad puts the day on one board and follows every job from the call to the payment.

What it shows

Jobs
Numbered work orders with status workflow, checklist, parts, notes and photos.
Dispatch board
One column per technician: move a job with one click, the whole day on one screen.
Customers
Several service addresses per customer with access notes.
Contracts
Maintenance contracts that plan all visits by themselves; one click turns a visit into a job.
Stock
Parts with reorder level; stock goes down when a part is used.
Money
Invoice from a finished job, VAT, payments, ageing and reports.

Security controls

ControlWhat it stops
Role checks on every pageA technician seeing other technicians' jobs or the money.
Prepared statements (PDO)SQL injection.
CSRF token on every formActions sent from another site.
Login throttlingPassword guessing.
Checked uploads and downloadsScripts as files and access to other customers' files.

Try it yourself

# PHP 8.1+ with pdo_sqlite (or MySQL). No framework, no Composer, no build step.
php -S 127.0.0.1:8080          # or upload the folder to any PHP hosting
# open http://127.0.0.1:8080/install.php → SQLite or MySQL → the first admin account
php seed.php                    # optional: demo data with users for every role

What I learned

  • A dispatch board must fit one screen: the dispatcher decides in seconds.
  • Billing from the job itself stops lost money: every part used becomes an invoice line.
  • Roles are a business feature, not only security: each person sees only their work.
Next case study Jard