
Departure
Reagan Graeme from St. Mark's had the idea: a publication where high schoolers analyze political and social issues from their own vantage instead of borrowing an adult one. He had the editorial instinct and the network of writers; I had the React. Most things I'd shipped to that point lived only on my own machine — this was the first time the codebase had to carry someone else's editorial vision. Reagan took Editor-in-Chief, I took CTO, and React on DreamHost was the smallest stack that would get articles online by the end of the week.
Approach
- React
- DreamHost
- Markdown
- Metadata
Reagan owned editorial; I owned the pipeline. The site had to render whatever the writers turned in without me touching the codebase for every new piece.
Field log
Reagan pitched it: a youth political publication, no adult layer in between, written by high schoolers for whoever wanted to read them. He had the editors and the writers lined up; I had React. We split the org chart at the top — Editor-in-Chief and CTO — and started before either of us thought too hard about it.
Platform for young people to publish on political and social issues — fresh-vantage analysis, civic engagement as the through-line. By the time we ran the numbers it was over twenty-five articles and ten or so individual writers, and both kept climbing.
React for the front end, DreamHost for the host. Both because they were the smallest things I already knew how to deploy. Pretty standard, pretty straightforward — that was the appeal.

What I already knew how to deploy. Reagan as Editor-in-Chief out of St. Mark's; me as CTO. Managing Editors above Section Editors above Writers, and the writers stretched across multiple Dallas-area private schools and one in New York. The submission pipeline was Reagan's hand — pieces came in, approvals went out.
Each article became a folder. meta.json carried title, subtitle, author, date, tags, and image refs; content.md carried the prose with inline image-N references; an images directory sat alongside. The shape of meta.json became the shape of the site — what the homepage could sort by, what the article page could render.
Project tree was the React standard — pages/ for Home, Article, About; components/ for the reusable UI; public/articles/ for the content folders. One helper called loadArticles did the work for everything: walk the local slugs in parallel, pull each meta.json, hydrate it with the markdown body, return the array. Home, search, filter, and the article page all called the same function.
Spun up an Instagram for distribution. Settled around forty followers, which was more than the writer count alone could explain — actual outside readers had picked it up. The plan after that was direct submission with an editor pipeline behind it; I never built it.

Distribution layer.
From the gallery

What I came back with
@youthpoliticaltimes
Lesson from the terrain
Most things I'd built before this lived in a folder only I opened — code as a private object. YPT was the first time I shipped a system whose job was to carry other people's work, and the test stopped being whether I liked it and started being whether the writers kept showing up. The other half of the lesson was that a content schema is a kind of information architecture: meta.json was four or five fields long, and those fields decided what the homepage could sort by, what search could match, what the article page could render. The site was the schema.