{"slug":"hub-and-spoke","meta":{"title":"Hub and Spoke","slug":"hub-and-spoke","kind":"ia","summary":"A central object with everything else hanging off it — the shape most business software actually is, and the one that decides what \"home\" means.","problem":"Navigation gets built around record types, so a person working on one client visits five sections to assemble what they need. The software's structure mirrors the database rather than the thing people actually work on.","family":["orient","find"],"principles":["orientation","minimize-distance","surface-dont-bury"],"status":"stable","visibility":"public","related":[{"title":"Object Identity Header","url":"/patterns/object-identity-header","summary":"What the hub's page opens with once you have identified the central object."},{"title":"Inbox-First Application","url":"/patterns/inbox-first-application","summary":"The alternative front door, when the job is queue-shaped rather than object-shaped."}]},"body":"## The shape\n\n```\n                    ┌───────────────┐\n             ┌──────│  THE CLIENT   │──────┐\n             │      │  (the hub)    │      │\n        ┌────▼───┐  └───┬───────┬───┘  ┌───▼────┐\n        │  Jobs  │      │       │      │Invoices│\n        └────────┘  ┌───▼───┐ ┌─▼────┐ └────────┘\n                    │ Files │ │People│\n                    └───────┘ └──────┘\n```\n\nOne object is the centre of gravity. Everything else is reached **through** it,\nand the hub's page is where a person spends their time.\n\n## Finding the hub\n\nThe hub is the noun people say when they describe their work. Not the noun with\nthe most rows — the one that other things belong *to*.\n\nAsk what someone means when they say \"let me pull that up\". In a construction\nbusiness it is the project. In a law firm it is the matter. In a clinic it is\nthe patient. In an agency it is the client. Almost every business has one, and\nalmost every internal tool built without asking gets it wrong — because a\ndeveloper looking at the schema sees six equally-important tables.\n\nThe consequence of getting it wrong is not subtle: people navigate constantly,\nbecause the thing they hold in their head is not a place they can go.\n\n## What follows once you know it\n\n- **The hub gets a real page**, not a row in a list. It is where people spend\n  time, so it earns [tabs](/patterns/tabs) or\n  [sections](/patterns/collapsible-section) rather than a form.\n- **Spokes appear on the hub**, in summary, with counts — jobs, invoices, files\n  — so the hub answers most questions without leaving it.\n- **Spoke records link back**, always, so someone who arrives at an invoice from\n  search can get to the client in one click.\n- **Search prioritises hubs.** When someone types a name, the client should rank\n  above the invoice that mentions it.\n- **Global lists still exist** — all invoices, all jobs — because\n  cross-hub questions are real. They are just not the primary path.\n\n## The failure this prevents\n\nWithout a hub, the work of assembling context falls on the person, every time.\nThey open the client list, find the client, note the name, go to jobs, filter by\nthat name, go to invoices, filter again. Nothing is broken and the whole day is\nmade of it.\n\nThat assembly work is also where mistakes come from: filter on the wrong\nsimilar name once, and the conclusion is wrong with no error anywhere.\n\n## Where it goes wrong\n\n- **No hub at all.** Navigation is the table list. The most common shape for\n  software built from a schema.\n- **The wrong hub** — usually the highest-volume table rather than the one\n  people think in.\n- **A hub page that is just a form.** The central object of the business gets an\n  edit form for its own fields and no view of anything attached to it.\n- **Spokes with no way back**, so arriving from search strands you.\n- **Two competing hubs** with no stated relationship, so people are never sure\n  which one to open.\n- **Everything on the hub page**, which turns the most important screen in the\n  product into a [data dump](/patterns/data-dump). The hub summarises spokes; it\n  does not contain them.\n\n## Exemplars\n\n**Salesforce** is the pattern at its most explicit — the Account record is the\nhub, and the entire product is organised as things related to it.\n\n**GitHub's repository** is a hub that nobody would describe as one, and it is a\ngood demonstration of the tabs-plus-counts approach: code, issues, pull\nrequests, actions, all hanging off one object with a permanent identity.\n\n**Practice-management software** across law, medicine and accounting converges\non the same shape — matter, patient, client — which is strong evidence that the\nhub is discovered from the business rather than invented in the design.\n\nThe extractable rule: **the hub is a noun your customer already says.** If you\nhave to explain it to them, you picked the wrong one.\n"}