# vanhuugiacuong/angularpinterest architecture

> Architecture diagram of the GitHub repository vanhuugiacuong/angularpinterest, 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/vanhuugiacuong/angularpinterest
- Repository: https://github.com/vanhuugiacuong/angularpinterest

## Overview

This is an authenticated visual-discovery and creator marketplace: users browse and search pins, publish images or AI-generated work, organize boards, and interact through follows, messaging, memberships, and commerce. The graph emphasizes browsing/publishing and the backend API boundary, while retaining collage, image search, auctions, watermarking, and payments as distinct capabilities. Controller-to-service links are directly evidenced; backend service internals and most frontend request wiring were not sampled, so uncertain wiring is omitted.

Main entry points: [`backend/src/pins/pins.controller.ts`](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.controller.ts) (Pins controller), [`frontend/src/app/app.routes.ts`](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/app.routes.ts) (App routes), [`backend/src/pins/pins.service.ts`](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.service.ts) (Pins service), [`frontend/src/app/core/services/pin.ts`](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/core/services/pin.ts) (Pin API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web["Angular app<br/>[app.ts]"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_pinui["Feed and pin views<br/>[home.ts]"]
  node_createui["Create and collage<br/>[create.ts]"]
  node_pinapi["Pin API<br/>[pin.ts]"]
end

subgraph group_content["Pins and discovery"]
  node_pincontroller["Pins controller<br/>[pins.controller.ts]"]
  node_pinservice["Pins service<br/>[pins.service.ts]"]
  node_ai["AI generation"]
  node_clip["CLIP search service<br/>[main.py]"]
  node_boardcontroller["Boards controller"]
  node_boardservice["Boards service<br/>[boards.service.ts]"]
  node_db[("Application database<br/>[prisma.service.ts]")]
  node_storage[("Supabase storage")]
end

subgraph group_community["Community"]
  node_usercontroller["Users controller"]
  node_userservice["Users service<br/>[users.service.ts]"]
  node_messaging["Messaging API"]
  node_notifications["Notifications API"]
end

subgraph group_commerce["Creator commerce"]
  node_auction["Auction API"]
  node_payments["Membership payments"]
  node_watermark["Watermark presets"]
end

node_user(("User"))
node_supabase["Supabase auth"]

node_user -->|"uses"| node_web
node_web -->|"routes"| node_routes
node_routes -->|"opens feed"| node_pinui
node_routes -->|"opens editor"| node_createui
node_pinui -->|"requests pins"| node_pinapi
node_createui -->|"publishes pins"| node_pinapi
node_pinapi -->|"HTTP requests"| node_pincontroller
node_pincontroller -->|"delegates"| node_pinservice
node_pincontroller -->|"authenticates"| node_supabase
node_pincontroller -->|"saves generated work"| node_ai
node_pincontroller -.->|"image search"| node_clip
node_pinservice -->|"reads and writes"| node_db
node_pinservice -->|"stores images"| node_storage
node_boardcontroller -->|"delegates"| node_boardservice
node_boardservice -->|"reads and writes"| node_db
node_usercontroller -->|"delegates"| node_userservice
node_userservice -->|"reads and writes"| node_db
node_messaging -->|"authenticates"| node_supabase
node_notifications -->|"authenticates"| node_supabase
node_auction -->|"authenticates"| node_supabase
node_payments -->|"authenticates"| node_supabase
node_watermark -->|"authenticates"| node_supabase

click node_web "https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/app.ts"
click node_routes "https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/app.routes.ts"
click node_pinui "https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/features/home/home.ts"
click node_createui "https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/features/create/create.ts"
click node_pinapi "https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/core/services/pin.ts"
click node_pincontroller "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.controller.ts"
click node_pinservice "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.service.ts"
click node_ai "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/ai-generator/ai-generator.service.ts"
click node_clip "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/services/clip-service/main.py"
click node_boardcontroller "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/boards/boards.controller.ts"
click node_boardservice "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/boards/boards.service.ts"
click node_db "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/database/prisma.service.ts"
click node_storage "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/supabase/supabase.service.ts"
click node_usercontroller "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/users/users.controller.ts"
click node_userservice "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/users/users.service.ts"
click node_messaging "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/messaging/message-requests.controller.ts"
click node_notifications "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/notifications/notifications.controller.ts"
click node_auction "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/auctions/auctions.controller.ts"
click node_payments "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/memberships/payments.controller.ts"
click node_watermark "https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/watermark/watermark-presets.controller.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_web,node_routes,node_pinui,node_createui,node_pinapi,node_user toneBlue
class node_pincontroller,node_pinservice,node_ai,node_clip,node_boardcontroller,node_boardservice,node_db,node_storage toneAmber
class node_usercontroller,node_userservice,node_messaging,node_notifications toneMint
class node_auction,node_payments,node_watermark toneRose
class node_supabase toneIndigo
```

## Components

### Web client

- [Angular app](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/app.ts): `frontend/src/app/app.ts`
- [App routes](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Feed and pin views](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/features/home/home.ts): `frontend/src/app/features/home/home.ts`
- [Create and collage](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/features/create/create.ts): `frontend/src/app/features/create/create.ts`
- [Pin API](https://github.com/vanhuugiacuong/angularpinterest/blob/master/frontend/src/app/core/services/pin.ts): `frontend/src/app/core/services/pin.ts`

### Pins and discovery

- [Pins controller](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.controller.ts): `backend/src/pins/pins.controller.ts`
- [Pins service](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/pins/pins.service.ts): `backend/src/pins/pins.service.ts`
- [AI generation](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/ai-generator/ai-generator.service.ts): `backend/src/ai-generator/ai-generator.service.ts`
- [CLIP search service](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/services/clip-service/main.py): `backend/services/clip-service/main.py`
- [Boards controller](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/boards/boards.controller.ts): `backend/src/boards/boards.controller.ts`
- [Boards service](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/boards/boards.service.ts): `backend/src/boards/boards.service.ts`
- [Application database](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/database/prisma.service.ts): `backend/src/database/prisma.service.ts`
- [Supabase storage](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/supabase/supabase.service.ts): `backend/src/supabase/supabase.service.ts`

### Community

- [Users controller](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/users/users.controller.ts): `backend/src/users/users.controller.ts`
- [Users service](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/users/users.service.ts): `backend/src/users/users.service.ts`
- [Messaging API](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/messaging/message-requests.controller.ts): `backend/src/messaging/message-requests.controller.ts`
- [Notifications API](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/notifications/notifications.controller.ts): `backend/src/notifications/notifications.controller.ts`

### Creator commerce

- [Auction API](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/auctions/auctions.controller.ts): `backend/src/auctions/auctions.controller.ts`
- [Membership payments](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/memberships/payments.controller.ts): `backend/src/memberships/payments.controller.ts`
- [Watermark presets](https://github.com/vanhuugiacuong/angularpinterest/blob/master/backend/src/watermark/watermark-presets.controller.ts): `backend/src/watermark/watermark-presets.controller.ts`

### Other components

- **User**
- **Supabase auth**

## Connections

- User → Angular app: uses
- Angular app → App routes: routes
- App routes → Feed and pin views: opens feed
- App routes → Create and collage: opens editor
- Feed and pin views → Pin API: requests pins
- Create and collage → Pin API: publishes pins
- Pin API → Pins controller: HTTP requests
- Pins controller → Pins service: delegates
- Pins controller → Supabase auth: authenticates
- Pins controller → AI generation: saves generated work
- Pins controller → CLIP search service: image search
- Pins service → Application database: reads and writes
- Pins service → Supabase storage: stores images
- Boards controller → Boards service: delegates
- Boards service → Application database: reads and writes
- Users controller → Users service: delegates
- Users service → Application database: reads and writes
- Messaging API → Supabase auth: authenticates
- Notifications API → Supabase auth: authenticates
- Auction API → Supabase auth: authenticates
- Membership payments → Supabase auth: authenticates
- Watermark presets → Supabase auth: authenticates
