K.DEV

🚀 Built with Astro

Over the past two years, I have been building this website, which I finally released on April 11, 2025. It has been a long journey, and over Christmas I was able to spend some time fixing the remaining page speed issues that were preventing a 100 Performance score. I finally achieved it! 🎉

Let’s explore what this website is about:

Project Outline

I've explored and built many websites over the years, so I wanted to create one of my own. I’m not a designer, but I care about good design, of course inspired by 🍎. I’m a software thinker and practitioner, but I don’t want to get caught up in monotonous technical implementations of requirements. Experiments are fun. This website is my playground for trying new ideas while still focusing on the main goal: representing my work.

Scandinavian Simplicity

After watching a video about Swedish Web Design, the direction was clear: simplicity and accessibility. I also needed a theme, and dark mode felt like the right choice. Light mode is coming soon, maybe as a premium feature 😛. With a primarily Western geographical context in mind, Japanese Web Design (or Asian-centric design in general) felt less familiar, even though it had its peak during the glory days of the internet.

The ⌚ Timeline

I have a vision of “fluid content”. Not everything should be a blog post, but rather a note or an attachment. Therefore, I will experiment with a timeline and a never-ending scroll down to my date of birth, if I can find projects from that time 👶. The backbone of the entries will be a mix of Notion, Markdown, and links. The idea might resemble a social network more than a blog. I liked the first timeline Facebook introduced in September 2011, but over time it became more cluttered with every additional feature, specially ads and unrelated garbage. Maybe they were not even the first to explore this idea. WordPress, since version 3.0, also supports different post types and attachments.

So what’s in there?

Enough philosophy, let's talk tech. Here's the stack:

Astro

Years of SEO-driven requirements led me to choose Astro as the backbone of the website. As a content-focused site, I don’t need complex state management. It fits my needs well: I can still write components I enjoy working with, without worrying about JavaScript bundle size. 👻

Tailwind CSS

Tailwind makes styling fast and accessible. It looks solid out of the box, with some personal adjustments on top. It still resembles many other sites, which is likely a good thing, as users don’t need to relearn how to navigate it.

Notion

The CMS is a mix of Markdown files and Notion pages. Notion databases are particularly powerful. They are loaded through dedicated loaders and later merged chronologically with other resources.

Cloudflare

For the contact section, I use Cloudflare Turnstile, an invisible and GDPR-friendly captcha solution to prevent spam. Cloudflare also handles DNS and caching to improve performance, aside from a few off days in November and December. Yes, it’s always DNS.

PostHog

Analytics are handled via PostHog. It is GDPR-friendly and provides a solid foundation for future feature expansion. I use a simple, custom cookie banner, while analytics are powered by PostHog, with all analytics data being first-party and under my control.

Custom VPS (Kubernetes excluded)

I’m not using SaaS or managed cloud hosting, as a custom VPS provides better cost control without unnecessary complexity. The site runs on my own infrastructure, with a custom CI/CD setup powered by GitHub Actions.

Don’t forget the 🏆 Trophy

Here is the reason why it took another 10 months to bump out a blog post. Chasing the perfect score is a rabbit hole, and this one took me down to solving image optimization with the astro-notion-loader, before getting back to writing. But triple digits don't lie. ✌️

100 Lighthouse Score

That should, hopefully, apply to every page on this website. The score, not the time it takes to publish a new page… 😁

Cheers 🍻