
Rework of My Personal Website
nickringelmann.comMy own site is the one project where I'm both client and designer, so I use it to test decisions before I'd recommend them to anyone else. It's deliberately plain: no page builder, no component library pulled in from npm, a handful of Astro components and one stylesheet I can read start to finish. When I added a contact page, I skipped the usual third-party form service and built a small PHP backend instead, so a message sent through the form gets mailed straight from my own IONOS inbox rather than passing through someone else's server first.
The site runs on Astro 7 as a fully static build. I type project data in TypeScript and write blog posts in Markdown through Astro's Content Collections. Dark mode comes down to a single data attribute on the html tag: I persist it in localStorage and set it before paint so the page never flashes the wrong theme. Screenshots and photos go through Astro's image pipeline, which resizes everything to WebP with retina versions instead of me shipping full-resolution files. A GitHub Actions workflow builds the site and pushes it straight to IONOS shared hosting over SFTP on every push to main, so publishing a change is a single git push.



