BEHIND SEATTLEWATERFRONT.ORG
A website that doesn't have to own the information it publishes.
SeattleWaterfront.org is being built around a different relationship
between information and websites. Restaurants, parking, activities,
public art and events can exist as structured entities that are
maintained independently of the pages where visitors encounter them.
GW Framework connects that information to Waterfront-specific
applications and presentation, while contribution and editorial
workflows provide ways to maintain the information without rebuilding pages.
Canonical data
GW Framework
Parking Finder
Public contribution
Editorial workflow
Shared event infrastructure
THE IMPORTANT DISTINCTION
The interesting part isn't displaying the data.
It's separating the data, workflow and presentation.
Almost every modern website displays data. The architectural question
is whether the information belongs to a particular page, or whether
the page is simply one way of presenting information that exists independently.
PAGE-CENTERED
The page owns the information
Restaurant page
└── restaurant information
Parking page
└── parking information
Things to Do page
└── activity information
Calendar
└── event information
Content and presentation are closely coupled.
Reusing information usually means copying, synchronizing
or rebuilding it somewhere else.
GW FRAMEWORK
The information exists independently
Restaurants ─┐
Activities ──┤
Public Art ──┤
Parking ──┼── GW Framework
Events ──┤ ↓
Locations ──┤ presentation
Organizations─┘ applications
The data can be maintained separately from the interface
and then transformed into the experience needed by the site.
THREE SEPARATE CONCERNS
Data. Workflow. Presentation.
Treating these as separate layers creates more flexibility than
treating the WordPress page as the fundamental unit of information.
01
Data
Canonical records describe the actual entities: a restaurant,
artwork, activity, parking facility or destination.
{
"id": "facility-example",
"type": "parking",
"name": "...",
"entrance": "...",
"hours": "...",
"rates": "...",
"clearance": "...",
"location": {...}
}
→
02
Workflow
Information can be submitted, edited, reviewed and approved
without making the public-facing page the editing environment.
submit
↓
normalize
↓
review
↓
approve
↓
canonical record
→
03
Presentation
GW Framework turns approved information into interfaces
designed around what Waterfront visitors need to do.
listing cards
directories
finders
maps
event calendars
edit controls
future interfaces
EXAMPLE: PARKING FINDER
A useful application starts by modeling the problem correctly.
Parking is a good example because the information is more
complicated than a list of garages.
A parking facility has entrances, hours, rates, clearance,
options and geographic information. A Waterfront destination
has a different identity, location and relationship to parking.
GW Data models those as different kinds of records.
GW Framework can then use the relationships between them to
build a Parking Finder for visitors.
The important work happens before the card is displayed:
the real-world problem has been converted into entities,
fields and relationships that software can use.
PARKING FACILITY
Bell Street Pier Garage
├── primary entrance
├── additional entrances
├── entrance notes
├── hours
├── rates
├── clearance
├── parking options
└── coordinates
PARKING DESTINATION
Waterfront destination
├── location
├── parking zone
└── facility relationships
↓
GW FRAMEWORK
↓
PARKING FINDER
DISTRIBUTED MAINTENANCE
The people who know the information can help maintain it.
A destination website has a basic maintenance problem:
businesses and organizations often know when their own information
has changed before the website administrator does.
01
Encounter
A visitor, business or organization sees an existing listing.
02
Contribute
New information or a correction can be submitted through
a purpose-built form.
03
Review
The proposed change is reviewed rather than being published
directly to the live dataset.
04
Publish
Approved information becomes part of the canonical record
used by the public interface.
ROLE-AWARE INTERFACES
One record can have different editing experiences.
The public does not need the same interface as a professional editor.
Public contributors can receive a simple way to add or correct
information without being given access to WordPress administration.
Authorized editors can see additional controls and direct
editing tools that remain hidden from ordinary visitors.
Both workflows ultimately operate on the same structured
information. The interface changes according to the user's role.
PUBLIC
Contribution interface
Add information
Suggest an edit
Provide contact information
Submit for review
EDITOR
Management interface
Edit Listing controls
Additional editorial fields
Direct record access
Review and approval tools
INFORMATION WITHOUT OWNERSHIP
The Waterfront can publish an event without owning the event record.
The calendar provides one of the clearest examples of the architecture.
The canonical event repository lives at events.iloveseattle.org,
not on SeattleWaterfront.org.
SeattleWaterfront.org consumes appropriate event information
through an API. GW Framework then filters and presents those
records as a Waterfront-specific calendar.
Another website can consume the same underlying event and
present it differently. The event does not need to be copied
into every website that wants to use it.
events.iloveseattle.org
Canonical EventON repository
│
│ API
↓
GW Framework
│
Waterfront rules
Waterfront filters
Waterfront design
│
↓
SeattleWaterfront.org
Same event record
Different presentation
GW FRAMEWORK
The reusable asset is the layer between information and experience.
GW Framework is not the Waterfront database and it is not the
Waterfront design. It is the reusable application layer that helps
structured information become a working website or application.
Data adapters
Connect structured datasets and external systems to a
consistent presentation layer.
Reusable components
Generate cards, directories, controls and applications
without rebuilding the underlying machinery.
Role-aware tools
Present different controls to visitors, contributors
and editors.
Site-specific skins
Reuse technical architecture while allowing each project
to retain its own identity and design.
Cross-system publishing
Use information maintained in one system inside applications
operated by another site.
Structured outputs
The same architecture can support websites now and other
feeds, search, maps and AI interfaces later.
WHY A FRAMEWORK?
SeattleWaterfront.org is one implementation, not the definition of the system.
The best evidence that GW Framework is reusable is that the same
development approach is already being used for applications with
very different content and purposes.
DESTINATION INFORMATION
SeattleWaterfront.org
restaurants
activities
public art
parking
events
public contribution
editorial workflows
COMMUNITY INFORMATION
iLoveSeattle.org
organizations
events
calendars
relationships
directories
cross-site publishing
STRUCTURED PUBLISHING
Swing Again
structured manuscript
custom Reader
custom Editor
change sets
validation
publishing workflow
The data model changes. The interface changes. The audience changes.
The reusable architecture underneath does not have to start over.
DESIGN PRINCIPLE
Model the information.
Design the workflow.
Generate the experience.
The website becomes one interface to the information,
rather than the place where the information has to live.
DEVELOPMENT
Custom architecture developed for Seattle's Waterfront.
The structured-data architecture, custom interfaces and
GW Framework implementation used on SeattleWaterfront.org
were developed by Gerard Wirz.
GW Framework is also being used in other projects with very
different information models. Similar custom systems can be
developed for destinations, organizations and projects whose
information or workflows have outgrown conventional web pages.