# abhimahto/instanttool architecture

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

## Overview

InstantTools is a browser-facing passport-photo and PDF toolkit. Users start at the tool directory, choose a routed tool, provide files or settings, and receive processed output; PDF operations are described as local, with shared processing helpers for previews and file exports. Passport-photo processing differs: the sampled page calls an Express API for background removal and enhancement, which in turn uses external services. The README also lists reordering and offline/PWA support, but their implementation is not evidenced in the sampled source or tree.

Main entry points: [`src/App.jsx`](https://github.com/abhimahto/instanttool/blob/main/src/App.jsx) (Route app), [`src/pages/Index.jsx`](https://github.com/abhimahto/instanttool/blob/main/src/pages/Index.jsx) (Tool directory), [`src/lib/pdf-utils.js`](https://github.com/abhimahto/instanttool/blob/main/src/lib/pdf-utils.js) (PDF utilities), [`server/index.js`](https://github.com/abhimahto/instanttool/blob/main/server/index.js) (Passport API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and navigation"]
  node_app["Route app<br/>[App.jsx]"]
  node_home["Tool directory<br/>[Index.jsx]"]
end

subgraph group_pdf["PDF operations"]
  node_merge["Merge PDFs<br/>[MergePdf.jsx]"]
  node_split["Split PDF<br/>[SplitPdf.jsx]"]
  node_compress["Compress PDF<br/>[CompressPdf.jsx]"]
  node_pdfimages["PDF to images<br/>[PdfToImages.jsx]"]
  node_imagespdf["Images to PDF<br/>[ImagesToPdf.jsx]"]
  node_rotate["Rotate pages<br/>[RotatePdf.jsx]"]
  node_extract["Extract pages<br/>[ExtractPages.jsx]"]
  node_remove["Remove pages<br/>[RemovePages.jsx]"]
  node_watermark["Add watermark<br/>[WatermarkPdf.jsx]"]
  node_metadata["Edit metadata<br/>[MetadataEditor.jsx]"]
  node_protect["Protect PDF<br/>[ProtectPdf.jsx]"]
  node_unlock["Unlock PDF<br/>[UnlockPdf.jsx]"]
  node_pdfutil["PDF utilities<br/>[pdf-utils.js]"]
end

subgraph group_photo["Passport photo"]
  node_passport["Passport studio<br/>[PassportPhoto.jsx]"]
end

subgraph group_services["Processing services"]
  node_server["Passport API<br/>[index.js]"]
end

node_user(("User"))
node_removebg["remove.bg"]
node_openai["OpenAI"]

node_user -->|"opens"| node_app
node_app -->|"routes"| node_home
node_app -->|"routes"| node_merge
node_app -->|"routes"| node_split
node_app -->|"routes"| node_compress
node_app -->|"routes"| node_pdfimages
node_app -->|"routes"| node_imagespdf
node_app -->|"routes"| node_rotate
node_app -->|"routes"| node_extract
node_app -->|"routes"| node_remove
node_app -->|"routes"| node_watermark
node_app -->|"routes"| node_metadata
node_app -->|"routes"| node_protect
node_app -->|"routes"| node_unlock
node_app -->|"routes"| node_passport
node_home -->|"links to"| node_merge
node_home -->|"links to"| node_split
node_home -->|"links to"| node_compress
node_home -->|"links to"| node_pdfimages
node_home -->|"links to"| node_imagespdf
node_home -->|"links to"| node_rotate
node_home -->|"links to"| node_extract
node_home -->|"links to"| node_remove
node_home -->|"links to"| node_watermark
node_home -->|"links to"| node_metadata
node_home -->|"links to"| node_protect
node_home -->|"links to"| node_unlock
node_home -->|"links to"| node_passport
node_merge -->|"uses"| node_pdfutil
node_split -->|"uses"| node_pdfutil
node_compress -->|"uses"| node_pdfutil
node_pdfimages -->|"uses"| node_pdfutil
node_imagespdf -->|"uses"| node_pdfutil
node_rotate -->|"uses"| node_pdfutil
node_extract -->|"uses"| node_pdfutil
node_remove -->|"uses"| node_pdfutil
node_watermark -->|"uses"| node_pdfutil
node_metadata -->|"uses"| node_pdfutil
node_protect -->|"uses"| node_pdfutil
node_unlock -->|"uses"| node_pdfutil
node_passport -->|"posts photo"| node_server
node_server -->|"requests removal"| node_removebg
node_server -->|"requests analysis"| node_openai

click node_app "https://github.com/abhimahto/instanttool/blob/main/src/App.jsx"
click node_home "https://github.com/abhimahto/instanttool/blob/main/src/pages/Index.jsx"
click node_merge "https://github.com/abhimahto/instanttool/blob/main/src/pages/MergePdf.jsx"
click node_split "https://github.com/abhimahto/instanttool/blob/main/src/pages/SplitPdf.jsx"
click node_compress "https://github.com/abhimahto/instanttool/blob/main/src/pages/CompressPdf.jsx"
click node_pdfimages "https://github.com/abhimahto/instanttool/blob/main/src/pages/PdfToImages.jsx"
click node_imagespdf "https://github.com/abhimahto/instanttool/blob/main/src/pages/ImagesToPdf.jsx"
click node_rotate "https://github.com/abhimahto/instanttool/blob/main/src/pages/RotatePdf.jsx"
click node_extract "https://github.com/abhimahto/instanttool/blob/main/src/pages/ExtractPages.jsx"
click node_remove "https://github.com/abhimahto/instanttool/blob/main/src/pages/RemovePages.jsx"
click node_watermark "https://github.com/abhimahto/instanttool/blob/main/src/pages/WatermarkPdf.jsx"
click node_metadata "https://github.com/abhimahto/instanttool/blob/main/src/pages/MetadataEditor.jsx"
click node_protect "https://github.com/abhimahto/instanttool/blob/main/src/pages/ProtectPdf.jsx"
click node_unlock "https://github.com/abhimahto/instanttool/blob/main/src/pages/UnlockPdf.jsx"
click node_pdfutil "https://github.com/abhimahto/instanttool/blob/main/src/lib/pdf-utils.js"
click node_passport "https://github.com/abhimahto/instanttool/blob/main/src/pages/PassportPhoto.jsx"
click node_server "https://github.com/abhimahto/instanttool/blob/main/server/index.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_user toneBlue
class node_merge,node_split,node_compress,node_pdfimages,node_imagespdf,node_rotate,node_extract,node_remove,node_watermark,node_metadata,node_protect,node_unlock,node_pdfutil toneAmber
class node_passport toneMint
class node_server toneRose
class node_removebg,node_openai toneIndigo
```

## Components

### App entry and navigation

- [Route app](https://github.com/abhimahto/instanttool/blob/main/src/App.jsx): `src/App.jsx`
- [Tool directory](https://github.com/abhimahto/instanttool/blob/main/src/pages/Index.jsx): `src/pages/Index.jsx`

### PDF operations

- [Merge PDFs](https://github.com/abhimahto/instanttool/blob/main/src/pages/MergePdf.jsx): `src/pages/MergePdf.jsx`
- [Split PDF](https://github.com/abhimahto/instanttool/blob/main/src/pages/SplitPdf.jsx): `src/pages/SplitPdf.jsx`
- [Compress PDF](https://github.com/abhimahto/instanttool/blob/main/src/pages/CompressPdf.jsx): `src/pages/CompressPdf.jsx`
- [PDF to images](https://github.com/abhimahto/instanttool/blob/main/src/pages/PdfToImages.jsx): `src/pages/PdfToImages.jsx`
- [Images to PDF](https://github.com/abhimahto/instanttool/blob/main/src/pages/ImagesToPdf.jsx): `src/pages/ImagesToPdf.jsx`
- [Rotate pages](https://github.com/abhimahto/instanttool/blob/main/src/pages/RotatePdf.jsx): `src/pages/RotatePdf.jsx`
- [Extract pages](https://github.com/abhimahto/instanttool/blob/main/src/pages/ExtractPages.jsx): `src/pages/ExtractPages.jsx`
- [Remove pages](https://github.com/abhimahto/instanttool/blob/main/src/pages/RemovePages.jsx): `src/pages/RemovePages.jsx`
- [Add watermark](https://github.com/abhimahto/instanttool/blob/main/src/pages/WatermarkPdf.jsx): `src/pages/WatermarkPdf.jsx`
- [Edit metadata](https://github.com/abhimahto/instanttool/blob/main/src/pages/MetadataEditor.jsx): `src/pages/MetadataEditor.jsx`
- [Protect PDF](https://github.com/abhimahto/instanttool/blob/main/src/pages/ProtectPdf.jsx): `src/pages/ProtectPdf.jsx`
- [Unlock PDF](https://github.com/abhimahto/instanttool/blob/main/src/pages/UnlockPdf.jsx): `src/pages/UnlockPdf.jsx`
- [PDF utilities](https://github.com/abhimahto/instanttool/blob/main/src/lib/pdf-utils.js): `src/lib/pdf-utils.js`

### Passport photo

- [Passport studio](https://github.com/abhimahto/instanttool/blob/main/src/pages/PassportPhoto.jsx): `src/pages/PassportPhoto.jsx`

### Processing services

- [Passport API](https://github.com/abhimahto/instanttool/blob/main/server/index.js): `server/index.js`

### Other components

- **User**
- **remove.bg**
- **OpenAI**

## Connections

- User → Route app: opens
- Route app → Tool directory: routes
- Route app → Merge PDFs: routes
- Route app → Split PDF: routes
- Route app → Compress PDF: routes
- Route app → PDF to images: routes
- Route app → Images to PDF: routes
- Route app → Rotate pages: routes
- Route app → Extract pages: routes
- Route app → Remove pages: routes
- Route app → Add watermark: routes
- Route app → Edit metadata: routes
- Route app → Protect PDF: routes
- Route app → Unlock PDF: routes
- Route app → Passport studio: routes
- Tool directory → Merge PDFs: links to
- Tool directory → Split PDF: links to
- Tool directory → Compress PDF: links to
- Tool directory → PDF to images: links to
- Tool directory → Images to PDF: links to
- Tool directory → Rotate pages: links to
- Tool directory → Extract pages: links to
- Tool directory → Remove pages: links to
- Tool directory → Add watermark: links to
- Tool directory → Edit metadata: links to
- Tool directory → Protect PDF: links to
- Tool directory → Unlock PDF: links to
- Tool directory → Passport studio: links to
- Merge PDFs → PDF utilities: uses
- Split PDF → PDF utilities: uses
- Compress PDF → PDF utilities: uses
- PDF to images → PDF utilities: uses
- Images to PDF → PDF utilities: uses
- Rotate pages → PDF utilities: uses
- Extract pages → PDF utilities: uses
- Remove pages → PDF utilities: uses
- Add watermark → PDF utilities: uses
- Edit metadata → PDF utilities: uses
- Protect PDF → PDF utilities: uses
- Unlock PDF → PDF utilities: uses
- Passport studio → Passport API: posts photo
- Passport API → remove.bg: requests removal
- Passport API → OpenAI: requests analysis
