# dorayakiiiiz/linkify-project architecture

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

- Interactive diagram: https://gitdiagram.com/dorayakiiiiz/linkify-project
- Repository: https://github.com/dorayakiiiiz/linkify-project

## Overview

Linkify is a creator bio-link SaaS: creators sign in, set up and customize a public profile, manage links and shop products, then share the page; visitors view it and generate engagement analytics. The product also includes donations, AI-assisted post ideas, and an admin area for analytics and content moderation. The map follows the documented capabilities and sampled code; several route-to-controller and page-to-service connections are not shown because their wiring was not sampled.

Main entry points: [`frontend/src/App.jsx`](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/App.jsx) (Web app routes), [`frontend/src/pages/CreatorDashboard`](https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/CreatorDashboard) (Creator dashboard), [`backend/src/controllers/ShopController.mjs`](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ShopController.mjs) (Shop and products), [`backend/src/controllers/ProfileController.mjs`](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ProfileController.mjs) (Profile and design)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["Web app routes<br/>[App.jsx]"]
  node_creatorui["Creator dashboard"]
  node_publicpage["Public profile page<br/>[PublicProfile.jsx]"]
  node_preview["Profile renderer"]
  node_adminui["Admin dashboard"]
end

subgraph group_identity["Identity and profiles"]
  node_authui["Sign-in and onboarding"]
  node_authcontext["Auth state<br/>[AuthContext.jsx]"]
  node_authservice["Auth API client<br/>[authService.js]"]
  node_authcontroller["Authentication<br/>[AuthController.mjs]"]
  node_profilecontroller["Profile and design"]
  node_profilemodel[("Profile records<br/>[Profile.mjs]")]
end

subgraph group_content["Creator content"]
  node_linkcontroller["Link management<br/>[LinkController.mjs]"]
  node_shopcontroller["Shop and products<br/>[ShopController.mjs]"]
  node_productmodel[("Product records<br/>[Product.mjs]")]
  node_donation["Donation features<br/>[DonationPage.jsx]"]
end

subgraph group_operations["Moderation and insights"]
  node_analytics["Analytics"]
  node_analyticmodel[("Analytics records<br/>[Analytic.mjs]")]
  node_moderation["AI moderation"]
  node_moderationqueue["Moderation queue"]
  node_admincontroller["Admin operations"]
  node_ideas["AI post ideas<br/>[aiService.mjs]"]
end

subgraph group_platform["API and infrastructure"]
  node_server["API server<br/>[index.mjs]"]
  node_routes["API routes<br/>[index.mjs]"]
  node_cache[("Cache<br/>[cache.mjs]")]
  node_sse["Moderation updates<br/>[sseManager.mjs]"]
  node_storage["Media storage<br/>[r2.mjs]"]
end

node_creator(("Creator"))
node_visitor(("Visitor"))
node_admin(("Admin"))
node_mongo[("MongoDB")]
node_groq["Groq API"]
node_email["Email delivery"]

node_creator -->|"uses"| node_app
node_visitor -->|"opens"| node_publicpage
node_admin -->|"uses"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_creatorui
node_app -->|"routes to"| node_publicpage
node_app -->|"routes to"| node_adminui
node_authui -->|"uses"| node_authcontext
node_authcontext -->|"requests"| node_authservice
node_authservice -->|"calls API"| node_authcontroller
node_authcontroller -->|"creates profile"| node_profilemodel
node_authcontroller -->|"queues email"| node_email
node_creatorui -->|"manages profile"| node_profilecontroller
node_creatorui -->|"manages links"| node_linkcontroller
node_creatorui -->|"manages shop"| node_shopcontroller
node_publicpage -->|"renders profile"| node_preview
node_preview -->|"records engagement"| node_analytics
node_profilecontroller -->|"reads and writes"| node_profilemodel
node_profilecontroller -->|"reads and invalidates"| node_cache
node_profilecontroller -->|"deletes media"| node_storage
node_linkcontroller -->|"queues checks"| node_moderationqueue
node_shopcontroller -->|"reads and writes"| node_productmodel
node_shopcontroller -->|"queues checks"| node_moderationqueue
node_shopcontroller -->|"reads and invalidates"| node_cache
node_shopcontroller -->|"deletes media"| node_storage
node_moderationqueue -->|"dispatches checks"| node_moderation
node_moderation -->|"checks content"| node_groq
node_moderation -->|"pushes status"| node_sse
node_moderation -->|"invalidates"| node_cache
node_sse -->|"streams updates"| node_creator
node_adminui -->|"manages content"| node_admincontroller
node_admincontroller -->|"queries records"| node_mongo
node_analytics -->|"records and queries"| node_analyticmodel
node_preview -.->|"offers donation"| node_donation
node_creatorui -.->|"requests ideas"| node_ideas
node_server -->|"mounts"| node_routes
node_server -->|"connects"| node_mongo

