# devanshuk3/printr_backend architecture

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

## Overview

Printr is a mobile print-ordering app backed by an Express API. Users authenticate, select and configure a document, obtain server-side pricing, and use vendor/payment information to complete a print order. The app also includes email verification, Google sign-in, vendor administration, and maintenance operations. The print-settings excerpt directly confirms pricing and vendor API calls; route internals and file-storage wiring were not sampled, so those details are represented only where the tree supports a subsystem, without asserting uncertain connections.

Main entry points: [`backend/index.js`](https://github.com/devanshuk3/printr_backend/blob/main/backend/index.js) (API server), [`backend/routes/auth.js`](https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/auth.js) (Auth routes), [`mobile-app/app/(auth)/signup.tsx`](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(auth)/signup.tsx) (Sign-up), [`mobile-app/app/(main)/print-preferences.tsx`](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(main)/print-preferences.tsx) (Print settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile app"]
  node_entry["Session entry<br/>[index.tsx]"]
  node_signup["Sign-up<br/>[signup.tsx]"]
  node_home["Home<br/>[home.tsx]"]
  node_print["Print settings"]
  node_preview["File preview"]
  node_adminvendors["Vendor dashboard<br/>[vendors.tsx]"]
  node_authstore[("Auth storage<br/>[authStorage.ts]")]
end

subgraph group_backend["Backend API"]
  node_api["API server<br/>[index.js]"]
  node_authroutes["Auth routes<br/>[auth.js]"]
  node_vendorroutes["Vendor routes<br/>[vendors.js]"]
  node_paymentroutes["Payment routes<br/>[payment.js]"]
  node_authmw["Token authentication<br/>[auth.js]"]
  node_rolemw["Role authorization<br/>[roleAuth.js]"]
  node_pricing["Pricing logic<br/>[pricing.js]"]
  node_cleanup["Cleanup jobs<br/>[cleanup.js]"]
end

subgraph group_services["Data and integrations"]
  node_db[("Application database<br/>[db.js]")]
  node_r2["Object storage<br/>[r2.js]"]
  node_mailer["Email delivery<br/>[mailer.js]"]
end

node_user(("Print customer"))
node_admin(("Administrator"))
node_google(("Google sign-in"))

node_user -->|"opens app"| node_entry
node_entry -->|"reads session"| node_authstore
node_entry -->|"verifies session"| node_authroutes
node_entry -->|"routes authenticated"| node_home
node_user -->|"registers"| node_signup
node_signup -->|"submits account"| node_authroutes
node_signup -->|"saves session"| node_authstore
node_signup -.->|"requests identity"| node_google
node_signup -->|"routes after signup"| node_home
node_user -->|"configures print"| node_print
node_print -->|"previews document"| node_preview
node_print -->|"reads token"| node_authstore
node_print -->|"requests pricing"| node_paymentroutes
node_print -->|"verifies vendor"| node_vendorroutes
node_admin -->|"views vendors"| node_adminvendors
node_adminvendors -->|"fetches vendors"| node_vendorroutes
node_api -->|"dispatches auth"| node_authroutes
node_api -->|"dispatches vendors"| node_vendorroutes
node_api -->|"dispatches payments"| node_paymentroutes
node_api -->|"starts cleanup"| node_cleanup
node_api -->|"checks connection"| node_db
node_authroutes -->|"protects endpoints"| node_authmw
node_authroutes -->|"queries accounts"| node_db
node_authroutes -->|"sends verification"| node_mailer
node_authroutes -.->|"verifies identity"| node_google
node_vendorroutes -->|"authenticates requests"| node_authmw
node_vendorroutes -->|"queries vendors"| node_db
node_paymentroutes -->|"authenticates requests"| node_authmw
node_paymentroutes -->|"calculates price"| node_pricing
node_paymentroutes -->|"reads payment data"| node_db
node_api -->|"protects cleanup"| node_authmw
node_api -->|"checks admin role"| node_rolemw
node_cleanup -->|"cleans stored files"| node_r2
node_cleanup -->|"cleans history"| node_db

click node_entry "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/index.tsx"
click node_signup "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(auth)/signup.tsx"
click node_home "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(main)/home.tsx"
click node_print "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(main)/print-preferences.tsx"
click node_preview "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/components/modals/FilePreviewModal.tsx"
click node_adminvendors "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(admin)/vendors.tsx"
click node_authstore "https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/utils/authStorage.ts"
click node_api "https://github.com/devanshuk3/printr_backend/blob/main/backend/index.js"
click node_authroutes "https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/auth.js"
click node_vendorroutes "https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/vendors.js"
click node_paymentroutes "https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/payment.js"
click node_authmw "https://github.com/devanshuk3/printr_backend/blob/main/backend/middleware/auth.js"
click node_rolemw "https://github.com/devanshuk3/printr_backend/blob/main/backend/middleware/roleAuth.js"
click node_pricing "https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/pricing.js"
click node_cleanup "https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/cleanup.js"
click node_db "https://github.com/devanshuk3/printr_backend/blob/main/backend/db.js"
click node_r2 "https://github.com/devanshuk3/printr_backend/blob/main/backend/r2.js"
click node_mailer "https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/mailer.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_entry,node_signup,node_home,node_print,node_preview,node_adminvendors,node_authstore toneBlue
class node_api,node_authroutes,node_vendorroutes,node_paymentroutes,node_authmw,node_rolemw,node_pricing,node_cleanup toneAmber
class node_db,node_r2,node_mailer toneMint
class node_user,node_admin,node_google toneIndigo
```

## Components

### Mobile app

- [Session entry](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/index.tsx): `mobile-app/app/index.tsx`
- [Sign-up](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(auth)/signup.tsx): `mobile-app/app/(auth)/signup.tsx`
- [Home](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(main)/home.tsx): `mobile-app/app/(main)/home.tsx`
- [Print settings](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(main)/print-preferences.tsx): `mobile-app/app/(main)/print-preferences.tsx`
- [File preview](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/components/modals/FilePreviewModal.tsx): `mobile-app/components/modals/FilePreviewModal.tsx`
- [Vendor dashboard](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/app/(admin)/vendors.tsx): `mobile-app/app/(admin)/vendors.tsx`
- [Auth storage](https://github.com/devanshuk3/printr_backend/blob/main/mobile-app/utils/authStorage.ts): `mobile-app/utils/authStorage.ts`

### Backend API

- [API server](https://github.com/devanshuk3/printr_backend/blob/main/backend/index.js): `backend/index.js`
- [Auth routes](https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [Vendor routes](https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/vendors.js): `backend/routes/vendors.js`
- [Payment routes](https://github.com/devanshuk3/printr_backend/blob/main/backend/routes/payment.js): `backend/routes/payment.js`
- [Token authentication](https://github.com/devanshuk3/printr_backend/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`
- [Role authorization](https://github.com/devanshuk3/printr_backend/blob/main/backend/middleware/roleAuth.js): `backend/middleware/roleAuth.js`
- [Pricing logic](https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/pricing.js): `backend/utils/pricing.js`
- [Cleanup jobs](https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/cleanup.js): `backend/utils/cleanup.js`

### Data and integrations

- [Application database](https://github.com/devanshuk3/printr_backend/blob/main/backend/db.js): `backend/db.js`
- [Object storage](https://github.com/devanshuk3/printr_backend/blob/main/backend/r2.js): `backend/r2.js`
- [Email delivery](https://github.com/devanshuk3/printr_backend/blob/main/backend/utils/mailer.js): `backend/utils/mailer.js`

### Other components

- **Print customer**
- **Administrator**
- **Google sign-in**

## Connections

- Print customer → Session entry: opens app
- Session entry → Auth storage: reads session
- Session entry → Auth routes: verifies session
- Session entry → Home: routes authenticated
- Print customer → Sign-up: registers
- Sign-up → Auth routes: submits account
- Sign-up → Auth storage: saves session
- Sign-up → Google sign-in: requests identity
- Sign-up → Home: routes after signup
- Print customer → Print settings: configures print
- Print settings → File preview: previews document
- Print settings → Auth storage: reads token
- Print settings → Payment routes: requests pricing
- Print settings → Vendor routes: verifies vendor
- Administrator → Vendor dashboard: views vendors
- Vendor dashboard → Vendor routes: fetches vendors
- API server → Auth routes: dispatches auth
- API server → Vendor routes: dispatches vendors
- API server → Payment routes: dispatches payments
- API server → Cleanup jobs: starts cleanup
- API server → Application database: checks connection
- Auth routes → Token authentication: protects endpoints
- Auth routes → Application database: queries accounts
- Auth routes → Email delivery: sends verification
- Auth routes → Google sign-in: verifies identity
- Vendor routes → Token authentication: authenticates requests
- Vendor routes → Application database: queries vendors
- Payment routes → Token authentication: authenticates requests
- Payment routes → Pricing logic: calculates price
- Payment routes → Application database: reads payment data
- API server → Token authentication: protects cleanup
- API server → Role authorization: checks admin role
- Cleanup jobs → Object storage: cleans stored files
- Cleanup jobs → Application database: cleans history
