<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: The One-Man Framework</title>
    <description>The latest articles on Forem by The One-Man Framework (@onemanframework).</description>
    <link>https://forem.com/onemanframework</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3916104%2F8d0bb96d-705a-4f93-b66f-126c9de27e71.png</url>
      <title>Forem: The One-Man Framework</title>
      <link>https://forem.com/onemanframework</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/onemanframework"/>
    <language>en</language>
    <item>
      <title>The Art of Deleting Code: Why Your One-Man App Should Be Shrinking</title>
      <dc:creator>The One-Man Framework</dc:creator>
      <pubDate>Thu, 21 May 2026 22:06:26 +0000</pubDate>
      <link>https://forem.com/onemanframework/the-art-of-deleting-code-why-your-one-man-app-should-be-shrinking-5b16</link>
      <guid>https://forem.com/onemanframework/the-art-of-deleting-code-why-your-one-man-app-should-be-shrinking-5b16</guid>
      <description>&lt;p&gt;Most developers think that "progress" means adding lines of code. We feel good when we finish a new feature, add a new gem, or create a new database table. We think we are building an empire.&lt;/p&gt;

&lt;p&gt;But as a solo developer, you need to realize a painful truth: &lt;strong&gt;Every line of code you write is a liability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every line of code is something you have to debug, something you have to upgrade when Rails 9 comes out, and something that takes up space in your brain. If your app grows too large, you will eventually hit "Context Bankruptcy" - you will be too afraid to change anything because you don't remember how the whole system fits together.&lt;/p&gt;

&lt;p&gt;In 2026, the most important skill for a solo dev is not writing code, but &lt;strong&gt;ruthlessly deleting it.&lt;/strong&gt; Here is how I keep my apps small, fast, and manageable.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The "Feature Funeral"
&lt;/h2&gt;

&lt;p&gt;We often build features because we &lt;em&gt;think&lt;/em&gt; users want them. Six months later, we look at the database and realize only 2 people have ever clicked that button.&lt;/p&gt;

&lt;p&gt;Most developers leave that code there "just in case." &lt;br&gt;
&lt;strong&gt;Don't.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If a feature isn't providing core value, delete the controller, delete the views, and drop the database columns. If you feel bad about it, remember that the code still exists in your Git history. You can always go back and find it later. Deleting unused features reduces the number of "moving parts" you have to keep in your head.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pruning the "Gem Forest"
&lt;/h2&gt;

&lt;p&gt;I used to be a "Gem Addict." I would add a gem for every little problem. &lt;br&gt;
Need to format a phone number? Add a gem. &lt;br&gt;
Need a simple slider? Add a heavy JS library.&lt;/p&gt;

&lt;p&gt;In Rails 8, we have so many built-in tools that many old gems are now useless.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Solid Queue&lt;/strong&gt; means you can delete &lt;code&gt;sidekiq&lt;/code&gt; and &lt;code&gt;redis&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Importmaps&lt;/strong&gt; means you can delete &lt;code&gt;webpacker&lt;/code&gt; and &lt;code&gt;package.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Native Authentication&lt;/strong&gt; means you can delete &lt;code&gt;devise&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every gem you delete makes your &lt;code&gt;bundle install&lt;/code&gt; faster and reduces the risk of security vulnerabilities. Once a month, I run &lt;code&gt;bundle pristine&lt;/code&gt; and look through my Gemfile to see what I can replace with 10 lines of plain Ruby.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cleaning up "AI Slop"
&lt;/h2&gt;

&lt;p&gt;If you use AI tools like Cursor or ChatGPT, you are generating code faster than ever before. But AI is "wordy." It will often write a 50-line method to solve a problem that only needs 10 lines. It adds extra "safety checks" and "helper methods" that you don't actually need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Workflow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Let the AI generate the feature.&lt;/li&gt;
&lt;li&gt;Verify that it works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor and Delete.&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Go through the generated code and ask: &lt;em&gt;"Do I really need this private method? Can I do this with a standard Rails helper?"&lt;/em&gt; Treat the AI-generated code like a rough draft. Your job is to edit it down until only the essential logic remains.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. CSS and View Refactoring
&lt;/h2&gt;

