Mi Malla
A quoting tool for a safety-netting installer. The salesperson looks up the client, the record autofills, and the areas to be installed are captured on top of it one by one.
- Role
- Design and full development
- Client
- Client project
- Stack
- PHP, MySQL, PDO, jQuery
- Access
- Session-based with roles
- Source
- View repository
The problem
Most clients who ask for a quote come back: a house that started with the balcony ends up enclosing the stairwell and the roof terrace too, and every visit meant asking again for name, phone, email and address. The data existed, scattered across notebooks and chat threads, but nowhere it could be retrieved from.
The client record is the centre
The system was built around the client, not the quote. Starting a quote begins with a search by first or last name, with results appearing as you type; picking one fills the form. If they are new, they are saved from the same screen without leaving the flow. Clients are identified by full name or phone number, so a second visit updates the existing record instead of creating a duplicate.
Variable areas
An installation has no fixed number of panels. The form starts with one row — type, location, width and height — and rows are added as needed. Square metres are computed per row and totalled on the server at save time, inside a transaction that writes client, header and detail or writes nothing at all.
Access
- Session required on every page and endpoint
- Roles: the admin menu exists only for those who have it
- Passwords hashed with bcrypt, verified through PHP's native functions
- Session ID regenerated on login and on password change
Client project, with the source published. This page describes the approach and architecture.