# pmkaulani/link-in-bio architecture

> Architecture diagram of the GitHub repository pmkaulani/link-in-bio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pmkaulani/link-in-bio
- Repository: https://github.com/pmkaulani/link-in-bio

## Overview

This is a multi-user link-in-bio platform: creators configure profiles and content, publish public pages, and review traffic; visitors view profiles and can submit safety reports; administrators manage users, reports, links, and platform settings. The tree and README establish the broader editor, themes, analytics, and command-center capabilities, while sampled endpoints confirm some storage and moderation flows. Several page-to-API connections are not sampled, so those links are left out.

Main entry points: [`lib/supabaseAdmin.js`](https://github.com/pmkaulani/link-in-bio/blob/main/lib/supabaseAdmin.js) (Supabase), [`app/admin/layout.js`](https://github.com/pmkaulani/link-in-bio/blob/main/app/admin/layout.js) (Admin console), [`lib/adminAuth.js`](https://github.com/pmkaulani/link-in-bio/blob/main/lib/adminAuth.js) (Admin authorization), [`app/dashboard/DashboardContext.js`](https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/DashboardContext.js) (Profile state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creator["Creator workspace"]
  node_dashboard["Dashboard<br/>[layout.js]"]
  node_dashboard_context["Profile state"]
  node_editor["Block editor<br/>[BlockEditor.js]"]
  node_social_manager["Social accounts"]
  node_analytics_page["Creator analytics<br/>[page.js]"]
end

subgraph group_public["Public profiles"]
  node_profile_page["Public profile<br/>[page.js]"]
  node_public_theme["Profile themes<br/>[PublicProfile.jsx]"]
  node_local_public["Local demo profile<br/>[LocalPublicPage.js]"]
end

subgraph group_insights["Analytics and safety"]
  node_analytics_api["Event intake<br/>[route.js]"]
  node_analytics_lib["Analytics helpers<br/>[analytics.js]"]
  node_report_submit["Report intake<br/>[route.js]"]
end

subgraph group_admin["Administration"]
  node_report_admin["Report moderation<br/>[route.js]"]
  node_admin_user_api["User moderation<br/>[route.js]"]
  node_admin_links_api["Link moderation<br/>[route.js]"]
  node_admin_settings_api["Platform settings<br/>[route.js]"]
  node_admin_stats_api["Platform metrics<br/>[route.js]"]
  node_admin_ui["Admin console<br/>[layout.js]"]
end

subgraph group_services["Data and identity"]
  node_supabase[("Supabase<br/>[supabaseAdmin.js]")]
  node_request_client["Request auth client<br/>[supabaseServer.js]"]
  node_local_db[("Local demo database<br/>[localDatabase.js]")]
  node_admin_auth["Admin authorization<br/>[adminAuth.js]"]
end

node_creator(("Creator"))
node_visitor(("Visitor"))
node_admin(("Administrator"))

node_creator -->|"opens workspace"| node_dashboard
node_dashboard -->|"provides profile state"| node_dashboard_context
node_dashboard_context -->|"supplies editor state"| node_editor
node_dashboard_context -->|"supplies profile state"| node_social_manager
node_creator -->|"reviews metrics"| node_analytics_page
node_visitor -->|"opens handle"| node_profile_page
node_profile_page -->|"renders profile"| node_public_theme
node_profile_page -.->|"uses demo view"| node_local_public
node_visitor -->|"sends view or click"| node_analytics_api
node_analytics_api -->|"checks and records events"| node_supabase
node_visitor -->|"submits report"| node_report_submit
node_report_submit -->|"creates report"| node_supabase
node_admin -->|"opens console"| node_admin_ui
node_admin_ui -->|"manages reports"| node_report_admin
node_admin_ui -->|"manages users"| node_admin_user_api
node_admin_ui -->|"moderates links"| node_admin_links_api
node_admin_ui -->|"changes settings"| node_admin_settings_api
node_admin_ui -->|"views platform metrics"| node_admin_stats_api
node_report_admin -->|"verifies administrator"| node_admin_auth
node_admin_user_api -->|"verifies administrator"| node_admin_auth
node_admin_links_api -->|"verifies administrator"| node_admin_auth
node_admin_settings_api -->|"verifies administrator"| node_admin_auth
node_admin_stats_api -->|"verifies administrator"| node_admin_auth
node_report_admin -->|"reads and updates records"| node_supabase
node_admin_user_api -->|"updates user records"| node_supabase
node_admin_links_api -->|"updates block records"| node_supabase
node_admin_settings_api -->|"updates settings"| node_supabase
node_admin_stats_api -->|"reads platform records"| node_supabase
node_analytics_page -->|"uses analytics helpers"| node_analytics_lib
node_supabase -->|"provides auth backend"| node_request_client
node_request_client -.->|"uses in demo mode"| node_local_db

click node_dashboard "https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/layout.js"
click node_dashboard_context "https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/DashboardContext.js"
click node_editor "https://github.com/pmkaulani/link-in-bio/blob/main/components/blocks/BlockEditor.js"
click node_social_manager "https://github.com/pmkaulani/link-in-bio/blob/main/components/profile/SocialLinksManager.js"
click node_analytics_page "https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/analytics/page.js"
click node_profile_page "https://github.com/pmkaulani/link-in-bio/blob/main/app/%5Busername%5D/page.js"
click node_public_theme "https://github.com/pmkaulani/link-in-bio/blob/main/components/themes/PublicProfile.jsx"
click node_local_public "https://github.com/pmkaulani/link-in-bio/blob/main/components/LocalPublicPage.js"
click node_analytics_api "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/analytics/route.js"
click node_analytics_lib "https://github.com/pmkaulani/link-in-bio/blob/main/lib/analytics.js"
click node_report_submit "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/reports/submit/route.js"
click node_report_admin "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/reports/route.js"
click node_admin_user_api "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/users/route.js"
click node_admin_links_api "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/links/route.js"
click node_admin_settings_api "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/settings/route.js"
click node_admin_stats_api "https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/stats/route.js"
click node_admin_ui "https://github.com/pmkaulani/link-in-bio/blob/main/app/admin/layout.js"
click node_supabase "https://github.com/pmkaulani/link-in-bio/blob/main/lib/supabaseAdmin.js"
click node_request_client "https://github.com/pmkaulani/link-in-bio/blob/main/lib/supabaseServer.js"
click node_local_db "https://github.com/pmkaulani/link-in-bio/blob/main/lib/localDatabase.js"
click node_admin_auth "https://github.com/pmkaulani/link-in-bio/blob/main/lib/adminAuth.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_dashboard_context,node_editor,node_social_manager,node_analytics_page toneBlue
class node_profile_page,node_public_theme,node_local_public toneAmber
class node_analytics_api,node_analytics_lib,node_report_submit toneMint
class node_report_admin,node_admin_user_api,node_admin_links_api,node_admin_settings_api,node_admin_stats_api,node_admin_ui toneRose
class node_supabase,node_request_client,node_local_db,node_admin_auth,node_creator,node_visitor,node_admin toneIndigo
```

## Components

### Creator workspace

- [Dashboard](https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/layout.js): `app/dashboard/layout.js`
- [Profile state](https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/DashboardContext.js): `app/dashboard/DashboardContext.js`
- [Block editor](https://github.com/pmkaulani/link-in-bio/blob/main/components/blocks/BlockEditor.js): `components/blocks/BlockEditor.js`
- [Social accounts](https://github.com/pmkaulani/link-in-bio/blob/main/components/profile/SocialLinksManager.js): `components/profile/SocialLinksManager.js`
- [Creator analytics](https://github.com/pmkaulani/link-in-bio/blob/main/app/dashboard/analytics/page.js): `app/dashboard/analytics/page.js`

### Public profiles

- [Public profile](https://github.com/pmkaulani/link-in-bio/blob/main/app/%5Busername%5D/page.js): `app/[username]/page.js`
- [Profile themes](https://github.com/pmkaulani/link-in-bio/blob/main/components/themes/PublicProfile.jsx): `components/themes/PublicProfile.jsx`
- [Local demo profile](https://github.com/pmkaulani/link-in-bio/blob/main/components/LocalPublicPage.js): `components/LocalPublicPage.js`

### Analytics and safety

- [Event intake](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/analytics/route.js): `app/api/analytics/route.js`
- [Analytics helpers](https://github.com/pmkaulani/link-in-bio/blob/main/lib/analytics.js): `lib/analytics.js`
- [Report intake](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/reports/submit/route.js): `app/api/reports/submit/route.js`

### Administration

- [Report moderation](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/reports/route.js): `app/api/admin/reports/route.js`
- [User moderation](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/users/route.js): `app/api/admin/users/route.js`
- [Link moderation](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/links/route.js): `app/api/admin/links/route.js`
- [Platform settings](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/settings/route.js): `app/api/admin/settings/route.js`
- [Platform metrics](https://github.com/pmkaulani/link-in-bio/blob/main/app/api/admin/stats/route.js): `app/api/admin/stats/route.js`
- [Admin console](https://github.com/pmkaulani/link-in-bio/blob/main/app/admin/layout.js): `app/admin/layout.js`

### Data and identity

- [Supabase](https://github.com/pmkaulani/link-in-bio/blob/main/lib/supabaseAdmin.js): `lib/supabaseAdmin.js`
- [Request auth client](https://github.com/pmkaulani/link-in-bio/blob/main/lib/supabaseServer.js): `lib/supabaseServer.js`
- [Local demo database](https://github.com/pmkaulani/link-in-bio/blob/main/lib/localDatabase.js): `lib/localDatabase.js`
- [Admin authorization](https://github.com/pmkaulani/link-in-bio/blob/main/lib/adminAuth.js): `lib/adminAuth.js`

### Other components

- **Creator**
- **Visitor**
- **Administrator**

## Connections

- Creator → Dashboard: opens workspace
- Dashboard → Profile state: provides profile state
- Profile state → Block editor: supplies editor state
- Profile state → Social accounts: supplies profile state
- Creator → Creator analytics: reviews metrics
- Visitor → Public profile: opens handle
- Public profile → Profile themes: renders profile
- Public profile → Local demo profile: uses demo view
- Visitor → Event intake: sends view or click
- Event intake → Supabase: checks and records events
- Visitor → Report intake: submits report
- Report intake → Supabase: creates report
- Administrator → Admin console: opens console
- Admin console → Report moderation: manages reports
- Admin console → User moderation: manages users
- Admin console → Link moderation: moderates links
- Admin console → Platform settings: changes settings
- Admin console → Platform metrics: views platform metrics
- Report moderation → Admin authorization: verifies administrator
- User moderation → Admin authorization: verifies administrator
- Link moderation → Admin authorization: verifies administrator
- Platform settings → Admin authorization: verifies administrator
- Platform metrics → Admin authorization: verifies administrator
- Report moderation → Supabase: reads and updates records
- User moderation → Supabase: updates user records
- Link moderation → Supabase: updates block records
- Platform settings → Supabase: updates settings
- Platform metrics → Supabase: reads platform records
- Creator analytics → Analytics helpers: uses analytics helpers
- Supabase → Request auth client: provides auth backend
- Request auth client → Local demo database: uses in demo mode