&lt;p&gt;Tailwind CSS is a superpower for deleting code. Before Tailwind, I had thousands of lines of custom CSS in &lt;code&gt;application.css&lt;/code&gt;. I was terrified to delete any of it because I didn't know which page it styled.&lt;/p&gt;

&lt;p&gt;With Tailwind, the style is in the HTML. When I delete a view partial, &lt;strong&gt;the CSS dies with it.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If you find yourself writing custom CSS classes like &lt;code&gt;.user-profile-header-v2&lt;/code&gt;, stop. Convert it to pure Tailwind utility classes. This allows you to delete your &lt;code&gt;.css&lt;/code&gt; files entirely and rely on the framework to keep your bundle size small.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The "Dead Code" Audit
&lt;/h2&gt;

&lt;p&gt;Every few months, I run a "Dead Code" audit. I look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Unused Routes:&lt;/strong&gt; Run &lt;code&gt;rails routes&lt;/code&gt; and see if there are paths pointing to actions you deleted.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Unused Partials:&lt;/strong&gt; Look in your &lt;code&gt;views&lt;/code&gt; folders for files that aren't being rendered anywhere.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Abandoned Migrations:&lt;/strong&gt; If you have 50 migrations that just add and remove the same column while you were experimenting, consider squashing them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;A "Majestic Monolith" is only majestic if it is clean. If it is filled with dead code and abandoned experiments, it’s just a "Big Ball of Mud."&lt;/p&gt;

&lt;p&gt;The goal of the &lt;strong&gt;One-Person Framework&lt;/strong&gt; is to give you the power of a team. But a single human cannot manage a 100,000-line codebase alone without burning out. &lt;/p&gt;

&lt;p&gt;Keep your app small. Keep your Gemfile lean. And remember: &lt;strong&gt;The most satisfying feeling in programming isn't seeing a green test suite—it's seeing a Pull Request that says "-1,500 lines."&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rails</category>
      <category>productivity</category>
      <category>career</category>
      <category>startup</category>
    </item>
    <item>
      <title>The Solo Developer's Secret: Why Boring Tech is More Profitable</title>
      <dc:creator>The One-Man Framework</dc:creator>
      <pubDate>Wed, 20 May 2026 22:06:26 +0000</pubDate>
      <link>https://forem.com/onemanframework/the-solo-developers-secret-why-boring-tech-is-more-profitable-oke</link>
      <guid>https://forem.com/onemanframework/the-solo-developers-secret-why-boring-tech-is-more-profitable-oke</guid>
      <description>&lt;p&gt;Every morning, I see the same thing on my Twitter feed or the GitHub Trending page. A new Ruby gem is released that promises to "revolutionize" how we handle state, or a new "minimalist" alternative to a standard Rails tool that has 500 stars in its first week.&lt;/p&gt;

&lt;p&gt;As developers, we love new things. We love "cleaner" syntax and smaller dependencies. But after building and maintaining Rails apps for years, I’ve stopped chasing the hype. &lt;/p&gt;

&lt;p&gt;In 2026, my &lt;code&gt;Gemfile&lt;/code&gt; is intentionally boring. I prefer gems that have been around for a decade over the latest shiny trends. Here is why boring tech is actually a solo developer's greatest competitive advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The "Abandoned Gem" Trap
&lt;/h2&gt;

&lt;p&gt;When you use a brand-new gem that just trended on GitHub, you are taking a massive risk. &lt;/p&gt;

