Booking Prototype
A small web application designed to simplify checking availability of a shared apartment in our building.
The problem
The booking process relied on a simple but repetitive workflow: someone would send an email asking whether a certain date was available, someone else would check the schedule, and then reply.
The problem was not complicated, but repeated requests created unnecessary back-and-forth.
The goal
Allow people to check availability themselves before sending an email.
The solution
I built a lightweight booking checker where users can:
- select a date
- immediately see whether it is available
- submit a booking request
The focus was not to build a complete booking platform, but to solve one specific problem with as little complexity as possible.
From CLI to web application
The project started as a small command-line tool.

Before building an interface, I wanted to validate the core logic first: checking dates, storing bookings, and confirming availability.
Once that workflow was working, the same logic was moved behind a web interface so it could be used without requiring technical knowledge.
Technical approach
The prototype was built with:
- Go
- server-rendered HTML templates
- CSS
- minimal JavaScript
- Progressive Web App features
The application deliberately avoids a frontend framework. The interface is simple, fast, and built with standard web technologies.

Data storage
For the prototype phase, bookings are stored in a simple JSON file rather than a database.
This keeps the implementation small and makes it easy to understand the complete flow from user input to stored booking.
A production version would likely move this to a proper database and add authentication and management features.
Deployment
The prototype is deployed as a small standalone application.
Building and deploying it also provided useful lessons around application state, hosting environments, and the difference between a quick prototype and a production system.
Future possibilities
A production version could include:
- a management dashboard
- authentication
- email notifications
- database storage
- a production setup managed by the organization
The first goal, however, was much smaller:
Reduce unnecessary email communication by making availability visible immediately.

$ repo stats nilshendriks.com
languages
- Astro: 53.8%
- Vue: 14.3%
- CSS: 9.9%
- MDX: 9.7%
- JavaScript: 9.5%
- TypeScript: 2.8%
- HTML: 0.1%