# abdurahmon6561/minivercel architecture

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

## Overview

Dropbin accepts inert static-site ZIPs, validates and stores their contents, then publishes a URL; it never executes uploaded code. The main workflow runs from dashboard or API upload through archive validation and deployment to public serving. GitHub import and push-triggered deployment are separate sources that converge on the deployment pipeline, with optional GitHub Actions builds. The dashboard supports project, deployment, environment, and GitHub management. Arrows follow the documented workflow and sampled callers; unsampled subsystem links are limited to README-backed behavior.

Main entry points: [`app/routers/serve.py`](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/serve.py) (Static file serving), [`web/src/App.tsx`](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/App.tsx) (Dashboard application), [`web/src/lib/api.ts`](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/lib/api.ts) (API client), [`app/routers/deployments.py`](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/deployments.py) (Upload endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deployment["Deployment pipeline"]
  node_api["FastAPI application<br/>[main.py]"]
  node_upload["Upload endpoint<br/>[deployments.py]"]
  node_stream["Multipart receiver<br/>[upload_stream.py]"]
  node_validate["ZIP validation<br/>[zipvalidate.py]"]
  node_deployer["Deployment pipeline<br/>[deployer.py]"]
end

subgraph group_delivery["Serving and storage"]
  node_serve["Static file serving<br/>[serve.py]"]
  node_host["Host routing<br/>[hostrouting.py]"]
  node_url["Public URL builder<br/>[urls.py]"]
  node_cache["Project cache<br/>[cache.py]"]
  node_store["Data access<br/>[store.py]"]
  node_supabase["Supabase client<br/>[supabase.py]"]
  node_database[("Project and deployment rows")]
  node_storage[("Public site storage")]
end

subgraph group_github["GitHub automation"]
  node_githubapi["GitHub integration<br/>[github.py]"]
  node_gitops["Import and build setup<br/>[gitops.py]"]
  node_webhook["Push webhook<br/>[webhooks.py]"]
  node_githubrouter["GitHub endpoints<br/>[github.py]"]
end

subgraph group_dashboard["Dashboard"]
  node_webapp["Dashboard application<br/>[App.tsx]"]
  node_auth["Dashboard authentication<br/>[AuthProvider.tsx]"]
  node_client["API client<br/>[api.ts]"]
  node_projects["Project management<br/>[Projects.tsx]"]
  node_newproject["Project creation<br/>[NewProject.tsx]"]
  node_importrepo["Repository import<br/>[ImportRepo.tsx]"]
  node_projectdetail["Project and deployments<br/>[ProjectDetail.tsx]"]
  node_deployments["Deployment management<br/>[deployments.py]"]
end

node_owner(("Site owner"))
node_visitor(("Site visitor"))
node_browser(("Dashboard browser"))
node_actions["GitHub Actions"]

node_owner -->|"uses"| node_browser
node_browser -->|"opens"| node_webapp
node_webapp -->|"uses"| node_auth
node_auth -->|"saves token"| node_client
node_webapp -->|"routes to"| node_projects
node_webapp -->|"routes to"| node_newproject
node_webapp -->|"routes to"| node_importrepo
node_webapp -->|"routes to"| node_projectdetail
node_projects -->|"requests"| node_client
node_newproject -->|"requests"| node_client
node_importrepo -->|"requests"| node_client
node_projectdetail -->|"requests"| node_client
node_client -->|"HTTP requests"| node_api
node_owner -->|"uploads ZIP"| node_upload
node_upload -->|"receives stream"| node_stream
node_upload -->|"validates archive"| node_validate
node_upload -->|"deploys files"| node_deployer
node_deployer -->|"writes files"| node_storage
node_deployer -->|"records deployment"| node_store
node_store -->|"queries"| node_supabase
node_supabase -->|"reads and writes"| node_database
node_supabase -->|"stores files"| node_storage
node_visitor -->|"requests site"| node_host
node_host -->|"routes site"| node_serve
node_serve -->|"resolves project"| node_cache
node_serve -->|"reads manifest"| node_store
node_serve -->|"redirects assets"| node_storage
node_serve -->|"streams HTML"| node_visitor
node_serve -->|"builds public URL"| node_url
node_importrepo -->|"imports repository"| node_githubrouter
node_githubrouter -->|"starts import"| node_gitops
node_gitops -->|"fetches repository"| node_githubapi
node_gitops -->|"deploys archive"| node_deployer
node_githubapi -.->|"configures workflow"| node_actions
node_actions -.->|"posts build output"| node_upload
node_actions -.->|"push event"| node_webhook
node_webhook -->|"matches project"| node_store
node_webhook -->|"schedules deploy"| node_deployer
node_webhook -->|"checks integration"| node_githubapi
node_projectdetail -->|"manages deployments"| node_deployments

click node_api "https://github.com/abdurahmon6561/minivercel/blob/main/app/main.py"
click node_upload "https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/deployments.py"
click node_stream "https://github.com/abdurahmon6561/minivercel/blob/main/app/upload_stream.py"
click node_validate "https://github.com/abdurahmon6561/minivercel/blob/main/app/zipvalidate.py"
click node_deployer "https://github.com/abdurahmon6561/minivercel/blob/main/app/deployer.py"
click node_serve "https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/serve.py"
click node_host "https://github.com/abdurahmon6561/minivercel/blob/main/app/hostrouting.py"
click node_url "https://github.com/abdurahmon6561/minivercel/blob/main/app/urls.py"
click node_cache "https://github.com/abdurahmon6561/minivercel/blob/main/app/cache.py"
click node_store "https://github.com/abdurahmon6561/minivercel/blob/main/app/store.py"
click node_supabase "https://github.com/abdurahmon6561/minivercel/blob/main/app/supabase.py"
click node_githubapi "https://github.com/abdurahmon6561/minivercel/blob/main/app/github.py"
click node_gitops "https://github.com/abdurahmon6561/minivercel/blob/main/app/gitops.py"
click node_webhook "https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/webhooks.py"
click node_webapp "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/App.tsx"
click node_auth "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/auth/AuthProvider.tsx"
click node_client "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/lib/api.ts"
click node_projects "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/Projects.tsx"
click node_newproject "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/NewProject.tsx"
click node_importrepo "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/ImportRepo.tsx"
click node_projectdetail "https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/ProjectDetail.tsx"
click node_deployments "https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/deployments.py"
click node_githubrouter "https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/github.py"

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_api,node_upload,node_stream,node_validate,node_deployer,node_browser toneBlue
class node_serve,node_host,node_url,node_cache,node_store,node_supabase,node_database,node_storage toneAmber
class node_githubapi,node_gitops,node_webhook,node_githubrouter toneMint
class node_webapp,node_auth,node_client,node_projects,node_newproject,node_importrepo,node_projectdetail,node_deployments toneRose
class node_owner,node_visitor,node_actions toneIndigo
```

## Components

### Deployment pipeline

- [FastAPI application](https://github.com/abdurahmon6561/minivercel/blob/main/app/main.py): `app/main.py`
- [Upload endpoint](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/deployments.py): `app/routers/deployments.py`
- [Multipart receiver](https://github.com/abdurahmon6561/minivercel/blob/main/app/upload_stream.py): `app/upload_stream.py`
- [ZIP validation](https://github.com/abdurahmon6561/minivercel/blob/main/app/zipvalidate.py): `app/zipvalidate.py`
- [Deployment pipeline](https://github.com/abdurahmon6561/minivercel/blob/main/app/deployer.py): `app/deployer.py`

### Serving and storage

- [Static file serving](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/serve.py): `app/routers/serve.py`
- [Host routing](https://github.com/abdurahmon6561/minivercel/blob/main/app/hostrouting.py): `app/hostrouting.py`
- [Public URL builder](https://github.com/abdurahmon6561/minivercel/blob/main/app/urls.py): `app/urls.py`
- [Project cache](https://github.com/abdurahmon6561/minivercel/blob/main/app/cache.py): `app/cache.py`
- [Data access](https://github.com/abdurahmon6561/minivercel/blob/main/app/store.py): `app/store.py`
- [Supabase client](https://github.com/abdurahmon6561/minivercel/blob/main/app/supabase.py): `app/supabase.py`
- **Project and deployment rows**
- **Public site storage**

### GitHub automation

- [GitHub integration](https://github.com/abdurahmon6561/minivercel/blob/main/app/github.py): `app/github.py`
- [Import and build setup](https://github.com/abdurahmon6561/minivercel/blob/main/app/gitops.py): `app/gitops.py`
- [Push webhook](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/webhooks.py): `app/routers/webhooks.py`
- [GitHub endpoints](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/github.py): `app/routers/github.py`

### Dashboard

- [Dashboard application](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/App.tsx): `web/src/App.tsx`
- [Dashboard authentication](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/auth/AuthProvider.tsx): `web/src/auth/AuthProvider.tsx`
- [API client](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/lib/api.ts): `web/src/lib/api.ts`
- [Project management](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/Projects.tsx): `web/src/pages/Projects.tsx`
- [Project creation](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/NewProject.tsx): `web/src/pages/NewProject.tsx`
- [Repository import](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/ImportRepo.tsx): `web/src/pages/ImportRepo.tsx`
- [Project and deployments](https://github.com/abdurahmon6561/minivercel/blob/main/web/src/pages/ProjectDetail.tsx): `web/src/pages/ProjectDetail.tsx`
- [Deployment management](https://github.com/abdurahmon6561/minivercel/blob/main/app/routers/deployments.py): `app/routers/deployments.py`

### Other components

- **Site owner**
- **Site visitor**
- **Dashboard browser**
- **GitHub Actions**

## Connections

- Site owner → Dashboard browser: uses
- Dashboard browser → Dashboard application: opens
- Dashboard application → Dashboard authentication: uses
- Dashboard authentication → API client: saves token
- Dashboard application → Project management: routes to
- Dashboard application → Project creation: routes to
- Dashboard application → Repository import: routes to
- Dashboard application → Project and deployments: routes to
- Project management → API client: requests
- Project creation → API client: requests
- Repository import → API client: requests
- Project and deployments → API client: requests
- API client → FastAPI application: HTTP requests
- Site owner → Upload endpoint: uploads ZIP
- Upload endpoint → Multipart receiver: receives stream
- Upload endpoint → ZIP validation: validates archive
- Upload endpoint → Deployment pipeline: deploys files
- Deployment pipeline → Public site storage: writes files
- Deployment pipeline → Data access: records deployment
- Data access → Supabase client: queries
- Supabase client → Project and deployment rows: reads and writes
- Supabase client → Public site storage: stores files
- Site visitor → Host routing: requests site
- Host routing → Static file serving: routes site
- Static file serving → Project cache: resolves project
- Static file serving → Data access: reads manifest
- Static file serving → Public site storage: redirects assets
- Static file serving → Site visitor: streams HTML
- Static file serving → Public URL builder: builds public URL
- Repository import → GitHub endpoints: imports repository
- GitHub endpoints → Import and build setup: starts import
- Import and build setup → GitHub integration: fetches repository
- Import and build setup → Deployment pipeline: deploys archive
- GitHub integration → GitHub Actions: configures workflow
- GitHub Actions → Upload endpoint: posts build output
- GitHub Actions → Push webhook: push event
- Push webhook → Data access: matches project
- Push webhook → Deployment pipeline: schedules deploy
- Push webhook → GitHub integration: checks integration
- Project and deployments → Deployment management: manages deployments
