Open Source City CMS:
Gov data content as an API
What’s Inside
American Folklore
0
What’s a Hessian?
The Texas Version
Why am I talking about a headless horseman?
Headless CMS
for alpha.austin.gov
How did we get here?
1
open-austin.org
Headless CMS &
Gov data as an API
2
Decoupled or Headless CMS
Microservices
Independent applications that do only one thing and do it well — with the tool most suited to the use case and technical context.
Too big to fail
Putting the user first
3
“The People are at the top of the org chart.”
Research
“I don’t actually read everything. �I just go through and I see if there’s an easy answer.”
- Robert
Residents find current content too lengthy and complex, and content is not accessible to all.
AustinTexas.gov Pages Reading Level
Maximum reading level recommended
Austintexas.gov has 11,000 pages and 10,000 documents such as PDFs.
Content, not technology, is the hard part
Build a Platform People Want to Use
Wagtail CMS
4
Building on an open source platform
Customizable
Expandable
Portable
Supported
Conversations with our peers
Digital Services Playbook
“The American people expect to interact with government through digital channels such as websites, email, and mobile applications. By building digital services that meet their needs, we can make the delivery of our policy and programs more effective.”
The Zen of Wagtail
Wagtail ecosystem
Django/Python ecosystem
Recruiting the next gen of civic technologists
Recruiting the next gen of civic technologists
GraphQL API
5
Playing by the Rules
City of Austin Digital Service Values
Value #3: Cultivate Digital Community�“Open solutions to comments and code from interested citizens. Encourage collaborative research, design, and development through active community engagement.”��Value #6: Support agile procurement strategies that avoid vendor lock-in�“Default to open source.”
The USDS Digital Service Playbook
Play #8: Use modern technology�“...digital services teams should consider using open source, cloud-based, and commodity solutions across the technology stack…”
Play #13: Default to open�“When we collaborate in the open and publish our data publicly, we can improve Government together.”
Cultivate Digital Community
No Lock-In, Default to Open
Types of APIs
_SOAP_
_REST_
_GraphQL_
Can I get a metaphor?
Types of APIs
_SOAP_
_REST_
_GraphQL_
On the Shoulders of Giants
floods.austintexas.io
Static Site Generators
6
Static Site Generator
vs.
Dynamic/Server Rendered
Technology trends and content management
Benefits of a Decoupled CMS
React & Reusable Components
7
Resident-facing site & the React ecosystem
Separation of Concerns
20th Century “The Olden Days”
21st Century “The Component Age”
Javascript
HTML
CSS
Header
Posts
Details
Footer
React Static vs Server Rendered React
Storybook
Devops & Containers
8
Playing by the Rules
The USDS Digital Service Playbook
Play #9: Deploy in a flexible hosting environment�“Our services should be deployed on flexible infrastructure, where resources can be provisioned in real-time to meet spikes in traffic and user demand.”
Play #10: Automate testing & deployments�“Perform deployments automatically with deployment scripts, continuous delivery services, or similar techniques.”
City of Austin Digital Service Values
Value #2: Teams + Skills�“Identify opportunities for city-wide standards.”��Value #3: Cultivate Digital Community�“Empower employees to discover and cultivate new skillsets that align with organizational goals.”
Teams + Skills
Cultivate Digital Community
What is a Container?
Drawing an Owl
_Local_
_Test_
_Deploy_
Drawing an Owl...with Containers
_Local_
_Test_
_Deploy_
Wagtail CMS Dockerfile
FROM python:3.6.4-slim-stretch
COPY /deploy/requirements.txt /deploy/requirements.txt
RUN pip install --no-cache-dir -r /deploy/requirements.txt
ENV PORT ${PORT:-80}
EXPOSE $PORT
RUN mkdir /app
WORKDIR /app
COPY "$PWD/docker-entrypoint.sh" /app/docker-entrypoint.sh
COPY "$PWD/joplin" /app/joplin
ENTRYPOINT ["./docker-entrypoint.sh"]
CMD ["gunicorn", "joplin.wsgi:application", "--pythonpath", "/app/joplin"]
We use containers for deployment
because they help us achieve our goals of being flexible and automated
Working in the Open
9
Test
Build living digital services that grow, adapt, and improve with user needs.
We need your help
10
Changing up Local Government
Human-Centered Design + Agile Software Development
Thanks!