&lt;p&gt;The maintainer might be excited today, but what happens in six months when they get a new job or lose interest in the project? If that gem breaks when Rails 8.1 comes out, &lt;strong&gt;you&lt;/strong&gt; are the one who has to fix the source code or find a way to migrate away from it.&lt;/p&gt;

&lt;p&gt;"Boring" gems like &lt;strong&gt;Devise&lt;/strong&gt;, &lt;strong&gt;Sidekiq&lt;/strong&gt;, or &lt;strong&gt;Kaminari&lt;/strong&gt; have survived multiple Rails version upgrades. They have a team of maintainers and a massive community ensuring they don't die. For a solo developer, "stability" is a feature that is more important than "cool syntax."&lt;/p&gt;

&lt;h2&gt;
  
  
  2. AI and Documentation Edge
&lt;/h2&gt;

&lt;p&gt;In the era of &lt;strong&gt;Vibe Coding&lt;/strong&gt; and AI assistants like Cursor or ChatGPT, boring gems have a huge advantage: &lt;strong&gt;Training Data.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI models have read millions of lines of code involving the "standard" gems. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If I ask an AI to "Add a password reset flow using Devise," it gets it right 100% of the time. &lt;/li&gt;
&lt;li&gt;  If I use a shiny new auth library released three months ago, the AI will hallucinate and give me broken code because it hasn't seen enough examples yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using the most popular gems, you make your AI assistant 10x more effective. You can find the answer to any bug on StackOverflow in 30 seconds. With shiny new gems, you are the one writing the first StackOverflow question.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The "Standard" Rails Way (Omakase)
&lt;/h2&gt;

&lt;p&gt;Rails is built on the idea of &lt;strong&gt;Convention over Configuration&lt;/strong&gt;. When you stick to the "Boring" defaults, your app stays standard.&lt;/p&gt;

&lt;p&gt;If I hire a freelancer or bring in a partner to help me with a project, they already know how Devise works. They already know how to check a Sidekiq queue. If I have replaced every standard tool with a "shiny" alternative, I have to spend three days teaching them my unique, custom stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Don't Waste Your "Innovation Tokens"
&lt;/h2&gt;

&lt;p&gt;There is a great concept in engineering called &lt;strong&gt;Innovation Tokens&lt;/strong&gt;. You only get a few of them for each project. &lt;/p&gt;

&lt;p&gt;If you spend your tokens on a "revolutionary new way to handle database IDs" and a "bleeding-edge frontend reactive library," you have no tokens left to spend on the &lt;strong&gt;Actual Business Logic&lt;/strong&gt; that makes your app unique.&lt;/p&gt;

&lt;p&gt;I save my innovation for the features that my customers pay for. I don't want to innovate on "how to upload a file" or "how to paginate a list." I want those things to be as boring and invisible as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary: My "Boring" Checklist
&lt;/h2&gt;

&lt;p&gt;Before I add a new gem to my project, I check three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Age:&lt;/strong&gt; Has it been maintained for at least 2 or 3 years?&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Usage:&lt;/strong&gt; Does it have millions of downloads on RubyGems?&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Recent Activity:&lt;/strong&gt; Was there a commit or a release in the last 6 months?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer to any of these is "No," I usually stick to the standard Rails default, even if the new gem looks "fancier." &lt;/p&gt;

&lt;p&gt;Boring gems allow you to focus on shipping products instead of fixing your tools. In the world of indie hacking, the developer who ships the most wins - and boring tech helps you ship.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Why "Good Enough" Design is the Solo Developer's Secret Weapon</title>
      <dc:creator>The One-Man Framework</dc:creator>
      <pubDate>Tue, 19 May 2026 22:06:26 +0000</pubDate>
      <link>https://forem.com/onemanframework/why-good-enough-design-is-the-solo-developers-secret-weapon-2hep</link>
      <guid>https://forem.com/onemanframework/why-good-enough-design-is-the-solo-developers-secret-weapon-2hep</guid>
      <description>&lt;p&gt;I spent years looking at websites like Stripe or Linear and feeling depressed. I would try to replicate their custom animations, their unique shadows, and their perfect color palettes. I would spend three days just trying to design a "Pricing" card in CSS, and by the time I was finished, I was too exhausted to actually write the billing code.&lt;/p&gt;

