# mauryavishal93/primeresume architecture

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

- Interactive diagram: https://gitdiagram.com/mauryavishal93/primeresume
- Repository: https://github.com/mauryavishal93/primeresume

## Overview

ResumeOut.com is a browser-based resume editor with guest and Google-account workflows. Users create or import a resume, edit and style it with templates, save it locally or in Firebase, and export it as PDF; signed-in users can also share resumes. Separate branches cover ATS checks, cover letters, account administration, and subscriptions. The README documents these capabilities, while the sampled source confirms key editor, authentication, billing-client, template-registry, and backend relationships. Several feature modules were not sampled, so their internal connections are left out.

Main entry points: [`frontend/src/main.js`](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/main.js) (Resume editor), [`backend/server.js`](https://github.com/mauryavishal93/primeresume/blob/main/backend/server.js) (Billing API), [`frontend/src/billing-client.js`](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/billing-client.js) (Billing client), [`frontend/src/firebase-cloud.js`](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js) (Google authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editing["Resume editing"]
  node_editor["Resume editor<br/>[main.js]"]
  node_wizard["Resume wizard<br/>[resume-wizard.js]"]
  node_import["Import and validation<br/>[resume-import.js]"]
  node_templates["Template registry<br/>[index.js]"]
  node_pdf["PDF export<br/>[resume-pdf.js]"]
  node_ats["ATS scoring<br/>[ats-scoring.js]"]
  node_cover["Cover letters<br/>[cover-letter.js]"]
end

subgraph group_identity["Accounts and storage"]
  node_gueststore[("Guest browser saves")]
  node_auth["Google authentication<br/>[firebase-cloud.js]"]
  node_cloudstore[("Cloud resumes<br/>[firebase-cloud.js]")]
  node_sharing["Resume sharing<br/>[firebase-cloud.js]"]
  node_account["Account navigation<br/>[auth-nav.js]"]
end

subgraph group_plans["Plans and billing"]
  node_pricing["Pricing and checkout<br/>[pricing.js]"]
  node_billingclient["Billing client<br/>[billing-client.js]"]
  node_access["Plan access gates<br/>[plan-access.js]"]
end

subgraph group_service["Backend services"]
  node_billingapi["Billing API<br/>[server.js]"]
  node_billingrules["Billing rules<br/>[billing.js]"]
  node_admin["Admin dashboard<br/>[admin.js]"]
  node_apiadapter["Vercel API adapter<br/>[handler.js]"]
  node_serverentry["Express entry<br/>[server.js]"]
end

node_visitor(("Resume user"))
node_firebase[("Firebase services")]
node_razorpay["Razorpay"]

node_visitor -->|"edits resume"| node_editor
node_editor -.->|"uses wizard"| node_wizard
node_editor -->|"imports JSON"| node_import
node_editor -->|"renders templates"| node_templates
node_editor -->|"builds PDF"| node_pdf
node_editor -->|"runs checks"| node_ats
node_editor -->|"uses tools"| node_cover
node_editor -->|"autosaves guest"| node_gueststore
node_editor -->|"signs in"| node_auth
node_editor -->|"loads and saves"| node_cloudstore
node_editor -->|"creates links"| node_sharing
node_account -->|"observes sign-in"| node_auth
node_account -->|"loads entitlement"| node_billingclient
node_pricing -.->|"starts checkout"| node_billingclient
node_editor -->|"loads plan data"| node_billingclient
node_billingclient -->|"gets ID token"| node_auth
node_billingclient -->|"requests billing API"| node_billingapi
node_billingapi -->|"uses billing rules"| node_billingrules
node_billingapi -->|"manages subscriptions"| node_razorpay
node_billingapi -->|"verifies and stores"| node_firebase
node_auth -->|"authenticates and stores"| node_firebase
node_access -->|"gates features"| node_editor
node_admin -.->|"manages plans"| node_billingapi
node_apiadapter -->|"forwards requests"| node_billingapi
node_serverentry -->|"starts app"| node_billingapi

click node_editor "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/main.js"
click node_wizard "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-wizard.js"
click node_import "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-import.js"
click node_templates "https://github.com/mauryavishal93/primeresume/blob/main/Templates/index.js"
click node_pdf "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-pdf.js"
click node_ats "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/ats-scoring.js"
click node_cover "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/cover-letter.js"
click node_gueststore "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-persistence.js"
click node_auth "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js"
click node_cloudstore "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js"
click node_sharing "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js"
click node_account "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/auth-nav.js"
click node_pricing "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/pricing.js"
click node_billingclient "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/billing-client.js"
click node_access "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/plan-access.js"
click node_billingapi "https://github.com/mauryavishal93/primeresume/blob/main/backend/server.js"
click node_billingrules "https://github.com/mauryavishal93/primeresume/blob/main/backend/billing.js"
click node_admin "https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/admin.js"
click node_apiadapter "https://github.com/mauryavishal93/primeresume/blob/main/api/handler.js"
click node_serverentry "https://github.com/mauryavishal93/primeresume/blob/main/server.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_editor,node_wizard,node_import,node_templates,node_pdf,node_ats,node_cover,node_visitor toneBlue
class node_gueststore,node_auth,node_cloudstore,node_sharing,node_account,node_firebase toneAmber
class node_pricing,node_billingclient,node_access toneMint
class node_billingapi,node_billingrules,node_admin,node_apiadapter,node_serverentry toneRose
class node_razorpay toneIndigo
```

## Components

### Resume editing

- [Resume editor](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/main.js): `frontend/src/main.js`
- [Resume wizard](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-wizard.js): `frontend/src/resume-wizard.js`
- [Import and validation](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-import.js): `frontend/src/resume-import.js`
- [Template registry](https://github.com/mauryavishal93/primeresume/blob/main/Templates/index.js): `Templates/index.js`
- [PDF export](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-pdf.js): `frontend/src/resume-pdf.js`
- [ATS scoring](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/ats-scoring.js): `frontend/src/ats-scoring.js`
- [Cover letters](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/cover-letter.js): `frontend/src/cover-letter.js`

### Accounts and storage

- [Guest browser saves](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/resume-persistence.js): `frontend/src/resume-persistence.js`
- [Google authentication](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js): `frontend/src/firebase-cloud.js`
- [Cloud resumes](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js): `frontend/src/firebase-cloud.js`
- [Resume sharing](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/firebase-cloud.js): `frontend/src/firebase-cloud.js`
- [Account navigation](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/auth-nav.js): `frontend/src/auth-nav.js`

### Plans and billing

- [Pricing and checkout](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/pricing.js): `frontend/src/pricing.js`
- [Billing client](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/billing-client.js): `frontend/src/billing-client.js`
- [Plan access gates](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/plan-access.js): `frontend/src/plan-access.js`

### Backend services

- [Billing API](https://github.com/mauryavishal93/primeresume/blob/main/backend/server.js): `backend/server.js`
- [Billing rules](https://github.com/mauryavishal93/primeresume/blob/main/backend/billing.js): `backend/billing.js`
- [Admin dashboard](https://github.com/mauryavishal93/primeresume/blob/main/frontend/src/admin.js): `frontend/src/admin.js`
- [Vercel API adapter](https://github.com/mauryavishal93/primeresume/blob/main/api/handler.js): `api/handler.js`
- [Express entry](https://github.com/mauryavishal93/primeresume/blob/main/server.js): `server.js`

### Other components

- **Resume user**
- **Firebase services**
- **Razorpay**

## Connections

- Resume user → Resume editor: edits resume (evidence: `README.md`)
- Resume editor → Resume wizard: uses wizard
- Resume editor → Import and validation: imports JSON (evidence: `frontend/src/main.js`)
- Resume editor → Template registry: renders templates (evidence: `frontend/src/main.js`)
- Resume editor → PDF export: builds PDF (evidence: `frontend/src/main.js`)
- Resume editor → ATS scoring: runs checks (evidence: `frontend/src/main.js`)
- Resume editor → Cover letters: uses tools (evidence: `frontend/src/main.js`)
- Resume editor → Guest browser saves: autosaves guest (evidence: `README.md`)
- Resume editor → Google authentication: signs in (evidence: `frontend/src/main.js`)
- Resume editor → Cloud resumes: loads and saves (evidence: `README.md`)
- Resume editor → Resume sharing: creates links (evidence: `frontend/src/main.js`)
- Account navigation → Google authentication: observes sign-in (evidence: `frontend/src/auth-nav.js`)
- Account navigation → Billing client: loads entitlement (evidence: `frontend/src/auth-nav.js`)
- Pricing and checkout → Billing client: starts checkout
- Resume editor → Billing client: loads plan data (evidence: `frontend/src/main.js`)
- Billing client → Google authentication: gets ID token (evidence: `frontend/src/billing-client.js`)
- Billing client → Billing API: requests billing API (evidence: `frontend/src/billing-client.js`)
- Billing API → Billing rules: uses billing rules (evidence: `backend/server.js`)
- Billing API → Razorpay: manages subscriptions (evidence: `README.md`)
- Billing API → Firebase services: verifies and stores (evidence: `README.md`)
- Google authentication → Firebase services: authenticates and stores (evidence: `README.md`)
- Plan access gates → Resume editor: gates features (evidence: `README.md`)
- Admin dashboard → Billing API: manages plans
- Vercel API adapter → Billing API: forwards requests (evidence: `api/handler.js`)
- Express entry → Billing API: starts app (evidence: `server.js`)