click node_app "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/App.jsx"
click node_creatorui "https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/CreatorDashboard"
click node_publicpage "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/pages/PublicProfile.jsx"
click node_preview "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/components/Shared/LinktreePreview.jsx"
click node_adminui "https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/AdminDashboard"
click node_authui "https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/Auth"
click node_authcontext "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/context/AuthContext.jsx"
click node_authservice "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/services/authService.js"
click node_authcontroller "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AuthController.mjs"
click node_profilecontroller "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ProfileController.mjs"
click node_profilemodel "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Profile.mjs"
click node_linkcontroller "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/LinkController.mjs"
click node_shopcontroller "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ShopController.mjs"
click node_productmodel "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Product.mjs"
click node_donation "https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/pages/CreatorDashboard/DonationPage.jsx"
click node_analytics "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AnalyticController.mjs"
click node_analyticmodel "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Analytic.mjs"
click node_moderation "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/services/moderationService.mjs"
click node_moderationqueue "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/moderationQueue.mjs"
click node_admincontroller "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AdminController.mjs"
click node_ideas "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/services/aiService.mjs"
click node_server "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/index.mjs"
click node_routes "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/routes/index.mjs"
click node_cache "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/cache.mjs"
click node_sse "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/sseManager.mjs"
click node_storage "https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/config/storage/r2.mjs"

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_app,node_creatorui,node_publicpage,node_preview,node_adminui toneBlue
class node_authui,node_authcontext,node_authservice,node_authcontroller,node_profilecontroller,node_profilemodel,node_mongo toneAmber
class node_linkcontroller,node_shopcontroller,node_productmodel,node_donation,node_groq toneMint
class node_analytics,node_analyticmodel,node_moderation,node_moderationqueue,node_admincontroller,node_ideas toneRose
class node_server,node_routes,node_cache,node_sse,node_storage,node_creator,node_visitor,node_admin,node_email toneIndigo
```

## Components

### Web experience

- [Web app routes](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Creator dashboard](https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/CreatorDashboard): `frontend/src/pages/CreatorDashboard`
- [Public profile page](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/pages/PublicProfile.jsx): `frontend/src/pages/PublicProfile.jsx`
- [Profile renderer](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/components/Shared/LinktreePreview.jsx): `frontend/src/components/Shared/LinktreePreview.jsx`
- [Admin dashboard](https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/AdminDashboard): `frontend/src/pages/AdminDashboard`

### Identity and profiles

- [Sign-in and onboarding](https://github.com/dorayakiiiiz/linkify-project/tree/master/frontend/src/pages/Auth): `frontend/src/pages/Auth`
- [Auth state](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Auth API client](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/services/authService.js): `frontend/src/services/authService.js`
- [Authentication](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AuthController.mjs): `backend/src/controllers/AuthController.mjs`
- [Profile and design](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ProfileController.mjs): `backend/src/controllers/ProfileController.mjs`
- [Profile records](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Profile.mjs): `backend/src/models/Profile.mjs`

### Creator content

- [Link management](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/LinkController.mjs): `backend/src/controllers/LinkController.mjs`
- [Shop and products](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/ShopController.mjs): `backend/src/controllers/ShopController.mjs`
- [Product records](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Product.mjs): `backend/src/models/Product.mjs`
- [Donation features](https://github.com/dorayakiiiiz/linkify-project/blob/master/frontend/src/pages/CreatorDashboard/DonationPage.jsx): `frontend/src/pages/CreatorDashboard/DonationPage.jsx`

### Moderation and insights

- [Analytics](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AnalyticController.mjs): `backend/src/controllers/AnalyticController.mjs`
- [Analytics records](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/models/Analytic.mjs): `backend/src/models/Analytic.mjs`
- [AI moderation](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/services/moderationService.mjs): `backend/src/services/moderationService.mjs`
- [Moderation queue](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/moderationQueue.mjs): `backend/src/utils/moderationQueue.mjs`
- [Admin operations](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/controllers/AdminController.mjs): `backend/src/controllers/AdminController.mjs`
- [AI post ideas](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/services/aiService.mjs): `backend/src/services/aiService.mjs`

### API and infrastructure

- [API server](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/index.mjs): `backend/src/index.mjs`
- [API routes](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/routes/index.mjs): `backend/src/routes/index.mjs`
- [Cache](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/cache.mjs): `backend/src/utils/cache.mjs`
- [Moderation updates](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/utils/sseManager.mjs): `backend/src/utils/sseManager.mjs`
- [Media storage](https://github.com/dorayakiiiiz/linkify-project/blob/master/backend/src/config/storage/r2.mjs): `backend/src/config/storage/r2.mjs`

### Other components

- **Creator**
- **Visitor**
- **Admin**
- **MongoDB**
- **Groq API**
- **Email delivery**

## Connections

- Creator → Web app routes: uses
- Visitor → Public profile page: opens
- Admin → Web app routes: uses
- Web app routes → Sign-in and onboarding: routes to
- Web app routes → Creator dashboard: routes to
- Web app routes → Public profile page: routes to
- Web app routes → Admin dashboard: routes to
- Sign-in and onboarding → Auth state: uses
- Auth state → Auth API client: requests
- Auth API client → Authentication: calls API
- Authentication → Profile records: creates profile
- Authentication → Email delivery: queues email
- Creator dashboard → Profile and design: manages profile
- Creator dashboard → Link management: manages links
- Creator dashboard → Shop and products: manages shop
- Public profile page → Profile renderer: renders profile
- Profile renderer → Analytics: records engagement
- Profile and design → Profile records: reads and writes
- Profile and design → Cache: reads and invalidates
- Profile and design → Media storage: deletes media
- Link management → Moderation queue: queues checks
- Shop and products → Product records: reads and writes
- Shop and products → Moderation queue: queues checks
- Shop and products → Cache: reads and invalidates
- Shop and products → Media storage: deletes media
- Moderation queue → AI moderation: dispatches checks
- AI moderation → Groq API: checks content
- AI moderation → Moderation updates: pushes status
- AI moderation → Cache: invalidates
- Moderation updates → Creator: streams updates
- Admin dashboard → Admin operations: manages content
- Admin operations → MongoDB: queries records
- Analytics → Analytics records: records and queries
- Profile renderer → Donation features: offers donation
- Creator dashboard → AI post ideas: requests ideas
- API server → API routes: mounts
- API server → MongoDB: connects