&lt;p&gt;As a solo developer, your biggest enemy isn't a lack of talent - it's &lt;strong&gt;Perfectionism&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you are a one-man team, you have to accept a hard truth: You do not have time to be a world-class designer. But here is the secret: &lt;strong&gt;You don't need to be.&lt;/strong&gt; You just need "Good Enough" design to build a profitable business. &lt;/p&gt;

&lt;p&gt;Here is how to use "Good Enough" design as your secret weapon to ship faster and make more money.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The 80/20 Rule: Whitespace and Typography
&lt;/h2&gt;

&lt;p&gt;90% of professional design isn't about colors or logos; it’s about &lt;strong&gt;Spacing&lt;/strong&gt; and &lt;strong&gt;Reading&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If you get these two things right, your app will look 80% better instantly. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Typography:&lt;/strong&gt; Pick one clean sans-serif font (like Inter or system-ui) and stick to it. Don't use 4 different font sizes. Pick three: one for headings, one for body text, and one for small captions.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Whitespace:&lt;/strong&gt; If something looks "clunky," you probably didn't give it enough room. Double your padding. Use &lt;code&gt;p-8&lt;/code&gt; instead of &lt;code&gt;p-4&lt;/code&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Result:&lt;/strong&gt; A clean, readable interface that looks "intentional" rather than "accidental."&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Stop Making "Design Decisions"
&lt;/h2&gt;

&lt;p&gt;Every time you ask yourself, &lt;em&gt;"What shade of blue should this button be?"&lt;/em&gt;, you are wasting mental energy. &lt;/p&gt;

&lt;p&gt;"Good Enough" designers don't make decisions; they &lt;strong&gt;steal&lt;/strong&gt; them. I use &lt;strong&gt;Tailwind UI&lt;/strong&gt; or &lt;strong&gt;DaisyUI&lt;/strong&gt; because the design decisions have already been made by professionals.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Don't think about the shadow, the border-radius, or the hex code. --&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- Just use the system. --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-indigo-600 text-white rounded-lg px-4 py-2 shadow-sm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Save
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you follow a system, your app stays consistent. Consistency is what makes an app feel "premium," even if the layout is basic.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Dark Mode is a Luxury, Not a Requirement
&lt;/h2&gt;

&lt;p&gt;I see so many solo devs spending their first week building a Dark Mode toggle. &lt;/p&gt;

&lt;p&gt;Unless you are building a coding tool or a night-time reading app, your users do not care about dark mode on Day 1. They care if your app solves their problem. &lt;/p&gt;

&lt;p&gt;Stick to a high-contrast &lt;strong&gt;Light Mode&lt;/strong&gt;. It is easier to design, easier to debug, and works for everyone. You can add dark mode after you hit $1,000 in monthly revenue. Until then, it is a distraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Components are Your "Stencils"
&lt;/h2&gt;

&lt;p&gt;In the previous articles, we talked about &lt;strong&gt;ViewComponent&lt;/strong&gt; and &lt;strong&gt;Phlex&lt;/strong&gt;. This is where "Good Enough" design really shines.&lt;/p&gt;

&lt;p&gt;You build a "Primary Button" once. You make it look "Good Enough." Then, you never think about buttons again. You use that component for every single action in your app. &lt;/p&gt;

&lt;p&gt;As a solo dev, you want to turn design into a &lt;strong&gt;solved problem&lt;/strong&gt;. You want your views to be a simple assembly line where you just snap pre-made parts together.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Launching is the Best Design Tweak
&lt;/h2&gt;

