Blog

Notes on community software infrastructure

Essays on community software infrastructure, data commons, and the practical work of building digital tools we own together.

Three short pieces from the Chattanooga.Digital archive on what it takes to build software like infrastructure — open, owned in common, and useful regardless of who happens to maintain it this year.

The Drupal "Available updates" report — how you see and apply security updates as part of ongoing maintenance.

How We Built It, Part 9: Maintain It

The final post in the build series: keeping the site healthy for the long haul. Security updates, off-site backups that restore themselves, login hardening with 2FA, and the content-vs-structure discipline that makes the whole thing forkable.

The live production site at www.chattanooga.digital, deployed via Portainer and Docker Swarm.

How We Built It, Part 8: Deploy It

Part 8 of the build series: taking the site live. The three realistic Drupal hosting models, then exactly how we deploy Chattanooga.Digital with Portainer and Docker Swarm — including the fix-settings service that patches each deploy and the preview-hostname cutover from staging to production.

The Feeds admin — two active calendar feeds (Cherry St Tavern, Chattanooga Drupal Users Group) that hourly cron re-imports.

How We Built It, Part 7: Cron and Automation

Part 7 of the build series: the unattended jobs that keep the site alive. How a dedicated cron container runs Drupal cron every hour to roll the calendar forward and re-import feeds, and a weekly Sunday job that backs the whole site up to a GitHub Release.

The membership webform — the single "How would you like to connect?" intent question that adapts the rest of the form.

How We Built It, Part 6: The Forms

Part 6 of the build series: how Chattanooga.Digital collects form submissions with Drupal Webform — a conditional membership form, an 80-field strategic-planning tool with custom NAICS and UNSPSC autocompletes, and spam protection from the honeypot module.

The /calendar page — upcoming events with source filters, a month/week/Agenda toolbar, and a Download .ics button.

How We Built It, Part 5: The Calendar

Part 5 of the build series: the community calendar end to end — a real event content type with recurring dates, importing outside calendars over iCal, rendering a month grid, and letting anyone subscribe to it.

The Event content type\x27s field list in the Drupal admin — When (Smart date, unlimited), Place, Source, External URL, Import UID.

How We Built It, Part 4: The Data Model

The pedagogy episode: Drupal's data model — entities, bundles, typed fields, and Views — taught through the real Event content type that powers our calendar. This is why we chose Drupal over WordPress, made concrete.

The homepage assembled from reusable SDC components — navbar, hero, and section blocks.

How We Built It, Part 3: Building Components

Part 3 of the build series: how the custom pieces of the homepage are built as Drupal Single-Directory Components — the night-sky hero, the giant stat billboard, the hand-drawn Chattanooga icon set, and the mountain-ridgeline footer. One folder, three files each.

The Services page rendered in the Gig City brand — fiber-blue, the serif display headline — after the theme recipe.

How We Built It, Part 2: Recipes 101 and Branding

Part 2 of the build series: what a Drupal Recipe actually is, how the byte then chattanooga_digital recipes layer to build the site, and how three CSS files turn the stock dark theme into the Gig City brand.

The Chattanooga.Digital site running locally at localhost:8081 after the Docker install.

How We Built It, Part 1: Install It in Docker

Part 1 of the build series: get the entire Chattanooga.Digital site running on your own machine with Docker. Clone, configure one env file, run two make commands, and open it at localhost:8081.

The Chattanooga.Digital homepage — the Gig City "Take control of your tech. Go open!" hero, the site this series builds.

How We Built It, Part 0: Why This Stack

The first post in a series on how Chattanooga.Digital was built. Why a content management system instead of a framework, why Drupal instead of WordPress, and why we build the whole thing from Docker and Drupal Recipes rather than clicking around an admin screen.

The Chattanooga.Digital homepage — the Gig City "Take control of your tech. Go open!" hero, the site this series builds.

How We Built It, Preface: A Token Is an Identity

A short setup guide, republished from ScriptHammer: how to let your AI coding assistant open issues and commit as YOU, with proper credit — the prerequisite for beta-testing this tutorial series with your own AI.

The Chattanooga.Digital homepage — the Gig City "Take control of your tech. Go open!" hero, the site this series builds.

How We Built It, Preface: Opening a Repo

Where your code lives: a beginner-friendly guide to creating a repository — on GitHub, on other hosts, or on your own server (Gitea, Forgejo, and the own-your-data angle). The first step before you can follow along, fork, or contribute.

A photo of a computer screen showing HTML code with a variety of color formatting.

Streaming Platforms as Software Infrastructure

Audio streaming services are a great example of software infrastructure. Many people take it as given that they must pay Apple Music, Spotify, and similar tech companies to access this content and accept that the creators don’t get squat. It’s the digital version of “we don’t pay but it’s great exposure!” There is another way.

A man sitting on the ground working on a laptop with others around him doing the same.

Data Commons

Data commons are means of aggregating, managing, and sharing data in an open, secure manner to benefit all involved. Learn more from these online resources.

RSS Feed