April Recap: What I Built, What I Learned, What's Next

April started with a decision to rebuild my website. It ends with a running Next.js application, a custom CMS, a Bitcoin node, a BTCpay server, a token-gated API, and 30 days of blog posts shipped on a consistent schedule. Here's the honest recap.
What I Built
heathschweitzer.com on a modern stack. The site migrated from WordPress on LAMP to Next.js 16, Prisma 6, MySQL, NextAuth, and Tailwind. Deployed on a DigitalOcean VPS with CloudPanel, PM2, Nginx, and Cloudflare. CI/CD via GitHub Actions — every push to main deploys automatically in about 40 seconds.
A custom CMS. Not planned but inevitable once I started. Post creation and editing with Markdown, AI-assisted content generation using the Anthropic API, category and tag management, scheduled publishing, draft preview mode, contact form with spam protection, and a full admin dashboard.
A token-gated REST API. /api/v1/posts with Bearer token authentication, full CRUD, and support for creating posts programmatically. This post was created through it. So were all of April's posts.
A Bitcoin node and BTCpay server. The node finished its Initial Block Download after over a week of syncing — 944,000+ blocks, 16+ years of transaction history, independently validated from cryptographic first principles. BTCpay Server at shepherdhosting.com is operational and ready to provision accounts.
What I Learned
AI-assisted development is genuinely different. I worked with Claude throughout this project — not as a search engine for syntax, but as a collaborator who could hold context across a complex codebase and help reason through design decisions. The experience changed how I think about what solo developers can accomplish.
The quality of the output depends heavily on the quality of the context you provide. A good CLAUDE.md file in the repository, clear explanations of architectural decisions, and willingness to iterate on generated code — these matter more than the underlying model's capabilities.
Building things you use is the best education. Every tutorial I've done in the past eventually ended and the project went nowhere. This one had stakes. The CMS needed to work because I was actually publishing to it. The deploy pipeline needed to be reliable because I was using it every day. That pressure produced better learning than any course.
Bitcoin's technical design is underappreciated. I knew Bitcoin's high-level properties going into this month. After running a node and building payment infrastructure on top of it, the elegance of the underlying design is clearer. The UTXO model, the difficulty adjustment, the mempool auction, the Proof of Work security model — each piece fits together with a coherence that makes more sense when you're interacting with it directly rather than reading about it.
What Didn't Work
The content calendar was aggressive. 30 posts in 30 days at 600-900 words each is a lot of content. I leaned heavily on AI assistance for drafting, with my own edits and additions — particularly for posts about my personal experience with the node sync and the stack decisions. For a sustained content operation, a post every two or three days would be more sustainable without AI assistance.
Image and video support is still missing. The CMS doesn't support image uploads or video embeds. I worked around this for April — text-focused content — but it's a gap that matters for the kind of posts I want to write going forward. Cloudflare R2 for image storage and an oEmbed approach for video are on the roadmap.
The node sync post is half-written. I wrote the April 28th post in advance and scheduled it, with a note to update it when the node actually finished syncing. Whether the actual sync completion matched my predictions is something only I'll know by the time you read this.
What's Next
May content. The technology and Bitcoin topics I want to write about extend well beyond April. Lightning Network deep dives, self-custody wallets, BTCpay setup walkthroughs, more stack-level technical posts. The publishing infrastructure is in place — it's just a matter of writing.
Image uploads. Cloudflare R2 is the leading candidate for storage. The CMS needs a file upload component, markdown image insertion, and an R2 integration. Probably a weekend of work.
BTCpay accounts. With the node operational, I'm opening up BTCpay accounts at shepherdhosting.com for businesses and individuals who want to accept Bitcoin. If that's you, use the contact form.
Category hierarchy and comments. The CMS has the schema for parent/child category relationships and comments, but no UI for either. Low priority but worth building eventually.
One Month In
A month ago I started this as a learning project. It became something more — a genuine production system I use daily, content I'm proud of, and Bitcoin infrastructure that's actually operational.
The stack is understood end to end. The content pipeline works. The node is synced.
On to May.
Tagged
If this post was useful, consider buying me a coffee ☕ with ₿itcoin — no account needed, any amount welcome.