This blog is a Next.js application.
With Next, you have a few different options when it comes to page rendering: you can choose to do it “on-demand” (server-side rendering) or ahead of time (static site generation). I've opted to build all the blog posts ahead of time, when the site is generated.
I also use Next's API Route for things that require persistence in the backend. I use MongoDB as my database, to store stuff like the # of likes each post has.
I deploy this blog on Vercel. I initially chose them because they're the company behind Next.js, and I figured it would be well-optimized. Honestly, their platform is awesome. I wound up moving some of my non-Next projects there as well.
When it comes to the styling, I use styled-components, and write all the styles from scratch. I don't use any "cosmetic" libraries like Bootstrap (and I don't think you should either). I do use Reach UI for things like modals, though.
For animation, I mainly rely on React Spring, though I've started dabbling with Framer Motion recently.
But the most critical part of my stack is MDX.