In a small service company, the day rarely goes to plan. A freezer breaks down in a restaurant, a supermarket’s cold room stops cooling, and a technician who is already on the road has to be sent there. At BS CHLAD s.r.o., a company that installs and services refrigeration, air-conditioning and heat pumps, this used to be handled with phone calls, text messages and a paper diary in the office. Nobody had one complete picture of who was going where, and it was easy to miss something.
During my professional internship I set out to fix this by building Plánovač, a mobile web application that the whole team uses every day to plan and track service work.
What the Application Does

When technicians open the app, they see the plan for the day: every job with its type (service, installation, inspection, cleaning…), time slot, customer, notes and who is assigned to it. A tap on the phone number calls the customer, one button moves an unfinished job to the next working day, and ticking the circle marks it as done. A week strip at the top lets you jump between days.
Creating a new job takes a few seconds. You pick the type, write the customer and assign one or more technicians. Holidays, sick days and doctor visits are entered the same way, so the plan always shows who is actually available.
The Agenda tab shows the upcoming days in one list, including absences, so the office can see at a glance how busy the next week is.
The application also has a customer portal. Store managers of large customers can report a fault themselves, mark it as urgent and suggest a date. The request shows up in the planner, and one tap turns it into a job.
Besides planning, the app keeps a register of company vehicles and documents: vehicle inspections, insurance, motorway vignettes and technicians’ certifications. Everything is sorted by expiry date, and administrators get a reminder 14 and 7 days before something runs out.
Finally, a statistics screen summarises each month: number of jobs, completion rate, planned hours, the busiest day, a monthly trend and the most frequent customers.

Technologies and Implementation
The frontend is a React single-page application built with Vite. It is packaged as a Progressive Web App, so technicians install it on their phone’s home screen and it behaves like a native app. Because technicians often work in basements and cold rooms without signal, the app also works offline: changes are stored locally in IndexedDB and sent to the server once the connection comes back.
The backend is a REST API written in PHP on top of a MySQL database, running on ordinary shared hosting. It handles tasks, absences, notes, the customer portal and user management. Security was an important part of the work: passwords are hashed, sessions are protected against CSRF, logins are rate-limited, and each role only sees what it is allowed to. Web Push notifications tell technicians about new or changed jobs, and scheduled jobs send the expiry reminders and a nightly database backup.
For presentations there is also a demo mode, which runs the whole application on sample data directly in the browser without touching the real database. All screenshots in this post come from it.
What I Learned
This internship let me build a real product from begining to end: talking to the people who would use it, designing the database and the API, building the interface and deploying it to production. The biggest lesson was that the tool is used by technicians in the field, often with gloves on and in a hurry, so every extra tap matters. I also learned how much work goes into reliability: offline sync, backups and safe deployments are invisible to users, but without them nobody would trust the app with their daily work.
0 Comments