&lt;p&gt;A "perfect" design that stays in your &lt;code&gt;~/projects&lt;/code&gt; folder is worth zero dollars. An "ugly" design that is live and collecting credit cards is a business.&lt;/p&gt;

&lt;p&gt;Once your app is live, your users will tell you what is actually wrong. Maybe the button is too small to click on mobile. Maybe the text is too light to read. These are the only design tweaks that matter. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Good Enough" design is a weapon because it allows you to reach the feedback stage faster.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The goal of a solo developer is to reach &lt;strong&gt;Product-Market Fit&lt;/strong&gt;, not to win a Design Award. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Use a system&lt;/strong&gt; (Tailwind).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Focus on spacing&lt;/strong&gt; (more whitespace is always better).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Use pre-built components&lt;/strong&gt; (stop reinventing the modal).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Ignore the fancy stuff&lt;/strong&gt; (no custom animations yet).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Spend your time on the &lt;strong&gt;Database&lt;/strong&gt; and the &lt;strong&gt;Marketing&lt;/strong&gt;. Let your design be "Good Enough" so you can finally hit the deploy button.&lt;/p&gt;

</description>
      <category>design</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why Rails 8 is the Only Choice for the Modern Solopreneur</title>
      <dc:creator>The One-Man Framework</dc:creator>
      <pubDate>Mon, 18 May 2026 22:06:26 +0000</pubDate>
      <link>https://forem.com/onemanframework/why-rails-8-is-the-only-choice-for-the-modern-solopreneur-8ai</link>
      <guid>https://forem.com/onemanframework/why-rails-8-is-the-only-choice-for-the-modern-solopreneur-8ai</guid>
      <description>&lt;p&gt;In the world of startups, there is a dangerous myth. People think that to build a "real" application, you need a team of five: a frontend expert, a backend specialist, a database admin, a DevOps engineer, and a designer. &lt;/p&gt;

&lt;p&gt;If you follow this path as a solo developer, you will fail. You will spend all your time trying to glue different technologies together instead of talking to customers.&lt;/p&gt;

&lt;p&gt;In 2026, the goal isn't to write the "fastest" code in terms of CPU cycles. The goal is &lt;strong&gt;Developer Velocity&lt;/strong&gt;. You need a framework that handles the boring stuff so you can focus on the features. &lt;/p&gt;

&lt;p&gt;After trying everything from Next.js to Go, I am convinced that &lt;strong&gt;Ruby on Rails 8&lt;/strong&gt; is the best framework for a one-man team. Here is why.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Death of the "Infrastructure Tax"
&lt;/h2&gt;

&lt;p&gt;For years, even a simple Rails app needed a lot of "extra" stuff to run in production. You needed Redis for background jobs, Redis for caching, and usually a Node.js server to compile your JavaScript.&lt;/p&gt;

&lt;p&gt;Rails 8 has completely removed this "tax." With the &lt;strong&gt;Solid Trilogy&lt;/strong&gt;, your entire stack is now just your app and your database (Postgres or SQLite).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Solid Queue:&lt;/strong&gt; Your background jobs live in your DB. No Redis needed.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Solid Cache:&lt;/strong&gt; Your HTML caching lives in your DB. No Redis needed.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Solid Cable:&lt;/strong&gt; Your WebSockets live in your DB. No Redis needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a solo dev, this is huge. It means your production server is simpler, cheaper, and much easier to debug.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. No-Build Frontend (The Hotwire Revolution)
&lt;/h2&gt;

&lt;p&gt;I used to spend half my day fighting with &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;webpack&lt;/code&gt;, and &lt;code&gt;node_modules&lt;/code&gt;. It was exhausting. &lt;/p&gt;

