
Fully Booked - Dockerized Deployment with DigitalOcean and Cloudflare
Fully Booked shipped as five Docker services on one DigitalOcean droplet behind Cloudflare, so a very small team could run a marketplace that holds deposits. One repository built every image, a compose file and a Makefile reduced a release to pull, build and up, a Caddy proxy handled certificates and security headers, and Playwright rendered every quote and invoice PDF on the server. Because the services were independent from the start, they later moved to a self-hosted Kubernetes cluster without a rebuild.
The Full Story
The infrastructure that let a deposit-taking marketplace run five services with a small team and no surprises.
A marketplace that holds deposits cannot go down
Fully Booked takes customers' deposits, sends operators their earnings and delivers the documents both sides rely on. An outage is not an inconvenience here: a customer who cannot pay books elsewhere, and an operator who cannot open a quote loses the job.
The platform is five services, a customer site, an operator site, an admin dashboard, a documentation site and one backend, built and maintained by a very small team. The deployment had to be simple enough to run by hand and solid enough to trust.
Five services, one repository, one command
Every service ships as its own Docker image from a single repository. The four websites are built into small static servers, the NestJS backend carries the GraphQL API, and MongoDB and the uploaded files live on persistent volumes. One compose file wires them together on a private network, and a Makefile reduces a release to pull, build and up.


Cloudflare in front, with two deliberate exceptions
Cloudflare holds the DNS for every subdomain and proxies the public sites for caching, certificates and protection. Two records stay direct on purpose: the operator site, so Apple can read the file that lets links open the app, and the API, so Square's payment webhooks arrive without being blocked.
Getting either wrong would break deep links from every PDF or stop payments confirming, which is why both are documented beside the DNS table.


A reverse proxy that does the security work
A Caddy container at the edge issues certificates automatically, compresses responses, redirects every www address, adds strict transport, frame and content type headers to the API, and serves the app association files with the content type the stores expect.


Documents rendered in production
Every quotation, cancellation letter, invoice, booking confirmation and driver sheet is rendered on the server by Playwright running inside the backend image. Getting a headless browser to install inside a production container was the hardest part of the build, and it is what lets an operator send a polished PDF from a phone in seconds.




From one droplet to a cluster
The droplet carried the platform through its first phases. When the monthly bill and the limits of a single machine began to matter, the same images moved to a self-hosted Kubernetes cluster with zero downtime, possible because they had been built as independent services from the start.
For the founder that meant no rebuild and no outage, and for operators and customers nothing changed except that it kept working. The services themselves are told in the Fully Booked story.
What they said
Excellent time keeping, great attitude, brilliant skill. highly recommend
Dec 05, 2024
(5.0)Monir is an exceptional developer with outstanding expertise in his field. His advanced skills enable him to deliver results that surpass those of competitors. He is very thorough and has keen attention to detail, Monir is an excellent listener who can transform your ideas into reality with precision.
Nov 28, 2024
(5.0)Today marks one year of working with Monir, and this time has allowed me to know Monir as a truly dedicated individual. We have collaborated on my project daily for the past year, and not once has Monir failed to respond. Monir has invested tremendous effort and focus into this project, working late nights and early mornings, always available to answer calls and resolve issues. There has never been a moment when Monir turned down work or shirked responsibility. The project is growing day by day, and if it becomes a success, it will be largely thanks to Monir's unwavering dedication.
Jul 03, 2024
(5.0)I cannot express enough gratitude for Monir's exceptional work as a full-stack developer. Over the past 8 months, Monir has been instrumental in bringing my vision to life by diligently crafting a sophisticated platform that exceeds all expectations. Monir's proficiency in his craft is unparalleled. His technical expertise, coupled with his creative problem-solving skills, has consistently resulted in innovative solutions that have elevated our platform to new heights. His ability to seamlessly navigate through complex challenges showcases his mastery of both front-end and back-end development. Beyond his technical prowess, Monir's professionalism and dedication are truly commendable. He has demonstrated unwavering commitment and reliability throughout the entire development process, ensuring that every aspect of the platform is meticulously crafted to perfection. Working with Monir has been an absolute pleasure. His clear communication, attention to detail, and proactive approach have made collaboration effortless and enjoyable. He has not only met deadlines consistently but has also gone above and beyond to deliver features that surpass expectations. In conclusion, Monir is not just a developer; he is a visionary who brings passion, expertise, and dedication to every project he undertakes. I am immensely grateful for his invaluable contributions to our platform, and I wholeheartedly recommend him to anyone seeking a top-tier full-stack developer. Thank you, Monir, for your outstanding work and unwavering commitment to excellence. You are truly a standout talent in your field.
Mar 27, 2024
(5.0)Monir is a very experienced developer. I have been working with him very closely for 8 months now. He has achieved every goal that we planned. He has taken on very complex challenges with the project that we have created and has been able to solve every issue that we've faced. He is extremely hard working. He works day and night. He's work ethic is excellent. He never complains or give excuses. My project is beautiful now and I can't wait to promote it to the world.
Jan 21, 2024
(5.0)Monir has been working on my project for the last 3-4 months. We have been speaking and creating ideas to improve this project on a daily basis. The project is now complete and I can honestly say Monir is one of the best people I've ever worked with. Every single commitment that Monir promised from the beginning of this journey he stuck to and achieved. He never moaned, complained or made an excuse about anything. He completed every single commitment that we agreed upon. Monir worked early mornings and late nights until he produce the project I asked of him, and now my business journey is ready to move forward and I'm completely glad that I choose Monir to create this platform for me. The project consisted of an admin panel a customer website and an app. All projects were built to high specification and have very sophisticated features. I would definitely recommend monir to anyone looking for a serious developer.
Oct 18, 2023
(5.0)You May Also Like
Fully Booked - Promotional and Tutorial Video Production
A promotional video that walks a UK minibus operator through Fully Booked's benefits in the order they matter, made from the real app rather than stock footage. It opens on the operator's own problem, gives each benefit one beat on a real screen, and was cut to several lengths, from a few-second hook for social feeds to a full version for landing pages and the store listings.
Fully Booked - Zero-Downtime Migration to Self-Hosted Kubernetes
Fully Booked ran on managed cloud infrastructure with a bill that grew every month and a stack nobody fully owned. We moved the whole platform onto a self-hosted Kubernetes cluster without a minute of downtime for the people using it. The cutover covered DNS, ingress, databases and the release pipeline, staged so that traffic shifted only once each layer had been proven on the new cluster. Nobody using the app that week knew anything had happened, which was the point. The recurring bill became owned hardware, and the same cluster now carries the platform's weekly releases.
Fully Booked - Visual Asset Design with Photoshop
Store screenshots, a feature graphic, an app icon and email art, made in Photoshop from real screens so a young platform looks established to operators. The screenshots tell the pitch in five swipes at every size Apple and Google require, every email opens with its own illustration in the brand colours, and the icon and splash screens carry the logo of two hands meeting.

The blog is field notes from production: architecture decisions, AI systems that survived contact with real users, and infrastructure that pays for itself. Written from the work, not about it.


