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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.