Coupled content to presentation, then deliberately uncoupled it
Black Wall Street Journey · Shipped (both versions) 2021–2026
- Timed chapter
Slides carry duration.
Playback accumulates timing.
- ContainsSlides
Presentation formats
- Presents the retained materialResearch + media
Retained material, reassigned
for the new reading structure.
- Role
- Platform Architect / Sole Engineer
- Timeframe
- V1 for the 2021 exhibition. V2 for the 2022 site engagement.
Built V1's content model around presentation because the installation had to run unattended on a gallery floor, then rebuilt the model to separate research from presentation when the same material had to become a public website
About the project
Black Wall Street Journey is Rick Lowe's public-history initiative on Black wealth-building in Chicago. I was the sole software engineer, from the first system in 2021 through the public site that followed. Two versions: a timed installation across three Chicago venues, and a public website built from the same research.
- Timeframe
- Software involvement: 2021–2026; primary commissioned engineering: 2021–2022
Overview
From scheduled playback to chosen reading
I built Black Wall Street Journey's first content model for an installation that had to play unattended across three exhibition venues. Its sequence and pacing belonged to the work. A slide needed to carry enough information for the application to know what to show and when to advance.
When the material became part of a public website, I needed a different organizing structure. Someone arriving at a page could choose a subject and spend as long as they wanted reading it. I rebuilt the model around that use while retaining the research and media from the exhibition.
Putting pacing in the CMS
The installation followed a timeline of chapters and slides. Each slide had its own duration, and the playback code accumulated those durations to coordinate progression. The persistent ticker ran across the top of the presentation. Map-based formats could use geographic data alongside the stories.
I kept duration with the slide because pacing was something collaborators needed to author. How long a photograph remained visible affected the experience of the exhibition. Putting that value in application configuration would have made a routine editorial adjustment dependent on a code change.
This tied the model closely to its presentation. That was useful for the installation: the player consumed a structure built for a timed sequence, and collaborators could work on the content and its pacing in the same system. It also meant I would need to reconsider the structure if the experience changed.
Solution
Rebuilding around themes and pages
For the public website, I redesigned the ERD and API in Strapi v4 on PostgreSQL. Chapters grouped material by theme, and their content used components for text, quotations, statistics, images, and video. General pages had their own blocks, while global content held shared site elements.
The thematic chapters did not need a duration. Their content could be read together and revisited independently of the installation's sequence. I retained presentation choices where they were useful, including component types and chapter color; the new model was not completely independent of the website.
- Timed chapter
Slides carry duration.
Playback accumulates timing.
- ContainsSlides
Presentation formats
- Presents the retained materialResearch + media
Retained material, reassigned
for the new reading structure.
Reassigning the material
The database change required technical work, but it did not decide where an old slide belonged in the new model. A script could move records and preserve their fields. It could not make the editorial choice about which stories should be read together without an authored mapping.
I reviewed the material against the running installation and reassigned it into thematic chapters. That was more work than preserving the old hierarchy, but it let the organization follow the website's purpose. I describe that process in Rebuilding without interrupting the exhibition.
Extending V1 was a reasonable way to preserve the existing presentation. Moving from its MongoDB stack to the chosen PostgreSQL stack also required conversion. Neither constraint made a redesign automatic; I chose it because retaining the timed hierarchy would leave the website organized around a playback job it no longer needed to perform.
Reflection
Keeping the research while changing its structure
I would keep the timing in the original model. The installation needed it, and giving collaborators access to pacing was part of making that system usable. Designing it around a hypothetical future website would have complicated the immediate work without knowing what the later brief would require.
The cost appeared when the brief changed. I had to rebuild the model and reassign the material, and the result still contained compromises. A reusable public-site map block was started but did not reach a CMS-backed implementation before the contract ended. The separate prototype used demo pins; it should not be presented as a shipped feature.
Both versions shipped, but that does not establish that the redesign made every future use easier. It gave the website a structure suited to thematic reading. The relationship between content and presentation changed because the way people encountered the work had changed.


