Skip to content
Fusion

The apps

PulsN (the example) is not one screen — it's a handful of small apps sharing one set of users, one database, and one app shell, all reached through one assistant. Each gets its own page; this is the map.

The shape

The organising idea is project-centric: you land on /home — your buildings ranked by urgency, with Carola ready to type to. Pick a building and you enter its workspace at /project/$projectKey/…, where the project apps show that building's data. Carola follows you the whole way: scope is a lens (the portfolio, or a building), never its own destination.

Loading diagram...
AppScopeWhat it is
Portfoliothe homethe post-login home — your buildings, ranked by urgency, Carola front and centre
Carolaeverywherethe conversation-first assistant — inline, the companion rail, or floating (PiP)
ProcessNper projecttask & assignment management
ProtokollNper projectmeeting protocols + action points (a hierarchical tree)
NyhetNper projecta read-only news feed, askable by the agent
WikiNper projectthe documentation handbook, askable by the agent
Flatboxper projectdocument-review views from a separate service over HTTP

Two surfaces cut across all of them: Universal search — one ranked search over everything you can see — and a full site-admin area.

Two flavours of app

The split matters when you read the code:

  • In-process — ProcessN, ProtokollN, NyhetN, WikiN. This app owns their tables (src/db/schema/*), their server functions, and their permission rules. You "own your domain": there's no framework-provided Project model.
  • ExternalFlatbox is a different service reached over HTTP, which computes its own permissions; this app just trusts and renders them. It's the template for integrating a system you don't own.

The shared table page

The domain apps look consistent because the editable ones are built from one fusion-ui shell, ResourceTablePage. You hand it columns, the rows from a loader, and a per-row canEdit predicate; it gives you the Editor/Viewer badge, a gated Edit button, and an edit sheet for free. The matching *-server.ts provides the list-filters-then-update-re-checks shape. That's why a new domain page is mostly copy-and-change — see Building a feature.

See it with data

Everything is populated by bun run db:seed — ten Tikab logins across nine real projects, hundreds of news posts and wiki articles, realistic memberships and permissions. The Portfolio's seed section has the details and the sign-in credentials.

New to the framework these apps are built on? Read How TanStack Start works and the React / Django comparisons first.