Lean Software 4 min read Feb 08, 2026

Why I Replaced $2,200/Year in SaaS with a Single Rails App

TL;DR

I was paying $184/month ($2,208/year) for Squarespace, ConvertKit, GoHighLevel, and Metricool. I replaced all of them with a single Rails 8 application running on a $5/month Railway server with SQLite. Annual savings: $2,000+. Here's the full breakdown — what I replaced, what I kept, and why building your own tools makes sense if you're already a developer.

The $184/Month Problem

Here's what I was paying every single month:

  • Squarespace (3 sites): $36-48/month — hosting basic websites with no real flexibility
  • Kit (ConvertKit): $33/month — email marketing and subscriber management
  • GoHighLevel: $97/month — CRM, pipeline management, and automation
  • Metricool: $18/month — social media scheduling and analytics

Total: $184-196/month. $2,208-2,352/year.

And here's what really bothered me: these tools don't talk to each other. My CRM didn't know about my blog posts. My blog didn't know about my leads. My email tool didn't know about my booking system. I was paying for four separate silos that each did one thing adequately.

The Rails 8 Replacement Stack

Here's what I built, and what it costs to run:

  • Rails 8 — the framework that does everything. Website, blog, CRM, booking, email, content engine. One codebase.
  • SQLite — production database. No Postgres. No MySQL. No managed database bills. Just a file on disk, backed up continuously to S3 via Litestream.
  • Solid Queue / Cache / Cable — background jobs, caching, and real-time updates, all backed by SQLite. Zero Redis.
  • Tailwind CSS — styling without a separate design system
  • Railway.com hosting — $5-10/month for the entire app
  • Amazon SES — email delivery at ~$1/month for my volume

New monthly cost: $10-20/month. Annual savings: $2,000+.

What Each SaaS Tool Got Replaced With

Squarespace → Rails views + Tailwind. I designed each page with Tailwind utility classes. The CMS is Action Text (Rails' built-in rich text editor). Pages are just database records that render through ERB templates. I have full control over every pixel, and it's faster than Squarespace ever was.

ConvertKit → Action Mailer + SES. For sending emails, I use Rails' built-in Action Mailer with Amazon SES as the delivery service. Cost: about $1/month. ConvertKit was charging me $33/month for the same thing. I don't need fancy email templates — I need emails that arrive in inboxes.

GoHighLevel → Custom CRM. This was the biggest win. I built a simple CRM with contacts, pipeline stages, tagging, interaction logging, and follow-up reminders. A Kanban board built with Turbo Streams and Stimulus — no React, no heavy JavaScript frameworks. GoHighLevel was $97/month for features I used maybe 10% of.

Metricool → Partially kept. I still use Metricool ($18/month) for social media scheduling and analytics across 8 platforms. Building API integrations for LinkedIn, Instagram, TikTok, Twitter, Threads, Bluesky, YouTube, and Facebook would take months and wouldn't save enough to justify the effort. Know when to build and when to buy.

The Secret Weapon: Everything Is Connected

This is the part the SaaS stack could never do. In my Rails app:

  • A blog post knows which topic cluster it belongs to and links to related posts automatically
  • When someone submits a contact form, they're automatically added to the CRM as a lead
  • The booking system creates a contact record and logs the interaction
  • The content engine generates blog posts and social content from a single source of truth
  • The sitemap, RSS feed, and llms.txt files auto-update when posts are published

Everything is one database, one codebase, one deployment. No Zapier. No webhooks. No "integration partners." Just Ruby code calling Ruby code.

Lessons Learned

Ship ugly, iterate fast. My first deploy looked terrible. I didn't care. It worked, and I stopped paying for Squarespace that day. Design improvements came in daily 30-minute sessions over the next few weeks.

SQLite is production-ready. I was skeptical, but Rails 8 changed my mind. Solid Queue, Solid Cache, and Solid Cable all run on SQLite. My app handles everything I need without a managed database. Litestream backs up the database file to S3 continuously. If you're running a single-server app with one primary user, SQLite is not just adequate — it's better. Zero configuration, zero maintenance, instant backups.

Don't rebuild everything. I kept Metricool because building social scheduling for 8 platforms would be months of work for $18/month in savings. I kept Kit (free plan) as a backup email system. Pick your battles — replace the expensive, underutilized tools first.

Should You Do This?

If you're a developer paying for SaaS tools that do simple things, yes. Especially if:

  • You're comfortable with Rails (or any full-stack framework)
  • You value owning your data and your workflow
  • You want tools that work exactly the way you think
  • You're paying $100+/month for tools you barely use

If you're not a developer, this is exactly the kind of thing a fractional CTO can evaluate for you — whether building custom tools makes sense for your specific situation, or whether the SaaS stack is actually the right call.

For me, it was the best technical decision I made all year. $2,000 back in my pocket, tools that work exactly the way I want, and a system I actually enjoy maintaining.

If this was useful, here are two ways I can help: