Skip to main content
Hotel PMS

Hotel PMS

A property management system for Italian hotels, built as microservices and documented honestly.

In progress

This showcase is under construction.

About this project

Hotel PMS is a microservices property management system for Italian hotels, designed and built solo, and actively maintained. This site documents it the way I'd want a codebase documented: real architecture decisions, a written threat model, enforced quality gates, and gaps stated openly instead of glossed over. If you're a recruiter, the code and the reasoning behind it are the point — start with the architecture and decisions below.

Questions about the project or a demo request for your hotel: diegoandruccioli@gmail.com

Architecture

Hotel PMS is built as 8 microservices behind a single API Gateway, plus one shared PDF-rendering library. The gateway is the only entry point: it validates JWTs, applies CORS and enforces Redis-backed rate limiting before a request reaches a service. Services never trust each other directly — every internal call carries an HMAC-SHA256 signature. Each stateful service owns its own PostgreSQL database, so there is no shared schema and no cross-service SQL join. Zipkin, Prometheus and Loki give distributed tracing, metrics and structured logs across the whole system.

Decisions and trade-offs

A few of the non-obvious choices made along the way, each with the alternative that was rejected and why.

Security

Every JWT lives in an httpOnly cookie, so client-side JavaScript never sees it. Internal calls between services carry an HMAC-SHA256 signature, so a compromised internal network can't forge requests. Role-based access (admin, owner, receptionist) is enforced at both the gateway and the endpoint. Known accepted risks — like a Netty CVE mitigated by network isolation — are listed openly in the project's threat model, not hidden.

Quality and process

Every merge to main passes a zero-warning lint policy, an enforced coverage floor, end-to-end tests with automated accessibility checks, and a container image security scan — before it reaches production.

Measured 2026-08-04: 90.4% statement coverage on the frontend, 76.6% instruction coverage on the backend aggregate across 11 modules — both well above the floor the build enforces.

For hotels

Hotel PMS runs real operations, not just a demo: reservations, guest check-in and check-out, billing with charges posted straight from the restaurant, and the Italian compliance below.

Italian compliance, honestly

Status and roadmap

Already built

Not built yet