What happens when you open this site
This page runs on a server I set up and maintain. Here is the path a request takes, and the path a code change takes before it reaches you.
A request
-
Your browser
Asks for ibrahimmerkez.com over HTTPS.
-
Nginx
Handles the TLS certificate from Let's Encrypt, which renews itself, and decides where each request goes.
-
React container
Express container
Pages come from the React build. Anything under
/apigoes to the Node.js API. -
MongoDB Atlas
Stores the data. The database credentials live only on the server, never in the code.
Live check: asking the APIā¦
A change
-
Pull request
Every change goes through a branch and a pull request to main.
-
GitHub Actions
Builds the backend and frontend Docker images, so a broken build shows up before it is merged.
-
Merge to main
Starts a deploy job that connects to the server over SSH with a dedicated deploy key.
-
Hetzner server
A deploy script rebuilds the containers and restarts the stack with Docker Compose.
Work
I moved from hotel reception into software development in 2025.
-
Aug 2025 to now
Frontend and CMS developer
asioso, Munich
- Build and maintain FirstSpirit templates for two IHK platforms (Munich and Nuremberg), tested on staging before every production release.
- Built a committee and volunteer management module across several system layers: templates, frontend, JavaScript rendering and APIs.
- Created more than 40 reusable Storyblok components for a Next.js and React site, covered by Vitest tests.
- Integrated SonarCloud into existing pipelines and fixed Docker, Node and Netlify build issues.
- Work with clients directly, and with the team through Git branches, merges and code reviews.
-
Apr 2024 to Jun 2025
Receptionist
Hotel Brack, Munich
Tools I work with
From my job and my own projects.
- Frontend
- React, Next.js, TypeScript, JavaScript, Tailwind CSS
- CMS
- FirstSpirit, Storyblok
- Backend
- Node.js, Express, MongoDB, REST APIs
- Operations
- Linux, Docker, Docker Compose, Nginx, GitHub Actions, Let's Encrypt
- Quality
- Git with code review, Vitest, SonarCloud
What I've added since launch, and what's next
The project is live, and it isn't finished. Finished steps are marked green.
- Keep server logs for at most 30 days, with shortened IP addresses.
- Delete demo entries automatically after 24 hours.
- Limit how many requests one client can send to the API.
- Deploy only after the CI build has passed.
- Describe the Hetzner server in Terraform, so it can be rebuilt from code.