Freelance Project
PBG: Real Estate Management Platform
Modernization and maintenance of a real estate platform with a public website, admin panel and API. 50% performance improvement and infrastructure management on Digital Ocean.
Tech stack
The technologies used and why.
The project
PBG is a real estate platform that includes a public website, an internal admin panel and a REST API connecting both. The project arrived with several years of development behind it: working code but with accumulated technical debt, degraded performance and an infrastructure that needed attention.
What I did
Maintenance and new features
I took over the project and owned the full cycle: requirements analysis, development, testing and deploy. Both the admin panel (React + Ant Design) and the public website (React) received functionality improvements and fixes for critical bugs that were live in production.
Performance optimization
The platform had visible loading problems. After a bottleneck analysis, I applied optimizations on the frontend (bundle size, lazy loading, unnecessary queries) and on the API (N+1 queries, caching). The result was a 50% improvement in load times. With the planned migration, the numbers will improve significantly more.
Infrastructure management
The platform runs on Digital Ocean. I handled server management, environment configuration, deploys and maintenance windows. I coordinated with the team to guarantee availability at the critical moments.
Resolving a critical data loss in production
This is the most important problem I solved on the project. The MariaDB database ran inside a Docker container with no persistence or backup of any kind. Every time the container crashed or restarted, the system came back up from an old dump: everything loaded, modified or published since that date was wiped. Without anyone knowing until the damage was already done.
Two serious problems in one: no real persistence and no backups whatsoever.
The fix came in two steps. First, I moved MariaDB out of the container and installed it directly on the host, decoupling the database lifecycle from the container lifecycle. Second, I set up a cron job that runs every day at 3am, generates a database dump and stores it on the server. The job keeps the last 7 days of backups and removes the older ones automatically.
Today the platform has real persistence and a rotating backup history. Any incident can be resolved by restoring from the previous day’s backup.
Next steps
The current stack (legacy React + PHP Lumen) is planned to migrate to a more modern architecture: a Node.js API, a frontend updated to current versions of React and Next.js. The cleanup and documentation work done so far makes that transition easier.