One of the biggest shifts is that the frontend no longer feels like a codebase living between two eras. Over just a few days, thucde.dev went through a pretty substantial set of changes:
upgrading to Next.js 15
making shadcn/ui a clearer design foundation
reducing more of the lingering MUI-heavy surfaces
finishing the frontend migration to strict TypeScript
moving more server-owned state away from Redux and into SWR, where it belongs
Thucde.dev
656 x 264, 16.1 KB, PNG
Thucde.dev is now TypeScript! ✨
On paper, that can sound like a pile of technical debt work. But that is also exactly why it matters.
Small products often get stuck in a half-old, half-new state for a long time: newer components on top, older state assumptions underneath; App Router in place, but still a client-heavy mental model; TypeScript installed, but not strict enough to catch the bugs that matter early. The result is that every change carries extra fear.
What changed here is not just the UI layer. It is the combination of three deeper improvements happening together:
1.
rendering model
2.
state ownership
3.
type safety
Most readers will not notice that directly, and that is fine. Maintainers will. This is the kind of change that makes the next feature cheaper, safer, and faster to ship.
Thucde.dev
2334 x 1496, 278.9 KB, PNG
Thuc writes blogs with his own customized rich, functional editor, Notion-like.
Another part of this sprint that feels especially worth mentioning, even if it is not flashy, is the security work.
Across both the backend and frontend, there were a number of meaningful improvements:
adding Zod-based validation to more mutation endpoints
adding SSRF protection
fixing private blog metadata leaks
gating routes with operational or admin-level impact
sanitizing HTML in higher-risk blocks like alerts and code
hardening the Unsplash route with session checks and URL validation
Why does this matter so much?
Because on a content platform, the dangerous edges often hide in exactly the places that feel the most convenient: rendering HTML, accepting external URLs, exposing metadata for private content, or leaving behind a few helpful local/dev routes.
Problems like that do not always explode immediately. More often, they slowly turn into the kind of platform you stop trusting to extend confidently. So in this case, security is not just hygiene. It is part of what makes future progress possible.
narrowing build-time static generation to avoid Vercel timeouts
fixing feed, sitemap, cache behavior, and RSS details so publishing surfaces are more stable
adding a workspace-level verify script for cross-stack changes
improving indexes and a few heavier query paths
None of that makes for a dramatic screenshot. But if you are the person running the site, this is exactly the layer that turns a system from “it works” into “it holds up.”
When builds stop trying to do too much at once, deploys get less fragile.
Thucde.dev
2656 x 1694, 1.4 MB, PNG
Thucde.dev Landing Page
thucde.dev just went through a bigger change than it might look like at first glance: a cleaner frontend foundation, a more capable editor, stronger security, and a much less fragile deploy path. Not just a new feature sprint, but a real foundation upgrade