Code Review and Project Flow: Learning Modern Hotwire from basecamp/fizzy


Code Review and Project Flow: Learning Modern Hotwire from basecamp/fizzy

basecamp/fizzy

2025-12-06

Here is an explanation of what Fizzy is, how it's useful from a software engineering perspective, and how you might go about deploying it.

Fizzy is a fresh, fun, and modern take on a Kanban board. Kanban is a visual system for managing work as it moves through a process. Basecamp's goal with Fizzy was to create a Kanban tool that is simple and effective, without the accumulated complexity found in many other project management tools—hence the tagline, "Kanban as it should be. Not as it has been."

It is a fully functional Ruby on Rails application, making its source code a fantastic resource for the Ruby/Rails community.

For a software engineer, Fizzy offers value in two primary areas
project management and learning modern Rails development.

Fizzy's minimalist approach can significantly streamline your team's workflow

Focus on the Core
Fizzy emphasizes the core Kanban principle of limiting work in progress (WIP) by making it straightforward to move "cards" (issues/ideas) between simple, customizable columns (like To Do, In Progress, Done).

Reduced Overhead
Since it avoids many complex features found in larger tools (extensive integrations, deep reporting, etc.), it reduces the time spent managing the tool itself. This lets the team focus on writing code and shipping features.

Self-Hosting Control
Because the source code is open, you have full control over your data and infrastructure. You can deploy it on your own hardware, which is a major benefit for teams with strict data privacy or security requirements.

The most significant benefit for a Ruby on Rails developer is the ability to study the source code itself.

Modern Rails Patterns
As a product built by the creators of Ruby on Rails (37signals), Fizzy's codebase is an example of how they build modern, high-quality Rails applications. You can learn about best practices for

Hotwire (Turbo and Stimulus)
See how to build a highly interactive, fast, and modern front-end using the Hotwire approach, which minimizes the need for heavy JavaScript frameworks.

Application Architecture
Observe how a production-grade application is structured, including model design, controller logic, and view rendering.

Code Philosophy
The codebase reflects the philosophy of "getting rid of anemic code," keeping transactions short, and favoring simplicity.

Customization and Extension
You can freely fork the repository to add custom features specific to your engineering team's unique needs, something you can't easily do with closed-source SaaS tools.

Since Fizzy is a Rails application, the recommended deployment tool by Basecamp is Kamal, a simple, self-hosted deployment tool for Rails apps that uses Docker.

Note
The setup process involves configuring a server and setting environment variables. This example focuses on the key steps.

A server (e.g., a VPS) that you can access via SSH.

Docker installed on your server.

Kamal installed on your local machine.

A fork of the basecamp/fizzy repository.

Fizzy comes with a starter deployment file, typically config/deploy.yml. You'll need to modify it to point to your server.

Example
config/deploy.yml Snippet

service: fizzy
image: your-docker-hub-user/fizzy # You'll need to build and push your image
servers:
  web:
    - ssh/[email protected] # <-- IMPORTANT: Set your server hostname here
ssh:
  user: root # Or your specific SSH user
  # ... other SSH config ...

Fizzy requires environment variables, especially secrets (like SECRET_KEY_BASE). You should set these up in a file like .kamal/secrets on your local machine and make sure this file is NOT committed to Git.

Example
.kamal/secrets Snippet

SECRET_KEY_BASE="a_very_long_and_random_string_here"
MAILER_FROM_ADDRESS="[email protected]"
# ... other secrets like database credentials (if not using default SQLite)

With your configurations set, you use Kamal's commands to deploy the application.

Setup
This command builds the initial Docker image, pushes it (you need to handle this part manually or integrate it into a CI/CD pipeline), and sets up the server's infrastructure (like a proxy for SSL/load balancing).

kamal setup

Deploy
For subsequent updates, this command pulls the new image and swaps the running containers with zero downtime.

kamal deploy

If you're interested in the code and want to run the tests locally, it's a standard Rails setup

# Run unit tests
bin/rails test

# Run the full CI test suite (often includes integration/system tests)
bin/ci

Fizzy offers a great opportunity to get hands-on experience with a beautifully crafted, modern Rails application, whether you use it as a simple project management tool or as a deep learning resource.


basecamp/fizzy




OpenProject: A Software Engineer's Guide to Project Management

OpenProject offers a wide range of features that are particularly beneficial for software development teamsAgile and Scrum Methodologies OpenProject has dedicated features for agile project management


Bridging Human Intent and AI Execution with Terminal-Based Kanban Boards

Let’s break down vibe-kanban from a developer's perspective.At its core, vibe-kanban is a terminal-based Kanban board designed specifically to bridge the gap between human intent and AI agent execution


The Developer's Guide to Ruby: Architecture, Syntax, and Implementation

Ruby was designed by Yukihiro "Matz" Matsumoto with a focus on developer happiness and productivity. For an engineer, this translates to code that is highly readable


Running Your Own Cloud: A Software Engineer's Guide to Ubicloud

Ubicloud provides significant advantages for software engineers, especially those concerned with cost, control, and data privacy


Motia: The All-in-One Solution for APIs, Jobs, and AI

Let's dive into MotiaDev/motia, a very interesting backend framework. It's designed to bring a lot of common backend concerns under one roof


From Code to Cash: Understanding maybe-finance/maybe for Engineers

maybe-finance/maybe is an open-source personal finance application built with Ruby. Think of it as a self-hosted alternative to popular finance tracking tools