Modeled research, media, timing, and geography as distinct content types
Black Wall Street Journey · shipped 2021–2026
- One generic record → Renderer interprets combinations: Interpret the type and optional fields
- Role
- Platform Architect / Sole Engineer
- Timeframe
- V1, built for the 2021 exhibition.
I used defined slide component types and explicit timing and geographic fields within Strapi composition so the editor and player could work with known formats.
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
Different material needed different fields
Black Wall Street Journey brought together historical writing, archival images, slide timing, and geographic material. I needed to turn those contributions into an installation that could play reliably while still giving collaborators recognizable places to edit them.
I modeled the differences that affected authoring and playback explicitly. A story with an image and map needed different fields from a biography with a quotation. Duration belonged to the slide that the player would advance. Geographic information had to remain usable by the map rather than becoming an undifferentiated attachment.
Choosing the fields inside the composition
The V1 slide schema used a Strapi dynamic zone containing a defined set of components. Those included a biography with a quotation and image, a story with an image and map, a fullscreen map, and video. The dynamic zone provided composition; the individual component schemas described the available material.
That distinction matters because a dynamic zone can contain structured types. I did not reject Strapi's composition mechanism. I used it with specific fields instead of asking one generic record to accommodate every format through optional values and a type label.
A generic record would have been quicker to extend while the material was changing. It would also have left more combinations for the editor and application to interpret. With an exhibition opening to work toward, I wanted the supported formats to be visible in the model early.
Solution
Giving each format its own structure
The biography component had fields for its title, biography, quotation, and image. The story-and-map component had text and an image alongside latitude, longitude, and map style. The fullscreen map format could contain repeatable locations. The slide record held duration separately from those presentation components.
Those fields served different jobs. The duration contributed to playback timing. Coordinates and map configuration determined where and how geographic material appeared. Text and media supplied the story being presented. The application still needed rendering and playback logic, but that logic received a known format with named fields.
- One generic record → Renderer interprets combinations: Interpret the type and optional fields
Keeping the model's limits visible
The research and archival material came from collaborators. I was responsible for its technical structure, not its scholarship or visual authorship. Source and attribution needed to remain available with the material, but the preserved V1 schemas do not support a claim that every contribution had a dedicated provenance record. Some of that information remained in the authored content.
The geographic material also carried obligations beyond its shape in the API. Keeping coordinates or GeoJSON usable by a map did not resolve redistribution permission. That remains a separate question for any public demonstration containing the supplied data.
When I rebuilt the public site, I used another set of components for its reading experience. It retained structured text and media while dropping the chapter's playback duration. I did not try to make every installation format survive unchanged; the unfinished map block is one limit of that adaptation.
Reflection
What the model made explicit
The benefit of the typed formats was being able to describe what the player and editor expected in the same schema. That did not remove conditional rendering, guarantee valid research, or make the model fully normalized. It made the supported combinations concrete enough to build against.
It also gave me more to maintain. A new kind of contribution could require a schema change and corresponding frontend work. Editors had to learn which format to choose, and a format designed too narrowly could make otherwise useful material awkward to enter.
For this exhibition, I accepted that cost to make the known forms of material explicit. The preserved schemas show the structure I shipped. They do not establish how easily every collaborator learned it or whether a more flexible model would have performed worse in use.