Rebuilding suddo.io — Goodbye Ghost, Hello Quarkus + Nuxt

Why the Rebuild

In the past month I went on a nightly sprint to reshape suddo.io. I started with a ready‑made UI to bootstrap fast, but it became clear that I needed full control over the stack, performance, and developer experience.

First, Leaving Ghost

Originally, suddo.io ran on Ghost CMS with Nginx in front. The first major decision was to move away from Ghost entirely—not just theming it. I needed tighter control over routing, rendering, API contracts, and deployment. That decision set the direction for everything that followed.

From Template to Custom

I initially tried the Pinx Vue.js Admin Template to get moving quickly. It helped with a few base components and some CSS. Then I rewrote almost everything: routes, server logic, data flows, and build setup. The result is a lean codebase that fits the product instead of the other way around.

State Management: Pinia Came Later

At first I avoided adding a state library to keep things simple. Only after migrating off Ghost and stabilizing the new app architecture did I adopt Pinia for shared state. This kept the early steps lightweight and let me introduce state patterns when the boundaries were clear.

What Powers suddo.io Now

Here’s the stack running today: - Backend: Quarkus — my favorite for fast startup, reactive options, and native‑friendly builds - Frontend: Vue 3 with Nuxt — file‑based routing, SSR/ISR flexibility, excellent DX - State: Pinia — added after the Ghost migration, once data flows were defined - Styling: Tailwind CSS — consistent design tokens and rapid iterations - Delivery: Single VPS — simple, controlled environment that I can tune end‑to‑end - Edge & Caching: Cloudflare — applied caching rules to take the load off the box and speed up global delivery

Why this combo?

The Build & Deploy Flow

  1. Code in separate repos (backend/frontend) with shared API models
  2. Deploy to a single VPS with Nginx as a smart reverse proxy (HTTP/2, gzip/brotli)
  3. Edge tuned via Cloudflare: cache rules for static assets, stale‑while‑revalidate for HTML where safe
  4. Observability: basic logs/metrics, with room to expand

Challenges and Solutions

What This Means for Readers

Faster page loads, a cleaner UI, and a platform that’s easier to extend with the content you asked for: reactions, comments, tutorials, tech news

What’s Next


That’s the update. I thought a template would help me bootstrap—and it did—but the final product is a bespoke build. I first left Ghost, then brought in Pinia once the architecture settled. Now suddo.io runs on Quarkus + Nuxt + Tailwind on a single VPS, fronted by Cloudflare. Stay tuned.


September 19, 2025
Reply