&lt;p&gt;Rails 8 uses &lt;strong&gt;Importmaps&lt;/strong&gt; and &lt;strong&gt;Hotwire&lt;/strong&gt; by default. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;No Build Step:&lt;/strong&gt; You save a file, refresh the browser, and it’s there. You don't need a heavy compilation process.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Turbo 8 Morphing:&lt;/strong&gt; You get the speed of a React Single Page App (SPA) but you write 100% Ruby code. The browser is now smart enough to update the page without a full reload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can build a fast, reactive dashboard in an afternoon that would take a React developer a week to wire up.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Deployment is Solved (Kamal 2)
&lt;/h2&gt;

&lt;p&gt;Deployment used to be the scariest part for solo developers. You either paid $100/month for a "managed" service like Heroku, or you spent days configuration Nginx and SSL on a raw Linux box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kamal 2&lt;/strong&gt; changed everything. It allows you to deploy a Dockerized Rails app to a $5 Hetzner or DigitalOcean VPS with one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kamal deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It handles the SSL certificates, the zero-downtime switching, and the health checks. You get the power of a private cloud for the price of a sandwich.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The "Editor-in-Chief" Workflow (AI Readiness)
&lt;/h2&gt;

&lt;p&gt;As I’ve written before, we are in the era of &lt;strong&gt;Vibe Coding&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Because Rails is built on &lt;strong&gt;Convention over Configuration&lt;/strong&gt;, it is the perfect partner for AI tools like Cursor or ChatGPT. Because every Rails app follows the same folder structure, the AI rarely makes mistakes. &lt;/p&gt;

&lt;p&gt;If you tell an AI: &lt;em&gt;"Add a billing system with a 'Pro' and 'Basic' plan,"&lt;/em&gt; the AI knows exactly where the models, controllers, and views go. In a "flexible" framework like Express or FastAPI, the AI often gets lost. In Rails, it is a superpower.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary: The Math for the Solo Dev
&lt;/h2&gt;

&lt;p&gt;As a one-man team, you have 40 hours a week.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework A (JS/Microservices):&lt;/strong&gt; 20 hours on plumbing, 10 hours on CSS, 10 hours on features.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rails 8:&lt;/strong&gt; 2 hours on plumbing, 8 hours on CSS, 30 hours on features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The choice is obvious. Rails 8 is the only framework that truly respects your time. It is designed to let one person build an empire.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>startup</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Goodbye Nginx and Redis: Building a Zero-Service Monolith in Rails 8</title>
      <dc:creator>The One-Man Framework</dc:creator>
      <pubDate>Mon, 18 May 2026 16:08:35 +0000</pubDate>
      <link>https://forem.com/onemanframework/goodbye-nginx-and-redis-building-a-zero-service-monolith-in-rails-8-3k8l</link>
      <guid>https://forem.com/onemanframework/goodbye-nginx-and-redis-building-a-zero-service-monolith-in-rails-8-3k8l</guid>
      <description>&lt;h1&gt;
  
  
  The "Zero-Service" Monolith: How to run your entire app on a single server port
&lt;/h1&gt;

&lt;p&gt;For years, I believed that a professional Rails app needed a small army of services to survive in production. You couldn't just run Rails. You needed Nginx to handle SSL and assets, Redis to handle background jobs and caching, and maybe a separate load balancer.&lt;/p&gt;

&lt;p&gt;As a solo developer, managing all these pieces is exhausting. Every new service is another thing that can crash, another version to update, and another port to secure.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Rails 8&lt;/strong&gt;, we are entering the era of the &lt;strong&gt;"Zero-Service" Monolith&lt;/strong&gt;. The goal is simple: your entire application should live inside a single Docker container and communicate with the world through one single port. No Redis, no Nginx, no headaches.&lt;/p&gt;

&lt;p&gt;Here is how to collapse your stack into a single, powerful unit.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 1: The "Solid" Trilogy (Deleting Redis)
&lt;/h2&gt;

&lt;p&gt;In the past, Redis was mandatory for two things: background jobs (Sidekiq) and caching. &lt;/p&gt;

