Milan Cu

Examples

On every project I handled the backend, the frontend, and deployment.

Hotel operations portal — guest add-on services screen

Hotel operations portal

A portal for running a hotel. The front desk sees guest arrivals and their check-in readiness; guests fill in their details in advance and buy add-on services. Reservations are pulled from Cloudbeds and Hostaway. Each hotel runs on its own domain, and a manager can onboard a new hotel themselves, without a developer. It involved multi-tenancy, domain-based routing, and authorization for two different user groups. Deployed across several hotels, over a hundred rooms, thousands of guests a month.

  • Kotlin
  • Spring Boot
  • React
  • Vite
  • TypeScript
  • PostgreSQL
  • RabbitMQ
  • MinIO
Revenue dashboard — reservation pace analysis

Revenue dashboard

An analytics layer on top of data from every connected PMS. It aggregates reservations, occupancy, and revenue across a portfolio of properties and builds pricing on top of that — price recommendations based on demand trends. Users assemble their own views from widgets. It also included an experiment with an AI chat over the underlying data, where you can ask in natural language instead of clicking through filters.

  • Django
  • React
  • PostgreSQL
  • Redis
  • Gemini Flash
Document processing — extracted receipt fields

Document processing

Takes in accounting documents by email or upload, extracts structured data from them, and passes it on to accounting. Processing runs asynchronously through a queue, extraction via an LLM. I handled the connection to accounting tools through MCP connectors, so new ones can be added without touching the application core. In production it processes on the order of hundreds of documents a month across dozens of accounts.

  • Kotlin
  • Spring Boot
  • React
  • PostgreSQL
  • RabbitMQ
  • Gemini Flash
Bank aggregator — transactions across accounts

Bank aggregator

Merges balances and transactions from dozens of bank accounts into a single view, so you don't have to check several banking portals separately. Normalizes the differing data formats from individual banks into one shared model.

  • Kotlin
  • Spring Boot
  • React
  • PostgreSQL
Prague guide — interactive city walkthrough map

Prague guide

A mobile guide to Prague for hotel guests, built as a PWA so it installs without an app store. An interactive walkthrough of the city, with content tied to a specific hotel.

  • Node.js
  • NestJS
  • React
  • TypeScript
  • MySQL
Interactive isometric map — M2C/Innovis

Interactive map, National Museum

A touch map for a visitor kiosk at the National Museum. Design and implementation, running on a public installation. We built similar interactive maps for M2C and Innovis too.

  • HTML
  • CSS
  • JavaScript