Typography, sidebar & hero — readability first
Blog posts looked flat. Headings were the same size as body text, code blocks had no formatting, and lists blended into paragraphs. I added a typography plugin,...
27 posts
Blog posts looked flat. Headings were the same size as body text, code blocks had no formatting, and lists blended into paragraphs. I added a typography plugin,...
Up until now, every locale of a blog post was a separate row in the `posts` table. It worked, but it created a cascade of problems -- duplicated metadata, infla...
After weeks of building out the microservices, I hit a cluster of Docker issues that kept biting me on every fresh `docker compose up` -- disappearing vendor di...
Writing blog posts in a plain textarea is not a great experience -- no preview, no toolbar, no formatting hints. I replaced the raw textarea with EasyMDE in bot...
Setting up seven microservices by hand -- cloning repos, copying .env files, generating TLS certs, updating /etc/hosts, creating Docker networks, generating sec...
A large cross-cutting iteration — two-language support (PL/EN) across the entire system, new static pages in Frontend, a newsletter, and a GitHub commits tile o...
A series of UX improvements: dark theme in SSO, post and comment likes without requiring login, colorful categories, and refreshed post cards. Plus the removal...
A blog needs editorial management — not just publishing. In this iteration I added post management in the Admin panel, featured posts, and a Start Here section...
The project is live. OVH Managed Kubernetes cluster, images in GHCR, TLS with cert-manager and Let's Encrypt. Configuration management via Kustomize — no Helm,...
The system is running — but what's happening inside it? Time for observability. I set up the classic stack: Prometheus for metrics, Loki for logs, Grafana as th...