CleanIT: CRM for a cleaning company
CRM system
A CRM for a cleaning company that brings the whole client journey, from the first request to the completed order, payment and statistics, into one tool.
Project details
- Client
- CleanIt
- Technologies
- Docker, PHP, JavaScript, HTML, CSS, VueJs, Git, Bootstrap, npm, SASS, PostgreSQL
Brief
The cleaning company managed its clients in spreadsheets, notebooks and messenger chats: requests were easy to lose, order schedules were hard to plan, and there was no clear view of expenses or team tasks. CleanIT is a CRM system that brings all of this into one working tool, from the first client request to the completed order, payment and statistics. I built the project end to end: architecture, backend, frontend, integrations and deployment.
Goal: build a single system for managing clients, orders, tasks and finances that receives requests from the website automatically, notifies the team and clients, and can be configured by the company itself without a developer.
Task #1: automatic intake of website form requests (Tilda webhooks): every request instantly becomes a new client in the CRM;
Task #2: client cards with contacts, addresses, statuses, lead source, comments and communication history;
Task #3: orders with services and assigned staff, a calendar and allocation of work resources;
Task #4: a kanban task board with categories and statuses; the same data is available as a table, cards, kanban and calendar, with filters and drag-and-drop;
Task #5: automatic notifications: a Telegram bot for the team, SMS (Twilio) and WhatsApp (WAHA) for clients. Messages go through a message queue, so the interface stays fast and outages of third-party services don't break the workflow;
Task #6: expense tracking by category, payment methods and a dashboard showing trends in orders, new clients and expenses;
Task #7: user roles and groups: everyone sees only what they are meant to (permissions checked on both server and client);
Task #8: change history: who changed what and when in a client, order or task is recorded;
Task #9: three interface languages (RU, LV, EN); texts, statuses, categories, services, lead sources and payment methods are configured in the admin panel without code changes;
Task #10: a built-in knowledge base and logs (SMS, webhooks, system) right in the interface;
Task #11: a tool for importing historical clients from legacy data;
Task #12: infrastructure: Docker environments (local / stage / prod), Nginx, deployment scripts, database backups to Google Drive and error monitoring.
Result: the system runs in production and I maintain it. The company does all its work in one tool: no website request gets lost, the team and clients are notified automatically, and finances and tasks are transparent. Scale: ~35 database entities, ~28 API controllers, ~40 migrations, dozens of screens.
Screenshots












Similar stack projects
- WebSoul: Development website — Website for WEB developers for client outreach
- Fishing4Us: Rental platform — Platform for renting fishing tours, guides and boats
- Revalcoin — Crypto exchange portal maintenance