I rebuilt this site after ~3 years of leaving it alone

So I hadn't touched this site in almost three years. Like, almost nothing. I mean there had been small tweaks here and there, but nothing major. It just sat there. Then I finally opened the project back up and ended up going way further than I planned to, so here's a rundown of what actually happened.
The big thing: there's a real blog now
The main event is that this site has an actual blog now, with a real editor, backed by Postgres instead of me manually writing files and pushing them somewhere. I sign in with GitHub and that's the whole login system. No accounts, no passwords, nothing to maintain (At the end of the day, this is my personal website so..., good enough).
The editor itself kept growing the more I used it. Started simple, then I kept running into "oh it'd be nice if I could just..." moments:
Normal rich text stuff: headings, lists, blockquotes, code blocks, alignment.
Image uploads with resize handles, and you can drag them around. Goes straight to Vercel Blob (free tier FTW).
Autosave, because I got tired of losing half-written drafts when I accidentally closed a tab.
You can literally paste a screenshot straight from your clipboard and it just uploads and drops in. Same with links, honestly -- paste a bare URL on its own line and it turns into a little preview card automatically. I kept the actual link visible too instead of hiding it behind the card, because that annoyed me on other sites.
YouTube embeds, link embeds, the normal toolbar stuff you'd expect.
Bulk select/delete for cleaning house, and most recently an archive option for posts I want off the public site without actually deleting them. Kind of a "put this away for now" button.
Stuff for people actually reading the blog
Search and pagination on the blog list, done server-side and rate limited so nobody can just hammer it. If I'm signed in I get edit/delete buttons right on the post itself, not buried three clicks deep in some admin panel. There's real SEO metadata per post now, a sitemap, robots.txt, and an RSS feed at /feed.xml if that's your thing (respect if it is). Also added share buttons at the bottom of posts, just copy link and share to X, nothing fancier.
One I'm kind of proud of: posts show an "Updated" badge if I've actually edited them after publishing. Took a bit of care to make sure that doesn't fire on all the little autosaves I do while a post is still a draft, only real after-the-fact edits.
General site stuff
Added a light/dark toggle, which honestly should've existed years ago. There's a subtle loading bar now for slow page transitions, and I added this little ripple effect that shows up when you click anywhere on the page, just for fun, no real reason. Did a pass on accessibility too, reduced motion support, better focus indicators, contrast fixes, actual labels on things that needed them.
Fixed a bunch of old bugs I apparently never noticed: nav highlighting breaking on nested routes, timestamps showing in the wrong timezone, the editor's content width being capped for no reason, a focus box that didn't line up right, code blocks that were basically unreadable in light mode (dark text on a near-black background, oops).
Also killed the About page. It was mostly repeating stuff already on the home page, and the one part that wasn't was this whole paragraph about "here's the kind of team I'm looking for" from when I was actively job hunting. Not really where I'm at anymore, so it just felt like stale copy sitting there.
The less visible stuff
Ran an actual security pass over the thing. Fixed an SSRF issue, a way to get around the rate limiter, turned on row-level security on the database (turns out Supabase exposes every table through a public API by default unless you lock that down), hardened the sign-in flow against someone squatting my old GitHub username, fixed a spot where post data could've broken out of a script tag if I ever put weird characters in a title.
Added error handling (I mean good-ol error boundary ya know) so if something breaks on one page it doesn't take the whole site down to a blank screen anymore, you'd get a real "something broke" message and the nav still works. Also chased down a couple of annoying bugs where deleting or archiving a post would leave the page showing stale data until you manually refreshed it.
And I hooked up Vercel Analytics and Speed Insights, mostly so I stop flying completely blind about whether anyone actually reads this thing.
Everything else
Switched package managers, updated a pretty embarrassing pile of outdated dependencies, added ESLint, rewrote the README a couple times because it kept drifting from what the code actually did.
Anyway. Three years is a long time to leave a project alone. Feels good to have it running again.