# jashanpreet-82099/ai-builder architecture

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

- Interactive diagram: https://gitdiagram.com/jashanpreet-82099/ai-builder
- Repository: https://github.com/jashanpreet-82099/ai-builder

## Overview

Genweb.ai is a web app for generating and revising websites with AI, managing saved projects, and deploying live previews; it also provides account access and paid credit plans. The main user journey runs from the client’s generation/editor screens to the website API, which prompts OpenRouter, parses its response, and stores generated code and credit changes. Deployment saves a public slug that the live-site screen can retrieve. Billing creates Stripe checkout sessions and credits accounts through a webhook. Client-to-server wiring beyond the sampled current-user hook is not shown, so those links are omitted.

Main entry points: [`client/src/App.jsx`](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/App.jsx) (App routing), [`server/index.js`](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/index.js) (Express API), [`server/controllers/website.controllers.js`](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/website.controllers.js) (Website controller), [`server/models/user.model.js`](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/models/user.model.js) (User records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client app"]
  node_app["App routing<br/>[App.jsx]"]
  node_home["Home<br/>[Home.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_generate["Generate screen<br/>[Generate.jsx]"]
  node_editor["Website editor<br/>[Editor.jsx]"]
  node_live["Live site<br/>[LiveSite.jsx]"]
  node_pricing["Pricing<br/>[Pricing.jsx]"]
  node_currentuser["Current-user hook"]
  node_state["User state<br/>[userSlice.js]"]
end

subgraph group_websites["Website generation"]
  node_websiteroutes["Website routes<br/>[website.routes.js]"]
  node_websitecontroller["Website controller"]
  node_websitedb[("Website records<br/>[website.model.js]")]
  node_json["JSON extraction<br/>[extractJson.js]"]
end

subgraph group_accounts["Accounts and billing"]
  node_authroutes["Auth routes<br/>[auth.routes.js]"]
  node_userroutes["User routes<br/>[user.routes.js]"]
  node_billingroutes["Billing routes<br/>[billing.routes.js]"]
  node_auth["Auth controller<br/>[auth.controller.js]"]
  node_usercontroller["User controller"]
  node_billing["Billing controller"]
  node_webhook["Stripe webhook"]
  node_userdb[("User records<br/>[user.model.js]")]
end

subgraph group_platform["Server platform"]
  node_api["Express API<br/>[index.js]"]
  node_authmw["Auth middleware<br/>[isAuth.js]"]
end

node_user(("User"))
node_llm["OpenRouter<br/>[openRouter.js]"]
node_stripe["Stripe<br/>[stripe.js]"]

node_user -->|"uses"| node_app
node_app -->|"routes"| node_home
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_generate
node_app -->|"routes"| node_editor
node_app -->|"routes"| node_live
node_app -->|"routes"| node_pricing
node_app -->|"invokes"| node_currentuser
node_currentuser -->|"requests user"| node_userroutes
node_currentuser -->|"dispatches user"| node_state
node_api -->|"mounts"| node_authroutes
node_api -->|"mounts"| node_userroutes
node_api -->|"mounts"| node_websiteroutes
node_api -->|"mounts"| node_billingroutes
node_api -->|"dispatches webhook"| node_webhook
node_authroutes -->|"dispatches"| node_auth
node_userroutes -->|"guards"| node_authmw
node_userroutes -->|"dispatches"| node_usercontroller
node_websiteroutes -->|"guards"| node_authmw
node_websiteroutes -->|"dispatches"| node_websitecontroller
node_billingroutes -->|"guards"| node_authmw
node_billingroutes -->|"dispatches"| node_billing
node_auth -->|"reads and writes"| node_userdb
node_auth -->|"finds account"| node_userdb
node_usercontroller -->|"reads account"| node_userdb
node_websitecontroller -->|"reads and updates"| node_userdb
node_websitecontroller -->|"reads and writes"| node_websitedb
node_websitecontroller -->|"generates code"| node_llm
node_websitecontroller -->|"parses response"| node_json
node_billing -->|"creates checkout"| node_stripe
node_stripe -.->|"sends event"| node_webhook
node_webhook -->|"verifies event"| node_stripe
node_webhook -->|"adds credits"| node_userdb

click node_app "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/App.jsx"
click node_home "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Home.jsx"
click node_dashboard "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Dashboard.jsx"
click node_generate "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Generate.jsx"
click node_editor "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Editor.jsx"
click node_live "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/LiveSite.jsx"
click node_pricing "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Pricing.jsx"
click node_currentuser "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/hooks/useGetCurrentUser.jsx"
click node_state "https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/redux/userSlice.js"
click node_api "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/index.js"
click node_authroutes "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/auth.routes.js"
click node_userroutes "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/user.routes.js"
click node_websiteroutes "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/website.routes.js"
click node_billingroutes "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/billing.routes.js"
click node_auth "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/auth.controller.js"
click node_usercontroller "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/user.controllers.js"
click node_websitecontroller "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/website.controllers.js"
click node_billing "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/billing.controller.js"
click node_webhook "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/stripeWebhook.controller.js"
click node_authmw "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/middlewares/isAuth.js"
click node_userdb "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/models/user.model.js"
click node_websitedb "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/models/website.model.js"
click node_llm "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/config/openRouter.js"
click node_json "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/utils/extractJson.js"
click node_stripe "https://github.com/jashanpreet-82099/ai-builder/blob/main/server/config/stripe.js"

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_home,node_dashboard,node_generate,node_editor,node_live,node_pricing,node_currentuser,node_state,node_user toneBlue
class node_websiteroutes,node_websitecontroller,node_websitedb,node_json toneAmber
class node_authroutes,node_userroutes,node_billingroutes,node_auth,node_usercontroller,node_billing,node_webhook,node_userdb,node_llm toneMint
class node_api,node_authmw toneRose
class node_stripe toneTeal
```

## Components

### Client app

- [App routing](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Home](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Home.jsx): `client/src/pages/Home.jsx`
- [Dashboard](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Dashboard.jsx): `client/src/pages/Dashboard.jsx`
- [Generate screen](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Generate.jsx): `client/src/pages/Generate.jsx`
- [Website editor](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Editor.jsx): `client/src/pages/Editor.jsx`
- [Live site](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/LiveSite.jsx): `client/src/pages/LiveSite.jsx`
- [Pricing](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/pages/Pricing.jsx): `client/src/pages/Pricing.jsx`
- [Current-user hook](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/hooks/useGetCurrentUser.jsx): `client/src/hooks/useGetCurrentUser.jsx`
- [User state](https://github.com/jashanpreet-82099/ai-builder/blob/main/client/src/redux/userSlice.js): `client/src/redux/userSlice.js`

### Website generation

- [Website routes](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/website.routes.js): `server/routes/website.routes.js`
- [Website controller](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/website.controllers.js): `server/controllers/website.controllers.js`
- [Website records](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/models/website.model.js): `server/models/website.model.js`
- [JSON extraction](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/utils/extractJson.js): `server/utils/extractJson.js`

### Accounts and billing

- [Auth routes](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/auth.routes.js): `server/routes/auth.routes.js`
- [User routes](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/user.routes.js): `server/routes/user.routes.js`
- [Billing routes](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/routes/billing.routes.js): `server/routes/billing.routes.js`
- [Auth controller](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/auth.controller.js): `server/controllers/auth.controller.js`
- [User controller](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/user.controllers.js): `server/controllers/user.controllers.js`
- [Billing controller](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/billing.controller.js): `server/controllers/billing.controller.js`
- [Stripe webhook](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/controllers/stripeWebhook.controller.js): `server/controllers/stripeWebhook.controller.js`
- [User records](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/models/user.model.js): `server/models/user.model.js`

### Server platform

- [Express API](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/index.js): `server/index.js`
- [Auth middleware](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/middlewares/isAuth.js): `server/middlewares/isAuth.js`

### Other components

- **User**
- [OpenRouter](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/config/openRouter.js): `server/config/openRouter.js`
- [Stripe](https://github.com/jashanpreet-82099/ai-builder/blob/main/server/config/stripe.js): `server/config/stripe.js`

## Connections

- User → App routing: uses
- App routing → Home: routes
- App routing → Dashboard: routes
- App routing → Generate screen: routes
- App routing → Website editor: routes
- App routing → Live site: routes
- App routing → Pricing: routes
- App routing → Current-user hook: invokes
- Current-user hook → User routes: requests user
- Current-user hook → User state: dispatches user
- Express API → Auth routes: mounts
- Express API → User routes: mounts
- Express API → Website routes: mounts
- Express API → Billing routes: mounts
- Express API → Stripe webhook: dispatches webhook
- Auth routes → Auth controller: dispatches
- User routes → Auth middleware: guards
- User routes → User controller: dispatches
- Website routes → Auth middleware: guards
- Website routes → Website controller: dispatches
- Billing routes → Auth middleware: guards
- Billing routes → Billing controller: dispatches
- Auth controller → User records: reads and writes
- Auth controller → User records: finds account
- User controller → User records: reads account
- Website controller → User records: reads and updates
- Website controller → Website records: reads and writes
- Website controller → OpenRouter: generates code
- Website controller → JSON extraction: parses response
- Billing controller → Stripe: creates checkout
- Stripe → Stripe webhook: sends event
- Stripe webhook → Stripe: verifies event
- Stripe webhook → User records: adds credits
