Web development provides me with a creative outlet. I built my first website for my mom's bookstore around the time I turned 20. It was a one-pager using Bootstrap.
Ever since, I've dreamed of becoming a full-stack developer. I started working through The Odin Project to learn the basics.
Another chance for practice presented itself when my sister started a counseling business. I built her site using plain HTML and CSS, and used Tailwind CSS for the first time.
Over the course of my computer science studies, I worked on several projects. One was a tool to automatically grade handwritten exams; the backend was built in Python using OpenCV for image processing, and I used React for the frontend.
On the side, I worked at Carl Zeiss IQS as a working student. There, I contributed to a sensorics dashboard built in Angular. I also gained experience working with data transfer using MQTT, WebSockets, and BLE.
For my practical study semester, I worked at Bosch Manufacturing Solutions. There, I built my first full-stack application from scratch. The app allowed users to search for development projects and view status updates. Project data was retrieved from MongoDB and Postgres databases. The frontend used Angular, and the backend API was built in .NET with C#.
During my Bachelor's thesis, I created another full-stack application using the same stack, this time at Carl Zeiss SMT. It was a report automation tool that enabled easy visualization of measurement results fed in as CSV files.
To start my career, I joined Kärcher. I began as a developer in the B2B eCommerce team and soon took on responsibility as the technical lead for a distributed team.
I continued to program on the side. My first project after graduation was a full-stack application which I viewed as my personal capstone project: a platform for sharing, browsing, and selling teaching materials. I used NestJS for the backend, React for the frontend, and Keycloak as the identity provider, hosting the app on DigitalOcean.
During that time, I refined my deployment workflow. GitHub Actions was used to SSH code onto my VM and build Docker images there. All my apps ran on a single DigitalOcean VM, using Docker Compose to organize services and Nginx as a reverse proxy.
My next project was a mortgage calculator where I explored Next.js for the first time.
When my DigitalOcean VM reached capacity, I moved my projects over to Hetzner. To do this efficiently, I defined all my infrastructure as code using Terraform.
To level up my deployment game, I created a three-node Kubernetes cluster using k3s. To keep everything as code, I used Ansible for the setup and ArgoCD as my GitOps tool.
Instead of SSH'ing code to my VMs, I started building images in the pipeline and storing them in GHCR. Secrets are now securely fetched from AWS Parameter Store.
That tool didn't quite fit my use case, so I tried Strapi instead. I added Strapi as a backend to a previous project and built a site for a potential customer using Next.js. However, after a critical CVE affected Next.js, I reconsidered that choice.
This led me to the present, where I am using Astro to build this site.