# tidjioiris07/ak-streaming-media-agency architecture

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

- Interactive diagram: https://gitdiagram.com/tidjioiris07/ak-streaming-media-agency
- Repository: https://github.com/tidjioiris07/ak-streaming-media-agency

## Overview

Opal Sky Media Agency is a public-facing TikTok services and media-agency site with an authenticated CMS. Visitors browse service and client pages and can submit contact inquiries; editors manage page content, media, users, and site settings. The sampled source confirms content and media API flows, persistence, and Cloudinary operations. Public rendering and several admin workflows are represented at their tree-supported entry points; their internal wiring was not fully sampled.

Main entry points: [`domain/media/media.service.ts`](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/media/media.service.ts) (Media service), [`app/api/content/route.ts`](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/content/route.ts) (Content API), [`domain/content/content.service.ts`](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/content/content.service.ts) (Content service), [`lib/media-client.ts`](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/media-client.ts) (Media client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public site"]
  node_public_pages["Public pages"]
  node_public_sections["Page sections"]
  node_contact_form["Contact form<br/>[contact-form.tsx]"]
end

subgraph group_admin["Admin CMS"]
  node_admin_editor["Admin editors"]
  node_admin_dashboard["Admin workspace"]
  node_auth_api["Auth endpoint<br/>[route.ts]"]
  node_auth["Authentication<br/>[auth.ts]"]
end

subgraph group_content["Content management"]
  node_content_api["Content API<br/>[route.ts]"]
  node_content_service["Content service<br/>[content.service.ts]"]
  node_content_repository["Content repository"]
  node_content_client["Content client<br/>[content-client.ts]"]
  node_content_cache["Public content cache"]
end

subgraph group_media["Media library"]
  node_media_ui["Media library UI<br/>[media-library.tsx]"]
  node_media_client["Media client<br/>[media-client.ts]"]
  node_media_api["Media API<br/>[route.ts]"]
  node_media_delete_api["Media deletion API<br/>[route.ts]"]
  node_media_service["Media service<br/>[media.service.ts]"]
  node_media_repository["Media repository"]
end

subgraph group_leads["Contact leads"]
  node_lead_action["Message actions<br/>[message.actions.ts]"]
  node_lead_service["Message service<br/>[message.service.ts]"]
  node_lead_repository["Message repository"]
  node_mail["Email provider<br/>[mail.ts]"]
end

node_visitor(("Visitor"))
node_cloudinary["Cloudinary"]
node_database[("Application database")]

node_visitor -->|"browses"| node_public_pages
node_public_pages -->|"renders"| node_public_sections
node_visitor -->|"submits inquiry"| node_contact_form
node_contact_form -->|"submits"| node_lead_action
node_lead_action -->|"dispatches"| node_lead_service
node_lead_service -->|"saves lead"| node_lead_repository
node_lead_repository -->|"writes"| node_database
node_lead_service -.->|"sends notification"| node_mail
node_admin_dashboard -->|"authenticates"| node_auth_api
node_auth_api -->|"dispatches"| node_auth
node_admin_editor -->|"loads and saves"| node_content_client
node_content_client -->|"requests content"| node_content_api
node_content_api -->|"dispatches"| node_content_service
node_content_service -->|"reads sections"| node_content_repository
node_content_repository -->|"reads and writes"| node_database
node_content_service -->|"validates and saves"| node_database
node_content_api -->|"invalidates"| node_content_cache
node_media_ui -->|"manages media"| node_media_client
node_media_client -->|"lists and uploads"| node_media_api
node_media_client -->|"deletes"| node_media_delete_api
node_media_api -->|"dispatches"| node_media_service
node_media_delete_api -->|"dispatches"| node_media_service
node_media_service -->|"reads and writes"| node_media_repository
node_media_repository -->|"reads and writes"| node_database
node_media_service -->|"uploads and deletes"| node_cloudinary

click node_public_pages "https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/app/(public)"
click node_public_sections "https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/components/public-sections"
click node_contact_form "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/components/public/contact-form.tsx"
click node_admin_editor "https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/components/ui/admin/editors"
click node_admin_dashboard "https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/app/admin/(protected)"
click node_auth_api "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/auth/%5B...all%5D/route.ts"
click node_auth "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/auth.ts"
click node_content_api "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/content/route.ts"
click node_content_service "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/content/content.service.ts"
click node_content_repository "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/content/content.repository.ts"
click node_content_client "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/content-client.ts"
click node_content_cache "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/public-content-cache.ts"
click node_media_ui "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/components/ui/admin/media-library.tsx"
click node_media_client "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/media-client.ts"
click node_media_api "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/media/route.ts"
click node_media_delete_api "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/media/%5Bid%5D/route.ts"
click node_media_service "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/media/media.service.ts"
click node_media_repository "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/media/media.repository.ts"
click node_lead_action "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.actions.ts"
click node_lead_service "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.service.ts"
click node_lead_repository "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.repository.ts"
click node_mail "https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/mail/mail.ts"

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_public_pages,node_public_sections,node_contact_form toneBlue
class node_admin_editor,node_admin_dashboard,node_auth_api,node_auth,node_database toneAmber
class node_content_api,node_content_service,node_content_repository,node_content_client,node_content_cache toneMint
class node_media_ui,node_media_client,node_media_api,node_media_delete_api,node_media_service,node_media_repository toneRose
class node_lead_action,node_lead_service,node_lead_repository,node_mail,node_visitor,node_cloudinary toneIndigo
```

## Components

### Public site

- [Public pages](https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/app/(public)): `app/(public)`
- [Page sections](https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/components/public-sections): `components/public-sections`
- [Contact form](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/components/public/contact-form.tsx): `components/public/contact-form.tsx`

### Admin CMS

- [Admin editors](https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/components/ui/admin/editors): `components/ui/admin/editors`
- [Admin workspace](https://github.com/tidjioiris07/ak-streaming-media-agency/tree/main/app/admin/(protected)): `app/admin/(protected)`
- [Auth endpoint](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/auth/%5B...all%5D/route.ts): `app/api/auth/[...all]/route.ts`
- [Authentication](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/auth.ts): `lib/auth.ts`

### Content management

- [Content API](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/content/route.ts): `app/api/content/route.ts`
- [Content service](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/content/content.service.ts): `domain/content/content.service.ts`
- [Content repository](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/content/content.repository.ts): `domain/content/content.repository.ts`
- [Content client](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/content-client.ts): `lib/content-client.ts`
- [Public content cache](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/public-content-cache.ts): `lib/public-content-cache.ts`

### Media library

- [Media library UI](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/components/ui/admin/media-library.tsx): `components/ui/admin/media-library.tsx`
- [Media client](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/media-client.ts): `lib/media-client.ts`
- [Media API](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/media/route.ts): `app/api/media/route.ts`
- [Media deletion API](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/app/api/media/%5Bid%5D/route.ts): `app/api/media/[id]/route.ts`
- [Media service](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/media/media.service.ts): `domain/media/media.service.ts`
- [Media repository](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/media/media.repository.ts): `domain/media/media.repository.ts`

### Contact leads

- [Message actions](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.actions.ts): `domain/messages/message.actions.ts`
- [Message service](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.service.ts): `domain/messages/message.service.ts`
- [Message repository](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/domain/messages/message.repository.ts): `domain/messages/message.repository.ts`
- [Email provider](https://github.com/tidjioiris07/ak-streaming-media-agency/blob/main/lib/mail/mail.ts): `lib/mail/mail.ts`

### Other components

- **Visitor**
- **Cloudinary**
- **Application database**

## Connections

- Visitor → Public pages: browses
- Public pages → Page sections: renders
- Visitor → Contact form: submits inquiry
- Contact form → Message actions: submits
- Message actions → Message service: dispatches
- Message service → Message repository: saves lead
- Message repository → Application database: writes
- Message service → Email provider: sends notification
- Admin workspace → Auth endpoint: authenticates
- Auth endpoint → Authentication: dispatches
- Admin editors → Content client: loads and saves
- Content client → Content API: requests content
- Content API → Content service: dispatches
- Content service → Content repository: reads sections
- Content repository → Application database: reads and writes
- Content service → Application database: validates and saves
- Content API → Public content cache: invalidates
- Media library UI → Media client: manages media
- Media client → Media API: lists and uploads
- Media client → Media deletion API: deletes
- Media API → Media service: dispatches
- Media deletion API → Media service: dispatches
- Media service → Media repository: reads and writes
- Media repository → Application database: reads and writes
- Media service → Cloudinary: uploads and deletes
