Miscellaneous web stuff

Entity-Oriented Website Design Manual

Entity-Oriented Website Design Manual

Core Principle

Design the website around things that exist in the subject matter, not around pages, menus, or articles.

Ask:

"What are the things I want to know about?"

not

"What pages do I want on my website?"


Step 1: Identify Core Entities

An entity is something important enough to deserve its own page.

For Contraptions, examples include:

  • Contraption
  • Sound
  • Voice
  • MIDI Map
  • MIDI Map Entry
  • Function
  • Registration
  • Effect
  • Article
  • Tech

The test is:

Would I ever want to browse, search, categorize, or link to this thing directly?

If yes, consider making it an entity.


Step 2: Separate Things from Stories

Distinguish between persistent objects and temporary narratives.

Objects

Things that exist over time:

  • Topsy
  • Glockenbox
  • MIDI Interface
  • Reuter 1674

Stories

Things that document activity:

  • Build logs
  • Progress reports
  • Announcements
  • Historical articles

Objects accumulate stories over time.


Step 3: Normalize Concepts

Separate different dimensions of classification.

For example:

What it IS

Instrument
Interface
Controller
Rank
Tool

This belongs in:

Contraption Type

What disciplines are involved

Electronics
Mechanical
Woodworking
Software
Physics
Music

This belongs in:

Genre

A single taxonomy should answer a single question.


Step 4: Prefer Relationships Over Hierarchies

Many systems naturally form networks rather than trees.

Avoid forcing this:

Parent
 └─ Child

when reality looks more like:

A relates to B
A uses C
A inspired D
B controls E

Use flexible relationships whenever possible.


Step 5: Model Reality, Not Implementation

Example:

Don't ask:

"Should MIDI Controller be a content type?"

Ask:

"What is a MIDI Controller in the real world?"

The answer determines the model.

A database should describe reality rather than software structure.


Step 6: Create New Entities Only When Necessary

Avoid creating content types for every idea.

Ask:

Is this fundamentally different?

If not, use an existing entity.

For example, we discovered many "components" are actually specialized contraptions:

  • Pipe chest
  • MIDI interface
  • Bellows
  • Test bench

Rather than creating a new Component entity, they can remain Contraptions.


Step 7: Use Taxonomies for Classification

Use content types for things.

Use taxonomies for categories.

Good entity

Contraption

Good taxonomy

Contraption Type

Good taxonomy

Genre

Step 8: Make Relationships Discoverable

Store the relationship once.

Examples:

Topsy
→ related contraption
→ MIDI Interface

Then use Views to discover:

What references this item?

instead of storing reciprocal links manually.


Step 9: Let Real Content Drive the Model

Avoid endless redesign.

Enter real content.

Examples:

  • Topsy
  • Reuter 1674
  • Glockenbox
  • MIDI Interface

Then observe:

  • Which fields feel useful?
  • Which relationships keep appearing?
  • Which categories emerge naturally?

The content will reveal the proper architecture.


Step 10: Think Like a Museum Curator

The website is not a collection of pages.

The website is a collection of interconnected knowledge.

For Contraptions:

 

Contraption
├─ Sounds
├─ Voices
├─ MIDI Maps
├─ Registrations
├─ Functions
├─ Articles
├─ Tech Notes
└─ Related Contraptions

 

Each item can be viewed from multiple perspectives without duplicating information.


Guiding Question

Whenever you are unsure how to model something, ask:

"Is this a thing, a category, a relationship, or a story?"

Most content-modeling decisions fall naturally out of that question.

Project type