A smart-city platform for municipal documents and plans
Moydom (moydom.ru) builds smart-city services. We built its municipal platform for managing documents, building plans and city service workflows. Cities produce a huge paper trail, along with visual artifacts such as floor plans, planimetry and annotated maps. Moydom brings them into one multi-tenant system, so the work no longer depends on scattered files and desktop software.
We led the project with a team of four full-stack developers over an iterative 9–12 month delivery, coordinating the roadmap with the client along the way.
Key features
- Document processing: uploaded documents go through OCR and PDF generation in the background, turning scans into text the platform can work with.
- Canvas-based plan editor: staff draw, measure and annotate floor plans and planimetry in the browser, with no desktop software.
- Map rendering: maps and plans render in their own module, separate from document handling.
- Independent billing module: billing has its own boundaries and doesn't leak into the rest of the platform.
- Multi-tenant architecture: each municipal organization works in its own tenant, with strict data separation between organizations.
- Role-based access control: permissions are modeled on municipal roles such as clerks, inspectors and administrators.
- Asynchronous job queues: RabbitMQ workers handle long-running tasks, so the interface stays responsive while jobs run.
Architecture and tech stack
Modular Laravel backend
The backend is built on Laravel 9 with MySQL and Redis. Billing, document processing and map rendering are separate modules with clean boundaries. That split lets each module evolve and scale on its own. It also let a small team work in parallel without constantly editing the same code.
Vue 3 and Inertia.js frontend
The interface uses Vue.js 3 with Inertia.js and Tailwind CSS. With Inertia, Laravel routes and controllers render Vue pages directly. A large, admin-heavy application stays in one codebase without a separate API layer for every screen.
Canvas plan editor
Plans and planimetry are edited on an HTML5 canvas. Drawing and annotation happen client-side on top of the plan, so staff can mark up a drawing and take measurements without leaving the browser or installing anything.
RabbitMQ worker queues for OCR and PDF generation
OCR on scanned documents and PDF generation take far longer than a normal web request. Instead of making users wait, the application puts these tasks on RabbitMQ queues and responds right away. Worker processes pick the jobs up and process them in the background. When the volume of heavy work grows, more workers can be added without slowing down the pages people are using.
Multi-tenancy and access control for municipal organizations
When several municipal organizations share one platform, it has to guarantee that none of them sees another's documents. Tenant separation is enforced across the platform. Within each tenant, role-based access control follows real municipal roles, so clerks, inspectors and administrators each get the permissions their work requires. The same architecture gives a clear path to onboarding additional municipalities.
Our role
We led development as team lead. That meant architecting the modular backend, delivering the plan editor, the queue infrastructure and the multi-tenant access model, and coordinating the roadmap with the client throughout the iterative delivery.
Related work
WClinic was another team-lead engagement with heavy integration work: multi-clinic booking over a clinic CRM. For public-sector consulting, see our technical study for the Ministry of Health of the Tver Region. Platforms like this are part of our web app development service.



