// Overview

Domistra is a full-stack property management application that enables landlords to manage tenant information, track utility expenses, monitor electricity consumption, and generate professional PDF invoices.

The system automatically fetches current EUR/RON exchange rates from Romania's National Bank and provides analytics dashboards for revenue and payment visibility. It supports configurable cost-sharing among residents for shared utilities.

// Architecture

React Frontend
Nginx Proxy
Perl API
Dancer2 + DBIx::Class
MariaDB
JWT Auth
|
PDF Gen
|
BNR API

The application uses a containerized microservices architecture with Docker Compose for easy deployment. The frontend is built with React and Ant Design, while the backend uses Perl's Dancer2 framework with JWT authentication.

// Key Features

  • Tenant management with contract tracking and history
  • Utility billing with proportional cost distribution
  • Electricity meter consumption monitoring
  • Professional PDF invoice generation (wkhtmltopdf)
  • Automatic EUR/RON exchange rate integration
  • Dashboard analytics with Recharts visualizations
  • Dark mode support throughout the UI
  • Docker-based deployment with Nginx reverse proxy

// Technical Highlights

Backend: Built with Perl 5 using the Dancer2 web framework and DBIx::Class ORM for robust database interactions. JWT-based authentication ensures secure API access. PDF invoices are generated using wkhtmltopdf.

Frontend: Modern React 18 application built with Vite for fast development. Uses Ant Design component library for a polished UI, React Router for navigation, and Axios for API communication.

Infrastructure: Fully containerized with Docker Compose. Nginx handles static file serving and API proxying. The Perl application runs on Starman PSGI server for production performance.

// What I'd Improve

  • Add multi-property support for larger portfolios
  • Implement automated payment reminders via email/SMS
  • Add document storage for lease agreements
  • Build a mobile app for on-the-go access