# supanan2548/janovatech architecture

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

- Interactive diagram: https://gitdiagram.com/supanan2548/janovatech
- Repository: https://github.com/supanan2548/janovatech

## Overview

This repository provides a public agency website, a back-office content and operations interface, a NestJS API, and a browser extension that captures prospective leads. The main workflow is public-site discovery and contact, with a separate extension-to-lead-ingestion path; staff then manage content, customers, documents, and leads in the admin. The API also exposes feed-based content discovery and a staged agent-run subsystem. Relationships below follow sampled controller calls and explicit route documentation; deeper service, frontend, and agent wiring was not sampled.

Main entry points: [`admin/app/pages`](https://github.com/supanan2548/janovatech/tree/main/admin/app/pages) (Back-office UI), [`api/src/uploads/uploads.service.ts`](https://github.com/supanan2548/janovatech/blob/main/api/src/uploads/uploads.service.ts) (File uploads), [`api/src/leads/leads.controller.ts`](https://github.com/supanan2548/janovatech/blob/main/api/src/leads/leads.controller.ts) (Lead management), [`api/src/projects/projects.controller.ts`](https://github.com/supanan2548/janovatech/blob/main/api/src/projects/projects.controller.ts) (Site content)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experiences"]
  node_frontend["Public website"]
  node_admin["Back-office UI"]
end

subgraph group_api["API domains"]
  node_auth["Authentication<br/>[auth.controller.ts]"]
  node_content["Site content"]
  node_publishing["Publishing"]
  node_siteconfig["Site configuration"]
  node_services["Services catalog"]
  node_homecontent["Homepage content"]
  node_contact["Contact submissions"]
  node_customers["Customer records"]
  node_documents["Business documents"]
  node_contentdiscovery["Feed discovery"]
end

subgraph group_operations["Lead operations"]
  node_leads["Lead management"]
  node_agent["Agent runs"]
  node_audit["Audit history"]
  node_leadsservice["Lead processing<br/>[leads.service.ts]"]
  node_pipeline["Agent stages<br/>[pipeline.ts]"]
end

subgraph group_platform["Shared platform"]
  node_prisma[("Database access<br/>[prisma.service.ts]")]
  node_uploads["File uploads<br/>[uploads.service.ts]"]
end

node_visitor(("Site visitor"))
node_staff(("Admin staff"))
node_extension(("Capture extension"))
node_objectstore[("R2 storage")]
node_feeds["Content feeds"]

node_visitor -->|"browses"| node_frontend
node_staff -->|"manages"| node_admin
node_extension -->|"ingests posts"| node_leads
node_admin -->|"signs in"| node_auth
node_admin -->|"manages projects"| node_content
node_admin -->|"manages blogs"| node_publishing
node_admin -->|"updates settings"| node_siteconfig
node_admin -->|"manages services"| node_services
node_admin -->|"edits homepage"| node_homecontent
node_admin -->|"reviews submissions"| node_contact
node_admin -->|"manages customers"| node_customers
node_admin -->|"manages documents"| node_documents
node_admin -->|"curates items"| node_contentdiscovery
node_admin -->|"reviews leads"| node_leads
node_admin -->|"reviews runs"| node_agent
node_admin -->|"reviews history"| node_audit
node_contentdiscovery -->|"fetches from"| node_feeds
node_leads -->|"invokes"| node_leadsservice
node_agent -->|"uses stage order"| node_pipeline
node_content -->|"uploads images"| node_uploads
node_publishing -->|"uploads images"| node_uploads
node_siteconfig -->|"uploads assets"| node_uploads
node_services -->|"uploads images"| node_uploads
node_homecontent -->|"uploads images"| node_uploads
node_uploads -.->|"stores files"| node_objectstore

click node_frontend "https://github.com/supanan2548/janovatech/tree/main/frontend/app/pages"
click node_admin "https://github.com/supanan2548/janovatech/tree/main/admin/app/pages"
click node_auth "https://github.com/supanan2548/janovatech/blob/main/api/src/auth/auth.controller.ts"
click node_content "https://github.com/supanan2548/janovatech/blob/main/api/src/projects/projects.controller.ts"
click node_publishing "https://github.com/supanan2548/janovatech/blob/main/api/src/blogs/blogs.controller.ts"
click node_siteconfig "https://github.com/supanan2548/janovatech/blob/main/api/src/settings/settings.controller.ts"
click node_services "https://github.com/supanan2548/janovatech/blob/main/api/src/services/services.controller.ts"
click node_homecontent "https://github.com/supanan2548/janovatech/blob/main/api/src/home-content/home-content.controller.ts"
click node_contact "https://github.com/supanan2548/janovatech/blob/main/api/src/contact/contact.controller.ts"
click node_customers "https://github.com/supanan2548/janovatech/blob/main/api/src/customers/customers.controller.ts"
click node_documents "https://github.com/supanan2548/janovatech/blob/main/api/src/documents/documents.controller.ts"
click node_contentdiscovery "https://github.com/supanan2548/janovatech/blob/main/api/src/content/content.controller.ts"
click node_leads "https://github.com/supanan2548/janovatech/blob/main/api/src/leads/leads.controller.ts"
click node_agent "https://github.com/supanan2548/janovatech/blob/main/api/src/agent/agent-runs.controller.ts"
click node_audit "https://github.com/supanan2548/janovatech/blob/main/api/src/audit/audit.controller.ts"
click node_leadsservice "https://github.com/supanan2548/janovatech/blob/main/api/src/leads/leads.service.ts"
click node_pipeline "https://github.com/supanan2548/janovatech/blob/main/api/src/agent/pipeline.ts"
click node_prisma "https://github.com/supanan2548/janovatech/blob/main/api/src/prisma/prisma.service.ts"
click node_uploads "https://github.com/supanan2548/janovatech/blob/main/api/src/uploads/uploads.service.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_frontend,node_admin toneBlue
class node_auth,node_content,node_publishing,node_siteconfig,node_services,node_homecontent,node_contact,node_customers,node_documents,node_contentdiscovery,node_objectstore toneAmber
class node_leads,node_agent,node_audit,node_leadsservice,node_pipeline toneMint
class node_prisma,node_uploads toneRose
class node_visitor,node_staff,node_extension,node_feeds toneIndigo
```

## Components

### Web experiences

- [Public website](https://github.com/supanan2548/janovatech/tree/main/frontend/app/pages): `frontend/app/pages`
- [Back-office UI](https://github.com/supanan2548/janovatech/tree/main/admin/app/pages): `admin/app/pages`

### API domains

- [Authentication](https://github.com/supanan2548/janovatech/blob/main/api/src/auth/auth.controller.ts): `api/src/auth/auth.controller.ts`
- [Site content](https://github.com/supanan2548/janovatech/blob/main/api/src/projects/projects.controller.ts): `api/src/projects/projects.controller.ts`
- [Publishing](https://github.com/supanan2548/janovatech/blob/main/api/src/blogs/blogs.controller.ts): `api/src/blogs/blogs.controller.ts`
- [Site configuration](https://github.com/supanan2548/janovatech/blob/main/api/src/settings/settings.controller.ts): `api/src/settings/settings.controller.ts`
- [Services catalog](https://github.com/supanan2548/janovatech/blob/main/api/src/services/services.controller.ts): `api/src/services/services.controller.ts`
- [Homepage content](https://github.com/supanan2548/janovatech/blob/main/api/src/home-content/home-content.controller.ts): `api/src/home-content/home-content.controller.ts`
- [Contact submissions](https://github.com/supanan2548/janovatech/blob/main/api/src/contact/contact.controller.ts): `api/src/contact/contact.controller.ts`
- [Customer records](https://github.com/supanan2548/janovatech/blob/main/api/src/customers/customers.controller.ts): `api/src/customers/customers.controller.ts`
- [Business documents](https://github.com/supanan2548/janovatech/blob/main/api/src/documents/documents.controller.ts): `api/src/documents/documents.controller.ts`
- [Feed discovery](https://github.com/supanan2548/janovatech/blob/main/api/src/content/content.controller.ts): `api/src/content/content.controller.ts`

### Lead operations

- [Lead management](https://github.com/supanan2548/janovatech/blob/main/api/src/leads/leads.controller.ts): `api/src/leads/leads.controller.ts`
- [Agent runs](https://github.com/supanan2548/janovatech/blob/main/api/src/agent/agent-runs.controller.ts): `api/src/agent/agent-runs.controller.ts`
- [Audit history](https://github.com/supanan2548/janovatech/blob/main/api/src/audit/audit.controller.ts): `api/src/audit/audit.controller.ts`
- [Lead processing](https://github.com/supanan2548/janovatech/blob/main/api/src/leads/leads.service.ts): `api/src/leads/leads.service.ts`
- [Agent stages](https://github.com/supanan2548/janovatech/blob/main/api/src/agent/pipeline.ts): `api/src/agent/pipeline.ts`

### Shared platform

- [Database access](https://github.com/supanan2548/janovatech/blob/main/api/src/prisma/prisma.service.ts): `api/src/prisma/prisma.service.ts`
- [File uploads](https://github.com/supanan2548/janovatech/blob/main/api/src/uploads/uploads.service.ts): `api/src/uploads/uploads.service.ts`

### Other components

- **Site visitor**
- **Admin staff**
- **Capture extension**
- **R2 storage**
- **Content feeds**

## Connections

- Site visitor → Public website: browses
- Admin staff → Back-office UI: manages
- Capture extension → Lead management: ingests posts
- Back-office UI → Authentication: signs in
- Back-office UI → Site content: manages projects
- Back-office UI → Publishing: manages blogs
- Back-office UI → Site configuration: updates settings
- Back-office UI → Services catalog: manages services
- Back-office UI → Homepage content: edits homepage
- Back-office UI → Contact submissions: reviews submissions
- Back-office UI → Customer records: manages customers
- Back-office UI → Business documents: manages documents
- Back-office UI → Feed discovery: curates items
- Back-office UI → Lead management: reviews leads
- Back-office UI → Agent runs: reviews runs
- Back-office UI → Audit history: reviews history
- Feed discovery → Content feeds: fetches from
- Lead management → Lead processing: invokes
- Agent runs → Agent stages: uses stage order
- Site content → File uploads: uploads images
- Publishing → File uploads: uploads images
- Site configuration → File uploads: uploads assets
- Services catalog → File uploads: uploads images
- Homepage content → File uploads: uploads images
- File uploads → R2 storage: stores files
