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

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

CleanIT: CRM for a cleaning company

Similar stack projects