Rebuilding Write Software, Well in Rails

I am Rebuilding this Blog with Rails

After three years on Ghost, I'm rebuilding this blog from scratch with Ruby on Rails. In a new series, I'll document the journey of building a production Rails application, from development to deployment. Follow along as I build the new home for Write Software, Well.

4 min read

For a while now, I've wanted to build my own Rails app from scratch, that's running in production, and is used by real users. I’ve explored several ideas and even built a few prototypes, but none of them felt substantial or meaningful enough to sustain long-term development.

After many such attempts, I realized that the application I was looking for was right in front of me.

For the last three years and over 200 posts, the Write Software, Well blog has been hosted on Ghost. It's a truly wonderful platform that has served this website well, and I recommend it to anyone starting a new blog. I'm sure it will serve me well for the next 1000 posts and more.

This blog averages 15-20 thousand monthly visits, has a few thousand newsletter subscribers, and has a range of CRUD functionality along with the admin interface for managing everything, including the content and the newsletter. When you consider all the features Ghost provides out of the box, it's clear that this is more than just a static blog. It's a pretty cool CMS application suitable for a small Ruby on Rails application.

In addition, I've always wanted to add new features to the blog such as a course platform, space to publish books, a membership area, payment processing with Stripe, custom newsletter workflows, and much more. Now I could handle everything with third-party platforms like Teachable, Circle, Kajabi, and others. But I wanted to have some skin in the game as someone who writes about, and works with Rails every day with clients, and wanted to build most of the platform myself, using Ruby on Rails. I will continue to rely on third-party services for mission-critical stuff like email delivery and payment processing, but I want the main application to be powered by Rails.

This brings me to a new series of articles I'm starting today. I'll be rebuilding this blog from scratch, using Ruby on Rails, and writing about it as I go along. Once it's built, I will move the blog to the Rails app and retire the Ghost blog (or use it for my other blogs).

For some time, I've also wanted to do a comprehensive Ruby on Rails course. There are many excellent courses that explain the framework in depth. However, I haven't found that many (none?) that explain Rails with a real project with real traffic. Personally, I've found the most effective way to learn a topic or a concept is to learn it in the context of a real project. Hence, I think it will be a terrific learning opportunity, first of all for myself, and then for the readers who choose to follow along, and will turn into an excellent course for folks who want to learn Ruby on Rails.

I'm also tired of writing blog posts using imaginary examples to teach Rails. Building this blog in public with Rails will give me a ton of new blog topics to write about, all grounded in the context of a real Ruby on Rails project. Every decision, every trade-off, every bug fix will provide a richer context for new blog posts and keep them real.

It will also show how I build my Rails apps, so you can see my solutions, critique them, and suggest improvements. So it will be a win-win for both me and you, the readers.

Dude, it's a blog. How hard can it be?

I know, I know. If I was reading a blog post like this, this would be my first reaction. But if you consider the amazing CMS functionality that Ghost provides + the features I mentioned above, all combined together make it a really nice web application, nothing to sneeze at.

Plus, I pay $480 USD to Ghost each year, so if I can build and host this blog myself, that will result in a good amount of savings over time, as I want to maintain and grow this blog over many more years, even decades to come, as it has become an important part of my professional life and has been a consistent and reliable source of new leads for my business.

Agreed, I'm not building anything totally unique, but it will be a focused project to learn a whole lot of things, to build my skills as a professional Rails developer, the learnings from which can be applied to my current and future client projects.

So, with that context, what can you expect to learn? Well, everything that goes into building a real application. Here are some of the topics you can expect me to cover:

  • Rails Development: Building a full-stack web application using Rails and Hotwire, deployed with Kamal to Linux servers.
  • Web Design and CSS: I finally have a reason to put my copy of Refactoring UI, which I bought a few years ago, into practice. We'll work through the design process and implement it with Tailwind CSS.
  • Digital Marketing and SEO: We will explore newsletter automations, welcome sequences, and programmatic SEO within a Rails context. By this time next year, I want to at least double the current number of subscribers and at least reach 50K readers per month, and I'll document the marketing experiments I'll be doing.
  • Advanced features: A membership + recruiting platform for Rails developers along with the ability to create and sell books and courses.
  • Payments: Integrating Stripe to handle payments for memberships and products, an area where I have limited experience and am excited to learn more.

Now, I could quietly rebuild the blog before launching, or give up on it halfway and no one will be any wiser, but where is the fun in that? Leaving my full-time job two years ago and launching and growing my Rails development studio have taught me that if I compress the timeline, have real constraints, and keep myself accountable, I can meet the goal much more quickly.

My yearly Ghost subscription renews in February, so that's the deadline. I want to build the blog with all the current features I love and use from Ghost, migrate existing blog posts and have it up and running on writesoftwarewell.com before that. This might seem like a lot of time for building a blog, but I’ll be writing detailed posts documenting the whole process, so I need room for both writing and development.

So, I look forward to rebuilding Write Software, Well and documenting and sharing the development process with you. I hope you'll find it useful.


If you'd like to receive future articles directly in your email, please subscribe to my blog. Your email is respected, never shared, rented, sold or spammed. If you're already a subscriber, thank you.