BridgeHandbookDraft
For agents
Menu
Draft

Bridge OS

Bridge OS's frame, widths and habits, how people arrive from other apps, and every screen with its template.

What Bridge OS is for

Everyone with a Bridge account. It's the home of your network: who you know, the intros you make and receive, your meetings, and the outcomes. It's also where every other Bridge app is launched from and connects to.

os.brdg.app

The frame every screen sits in

The shell draws all of this. A screen only fills the content area, so never redraw any of it on a page.

PartWhat it is
Top barSticky. Logo, the three main areas (Activity, Network, Outcomes), the app launcher, your avatar. On phones the areas move to a bar at the bottom.
BackgroundThe dot grid with soft glow, drawn once by the shell. Pages stay transparent: never add a page background.
Page padding16px on phones, 24px on tablets, 32px on desktops, 32px top and bottom. The shell adds it; pages add none.
Content width1280px by default. A page picks its width tier; Network pages may go to 1600px.
FooterUnder every signed-in page.

Page widths

Every page picks one of these from src/lib/layout/widths.ts. The template says which.

NameWidthFor
LAYOUT_WIDE1600pxTables and two-column pages: an organization, a person's profile, intro lists, Network's tables.
LAYOUT_STANDARD1280pxCard dashboards and grids: Outcomes, Network overview, Apps.
LAYOUT_READ800pxOne column of reading: your own profile.
LAYOUT_FORM720pxForms: Settings.

Main areas

  • Activity (what's new: intros, meetings, people you recently met)
  • Network (people and organizations you know, invites, sharing)
  • Outcomes (what your intros led to)

How Bridge OS builds a page

Follow these so a new screen matches the ones already shipped.

  • A page is a server page.tsx that renders one client _components/<name>-content.tsx.
  • Pick a width from src/lib/layout/widths.ts; never write a max-w-* of your own.
  • Not everything is a card. Tab rows, page titles, Back links and section titles sit on the page itself; cards hold content (a table, a list, a form).
  • A record page (a person or an organization) opens with the record's own card, not a page title, then underline tabs on the page line, then one card for the tab's content.
  • Two-column pages: the main column is minmax(0,1fr), the side panel is 340px and stays in view (sticky top-20) with its own scroll.
  • A section title (icon + title) sits above or inside its card, never as a separate card.
  • Sub-pages start with "← Back", which goes back in history.
  • Tabs are in the address (?tab=); the default tab has none.
  • Each card loads on its own. The page never waits for all its data.
  • Main areas appear in both the top bar and the phone bar. Everything else is reached from a page.

Step by step: Build a screen (builds a Bridge OS organization page) and Add a screen (every file, in order).

Arriving from another Bridge app

FromLands on
Another app's app switcher (the 9-dot menu other Bridge apps share)os.brdg.app: Activity when signed in, the public home page when not.
An app asking to connectThe Connect page (/connect): one centered card naming the app and what it may see, with Allow and Cancel.
A shared profile linkThe member's public card if signed out, their full profile if signed in.

Every screen and its template

26 screens follow 8 templates. 3 fit only approximately (marked Closest, with what differs). A new screen starts from the template whose job matches, never a new frame.

Card dashboard

ScreenRouteDrawn byFit
Outcomes/outcomesapp/(shell)/outcomes/_components/outcomes-page-content.tsxExact
Network (Invites tab)/networkcomponents/ui/connectors-tab.tsxExact
Network (Overview tab)/network/overviewcomponents/ui/connectors-tab.tsxExact
Apps (signed in)/appsapp/dashboard.tsxExact

Record page

ScreenRouteDrawn byFit
Contact profile/contact/[refId]app/to/[username]/_components/authed-profile-view.tsxExact
Member profile (signed in)/to/[username]app/to/[username]/_components/authed-profile-view.tsxExact
Your profile/profilecomponents/ui/profile-tab.tsxExact
Organization/network/[domain]app/(shell)/network/[domain]/_components/org-network-content.tsxExact

Table page

ScreenRouteDrawn byFit
Invites/network/invitesapp/(shell)/network/invites/_components/invites-content.tsxExact
Sharing/network/sharingapp/(shell)/network/sharing/_components/sharing-content.tsxClosest: two tables side by side
Your intros/profile/introscomponents/ui/person-intros-view.tsxExact
Intros with a contact/contact/[refId]/introscomponents/ui/person-intros-view.tsxExact
Intros with a member/to/[username]/introscomponents/ui/person-intros-view.tsxExact

Settings form

ScreenRouteDrawn byFit
Settings/settingsapp/(shell)/settings/_components/settings-content.tsxExact
Sync preview (hidden)/settings/sync-previewapp/(shell)/settings/sync-preview/_components/sync-preview-content.tsxExact
Network settings/network/settingsapp/(shell)/network/settings/_components/network-settings-content.tsxExact

Feed

ScreenRouteDrawn byFit
Activity/activityapp/(shell)/activity/_components/activity-page-content.tsxExact

Public page

ScreenRouteDrawn byFit
Home (signed out)/app/dashboard.tsxExact
About/aboutapp/about/about-content.tsxExact
Network (signed out)/network (signed out)app/(shell)/network/_components/network-logged-out-view.tsxExact
App detail/app/[id]components/ui/app-detail-content.tsxClosest: one 768px detail card; also opens as an overlay

Centered card

ScreenRouteDrawn byFit
Log in/loginapp/(auth)/login/page.tsxExact
Connect an app/connectapp/connect/_components/connect-consent.tsxExact
Member card (public)/to/[username] (signed out)app/to/[username]/public-profile-view.tsxExact

Admin table

ScreenRouteDrawn byFit
Admin: apps/admin/appsapp/(admin)/admin/apps/page.tsxExact
Admin: embed/admin/embedapp/(admin)/admin/embed/page.tsxClosest: a code snippet instead of a table

Not a template

RouteWhy
/?view=machineA plain-text page for AI agents, not a human screen.
/dealflow, /introductions, /jobs, /perksRedirects to other Bridge apps; nothing is drawn.

Known gaps

Where Bridge OS code differs from this page today. Follow the page, not the gap.

  • Page headers, Back links and section titles are written by hand on every page (the App kit proposes shared ones).
  • Seven public pages copy the top bar, footer and background by hand.
  • One generic loading screen for every page change, whatever the page's shape.
  • The app launcher and user menu still use Radix menus, not the package's ActionMenu.
  • Contact actions menu: plain buttons inside the menu, so arrow keys don't move between them.

Sources

  • Bridge OS route survey (commit 5d9b382), 2026-11-02.
  • Bridge OS src/app/(shell)/layout.tsx, src/lib/layout/widths.ts, top-nav.tsx, org-network-content.tsx, src/app/connect/.
  • Bridge OS components.md, CLAUDE.md.