Build Smarter, Not Harder, and Maybe Even Have Fun

A Case Study on How I Learned to Stop Hating and Love Software Development Again
Build Smarter, Not Harder, and Maybe Even Have Fun

I’ve spent a lot of time these past few months rebuilding our custom CRM platform, which we use to manage the daily operations for FRESH markets.

Originally built in 2016, the platform received its last major updates in 2021.

As the business grew to support more vendors and events each year, it became clear to both customers and our team that the platform needed to evolve to handle the increasing complexity of our operations.

I decided to move to a modern development stack to take advantage of new features, ultimately rebuilding the platform from scratch using Ruby on Rails 8.0.

While it was still in pre-release when I began this major refactor, the codebase seemed battle-tested, so I took the leap.

So You’re Seriously Going To Rebuild Your Entire Web Application From The Ground Up?

Normally, rebuilding from scratch can be a death sentence for codebases, but I chose to leverage our existing database and models and phase in the new application.

I moved the old app to an internal subdomain where it continues to support some daily operations for the time being.

As part of this phased approach, I first tackled the front-end design and development. One of these “new” features I wanted to leverage was integrating a proper front-end framework.

I’ll be honest—I hate front-end code and wanted to leverage someone else’s time and expertise here. After evaluating several Tailwind component libraries, I ended up purchasing a license for Flowbite.

It was more or less feature-complete, the development team seemed very active, and, at the end of the day, I just really liked the way it looked.

Integrating Flowbite into a Rails 8.0 app posed some challenges. Using Rails’ ImportMaps, which streamline JavaScript dependency management without relying on Node.js or Webpack, allowed for a quick setup with minimal configuration.

However, getting it to play nice with Hotwire and Stimulus required some additional voodoo. Once it was up and running, it shaved hours off of my development time and spared me the monotony of fine-tuning CSS styles and layouts.

FRESH Markets

Vacation, Thanksgiving, and a Deadline — Why Not?

This first phase took about 3–4 weeks, even though I spent two of those weeks in Costa Rica with the family and wasn’t at my computer much.

Once I was back home, I worked mostly at night since my schedule didn’t allow me to dedicate large blocks of time to the project.

We launched the new website on Thanksgiving Eve, and (patting myself on the back) the deployment went smoothly.

The only negative feedback I received was from a visitor who couldn’t access some old functionality using her AOL account.

After coaching her on how to use our new Hotwire-driven market search and discovery tool, she admitted it might be time to start using the new laptop her daughter had bought for her.

Vendor Dashboard

Fixing What Wasn’t Broken (Because It Bothered Me Anyway)

Feeling confident, I dove straight into the next phase: refactoring our vendor application process and dashboard.

Previously cobbled together using Typeform and some clever callbacks to process payments and integrate new vendors into our CRM, this system was overdue for an overhaul.

Still, it processed over 2,500 applications with payments last year without issue, so I had to ensure any updates wouldn’t disrupt this core business function.

I recreated our Typeform application natively within the Rails 8 app, integrating it into our user registration and sign-up flow.

I used the new Rails 8 authentication library (goodbye, Devise) and even introduced a magic link sign-in feature. Many of our customers only use the site occasionally when booking dates, and password management has been a traditional pain point.

The new application process feeds into a Stripe payments integration, which handles collecting the annual application fee. Using callbacks, the system updates application statuses, sends customer notifications, and sets expiration dates to align with our business needs.

For now, the approval process and curation are still managed in our legacy app until I refactor the admin/market manager dashboard.

After submitting their application, vendors can use their dashboard to view, search, and pay invoices for markets, manage bookings, and access other essential features.

While I focused on existing functionality, I plan to expand the platform to improve ease of use and efficiency for both customers and our back-office team.

This second phase launched on January 3, 2025, alongside the release of our first set of 2025 pop-up markets. While the rollout went well overall during internal and limited testing, a few edge-case issues emerged once it went live.

I suppose this is what happens when you’re flying the plane while building it—there’s always some turbulence.

Still, we successfully processed over 200 new applications and payments during the first weekend after launch.

Once the dust settles, I plan to complete the refactor by migrating the admin/market manager dashboard to the new platform and deprecating the legacy app.

Making Development Fun Again (Yes, Really)

I’ve been developing web applications for over 20 years and have worked with Ruby on Rails since version 2.3.

I’ve seen monolithic frameworks save the day, get dismissed as outdated, and then reemerge as the preferred way to build applications.

Avoiding the “framework of the week” mentality, I’ve focused on what feels natural: developing applications in a structured, logical way.

Rails 8 with Hotwire, Stimulus, and ImportMaps Is A Game Changer

Rails has always been my favorite MVC framework for web applications, but building interactive features was messy during the rise of JavaScript frameworks.

Hotwire and Stimulus simplify this process, making everything “just work.” ImportMaps are the icing on the cake—they eliminate the complexity of managing JavaScript dependencies.

LLMs Are Your New Junior Developer

Part of the reason I’ve been able to move fast and not get bored is thanks to ChatGPT. While it’s not perfect at debugging edge cases, it’s exceptionally good at repetitive tasks and tackling well-documented ones.

My workflow often involves developing a feature, handing it to ChatGPT with a Flowbite component for styling and layout, and then tweaking the results. This process is almost meditative for me.

It’s also great for quickly building a robust test suite—after rolling out my business logic, I hand it off to ChatGPT to generate tests and fixtures.

Lately, I’ve noticed a lot of negativity around LLMs and their ability to code (or do anything useful), and honestly, it feels a bit like a carpenter blaming their tools for poor craftsmanship.

Building Web Applications Is Fun Again

Over the past few years, I’d grown extremely bored of the process—front-end design, authentication, payment solutions, APIs, CRUD functionality, etc., are rarely challenging but often tedious.

Mix in some “passionate” client or customer personalities, and it’s rarely an enjoyable process. Using Rails 8 and ChatGPT, however, has brought joy back to coding.

Building A Company Is Getting Easier

I’m certainly not the best developer or marketer, but one of my secret weapons has been my ability to leverage both skills to turn ideas into reality.

Hiring designers, developers, and a good marketing team is expensive, and not every idea can afford that kind of investment out of the gate.

Pairing modern frameworks, tools, and LLMs lowers the cost of entry and allows small teams or single founders with an idea and some technical sense to move exponentially faster than even a few years ago.

Junior Developer

Build Something That Works for (And Not Against) You

At a time when many of my software developer friends are struggling to find work, I hope to offer a bit of optimism.

Much like the rise of the creator and gig economies, where platforms like Etsy, YouTube, Airbnb, and Uber empowered individuals to work for themselves, I believe we’re entering a moment where starting small, impactful companies is not just possible but practical.

Today, tools like LLMs, modern development frameworks, and specialized agents are advancing rapidly, making the downside risks lower than ever. I think this will spark a surge in new companies—smaller in size but capable of having a bigger impact.

We might even see more lifestyle businesses focusing on personal fulfillment while addressing hyperlocal needs and bettering their communities rather than chasing relentless growth or a next round of funding.

These tools aren’t just for software developers or tech professionals; they’re unlocking opportunities for small teams and individuals across all industries.

It’s a shift that feels more grounded and aligned with the priorities of individuals and their communities.

For anyone willing to put in the effort, it’s never been easier to create something meaningful and sustainable—something that reflects your values and gives you greater control over your future.

back to writing

Schedule a FREE Call

Interested in seeing how I can help you with your ?

Subscribe to My Newsletter

Sign up for free and get actionable insights surrounding entrepreneurship, programming, real-estate investing, mindset, and more delivered straight to your inbox.