&lt;p&gt;Rails 8 replaces Redis with the "Solid" gems. These tools use your existing database (Postgres, MySQL, or SQLite) to do the work that Redis used to do.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Solid Queue:&lt;/strong&gt; Handles your background jobs.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Solid Cache:&lt;/strong&gt; Handles your HTML fragment caching.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Solid Cable:&lt;/strong&gt; Handles your real-time WebSockets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By switching to these, you can literally uninstall Redis from your server. Your background jobs now have the same "ACID" guarantees as your data, and you have one less service to monitor.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 2: Thruster (Deleting Nginx)
&lt;/h2&gt;

&lt;p&gt;Puma (the Rails web server) is great at running Ruby, but it isn't great at serving images or handling SSL certificates. That is why we always put Nginx in front of it.&lt;/p&gt;

&lt;p&gt;Rails 8 includes a new tool called &lt;strong&gt;Thruster&lt;/strong&gt;. It is a tiny, incredibly fast proxy written in Go that wraps around your Rails app.&lt;/p&gt;

&lt;p&gt;Thruster handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;HTTP/2:&lt;/strong&gt; Speeds up loading for your users.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SSL (HTTPS):&lt;/strong&gt; It manages your Let's Encrypt certificates automatically.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Asset Compression:&lt;/strong&gt; It Gzips your CSS and JS files so they download faster.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because Thruster is bundled into the Rails Docker image, you don't need to install or configure Nginx on your server anymore. You just point your domain to the container, and Thruster handles the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 3: The Single-Port Configuration
&lt;/h2&gt;

&lt;p&gt;When you use &lt;strong&gt;Kamal 2&lt;/strong&gt; to deploy your Rails 8 app, it packages everything into one container. &lt;/p&gt;

&lt;p&gt;In your &lt;code&gt;deploy.yml&lt;/code&gt;, you no longer have to define "Sidecars" for Nginx or link to a Redis container. You just define your web server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# config/deploy.yml&lt;/span&gt;
&lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app&lt;/span&gt;
&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;yourname/my-app&lt;/span&gt;

&lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;web&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;123.45.67.89&lt;/span&gt;

&lt;span class="na"&gt;proxy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;ssl&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;myapp.com&lt;/span&gt;
  &lt;span class="c1"&gt;# Everything enters through port 80/443 and goes straight &lt;/span&gt;
  &lt;span class="c1"&gt;# to Thruster inside the container.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When this container starts up, it boots Thruster, which boots Puma, which starts the background job workers. Every part of your app is now living in the same memory space, on the same timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 4: SQLite for the Win (Optional)
&lt;/h2&gt;

&lt;p&gt;If you want to go for the "Ultimate Zero-Service" setup for a micro-SaaS or a side project, you can even skip the external Database server by using &lt;strong&gt;SQLite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With the recent improvements in Rails 8, SQLite is production-ready for many use cases. If you use SQLite, your "database" is just a file inside your container. Combined with &lt;strong&gt;Litestream&lt;/strong&gt; for backups, your entire "Cloud Empire" is now literally just one single Docker process running on a $5 VPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is a game changer for you
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Mental Bandwidth:&lt;/strong&gt; You only have to think about one thing. Is the container running? If yes, the whole app is working.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Cheaper Hosting:&lt;/strong&gt; You don't need a server with 16GB of RAM to run 5 different services. A small, cheap server is plenty.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Faster Onboarding:&lt;/strong&gt; When you hire a freelancer or use an AI to help you, they don't have to spend two hours setting up a complex local environment. They just run the app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The "Zero-Service" Monolith isn't about being lazy; it's about being &lt;strong&gt;efficient&lt;/strong&gt;. As a solo developer, every minute you spend configuring a Redis config file is a minute you aren't building features for your customers.&lt;/p&gt;

&lt;p&gt;Rails 8 and Kamal 2 have made it possible to own your infrastructure without being a DevOps expert. One container, one port, one successful business.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>devops</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
