Skip to content
Jan HřebíčekEnaro
Case studies

Modernization + automation

Chata Roklinka: Modernising and automating the reservation system

I took the project over when its original developer had stopped maintaining it. The Next.js app was well architected, but it carried technical debt and an outdated stack — and, above all, most reservations were handled manually. Step by step it became an automated reservation system with online payments that saves the client time instead of taking it.

Manual → auto
bookings without daily intervention
Online payments
checkout without extra contact
RoleTakeover, modernisation & automationStackNext.js · MongoDB · EmailJS

The challenge

The main problem wasn't only the technology — it was how reservations were handled. The system existed, but the processes were manual and every reservation meant extra work. The owners had to:

  • manually check new reservations
  • manually confirm date availability
  • manually communicate with customers by email
  • manually block booked dates
  • manually release dates on cancellation
  • manually keep a record of each reservation

Instead of saving time, the system created more admin. At the same time, the outdated Next.js version, optimisation and security all needed addressing.

Stabilisation and modernisation

The app ran on an outdated version of Next.js and related tooling, which complicated both deployment and further work. So instead of adding features, I first refactored the key parts:

  • updating the technology stack
  • reworking the build process
  • removing deployment issues
  • optimising image handling
  • fixing dependent code
  • improving performance

Security was part of it too — auditing dependencies and removing risks from outdated versions. The aim wasn't just to fix the current issues, but to create a stable base free of unnecessary technical debt.

Automating the reservation process

After stabilisation came the biggest business problem — manual reservation management. The goal was a system that runs on its own and doesn't need daily intervention. I gradually implemented automations that provided:

  • automatic reservation confirmation
  • automatic customer communication
  • automatic blocking of booked dates
  • automatic release of dates on cancellation
  • automation of the whole reservation workflow
  • fewer manual interventions by the operator

I kept the existing EmailJS integration and folded it into the newly automated processes — new features could be added quickly without rebuilding the email infrastructure. The result was a marked drop in admin work.

Payment-gateway integration

I integrated a payment gateway into the reservation process, letting visitors complete a booking comfortably online without further communication with the operator.

  • a simpler booking process
  • more comfort for customers
  • faster reservation processing
  • less manual admin
  • a better overview of incoming payments

Frontend and optimisation

The project also included user-interface and experience improvements:

  • better usability of the reservation process
  • adjustments to selected parts of the site
  • better behaviour on mobile devices
  • optimised loading of content and images
  • higher site speed

These changes made it easier for visitors to complete a booking and improved the overall usability of the app.

A long-term partnership

After the main work, the collaboration continues as technical support and ongoing maintenance. Thanks to the modernised stack, automated reservations and improved stability, the client now has a solution that genuinely helps run the accommodation instead of creating more work.

The project also shows that custom development doesn't always mean building a new system from scratch. In many cases the greatest value comes from taking over an existing project, modernising it and removing the processes that needlessly slow a business down.

Tech used

  • Next.js
  • JavaScript
  • MongoDB 7
  • EmailJS
  • Payment gateway
  • Cloud hosting
  • Automated reservation workflow

Outcome

  • taking over and stabilising an existing project
  • modernising an outdated Next.js solution
  • improving application security
  • removing technical debt
  • automating reservations and email communication
  • automatic blocking and releasing of dates
  • payment-gateway integration
  • a better user experience
  • a lower admin burden for the operator