May 16, 2026
Building This Blog with Codex and Vercel
A short write-up about replacing my old Blogger setup with a custom Next.js blog, the fixes made along the way, and why Vercel became the deployment target.
Why I Built It
I had been using Blogger for m0skit0.org for a long time, but the site had been mostly quiet and I wanted something that felt more mine, and use AI to build it. The goal was to create a simple technical blog for programming, Android, Linux, AI, and whatever else I feel like writing about.
I wanted something close to the old blog experience: a chronological list of posts, labels, archive pages, search, RSS, and a small sidebar. I also wanted an admin screen where I could create, edit, delete, move, and publish posts without depending on Blogger.
How Codex Built the First Version
I worked with Codex on Windows to create the project as a Next.js app. The first version used TypeScript, the App Router, Tailwind CSS, local JSON files for content, and a small custom admin panel. Posts were stored in data/posts.json, and the About Me text was later moved into its own data/about-me.json file.
The public blog started with these basics:
- Homepage with published posts
- Individual post pages
- Archive page
- Search form
- Dark theme by default
- Sidebar with labels and About Me
The admin side started as a lightweight local control panel. It can manage posts, publish drafts, reorder entries, and edit the About Me text. Authentication was added with Auth.js so /admin is protected by a password.
The Fixes Along the Way
The first implementation was useful, but it needed a handful of corrections before it felt right.
I changed the public homepage so it starts directly with the post list instead of showing an extra heading. I also switched the project from Spanish to English, and made the dark theme the default across the public site and admin.
The admin workflow also needed some tightening. The post list was changed to sort from newest to oldest, and the save/publish flow was fixed so both actions refresh the list and show a success/error message. The About Me block was split into a separate JSON file and then polished so links render correctly in the sidebar.
Then the repo was pushed to GitHub (Git was used since the beginning, of course), and the local branch was cleaned up so it matched the remote state.
Choosing Vercel
Vercel was proposed by AI and immediately made sense because this is a Next.js blog, its free tier, and direct integration with Github: push to the repo, let Vercel build it, and get HTTPS and preview deployments without managing a server.
There was one important caveat. Vercel is not a traditional persistent filesystem host, so runtime writes to local JSON files are not a durable production storage model. This was not an issue as I wanted any new content to be pushed through Github instead.
Pointing the Domain to Vercel
The deployment flow is straightforward. The GitHub repository is imported into Vercel as a Next.js project, with the usual environment variables for Auth.js and the public site URL.
For the public domain, I just followed Vercel's documentation on the subject (Vercel custom domain setup) and configured it on my domain provider Arsys. It was redirected and working in a matter of seconds.
The Result
The result is a small custom blog that feels close to the old m0skit0.org, but is easier to evolve. It has the shape of a classic technical blog, a private admin panel, repo-tracked content, and a deployment path that fits the stack. All this built in under a couple of hours.