# sami-sial/subscription-based-file-management architecture

> Architecture diagram of the GitHub repository sami-sial/subscription-based-file-management, 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/sami-sial/subscription-based-file-management
- Repository: https://github.com/sami-sial/subscription-based-file-management

## Overview

File Cloud Drive is a subscription-based storage SaaS: users authenticate, choose plans, then manage files and folders subject to plan limits; administrators manage plans and monitor usage. The backend exposes separate authentication, user, admin, and Stripe routes, with controllers enforcing domain rules through Prisma. The README documents Stripe checkout/webhooks and native mobile shells; sampled excerpts do not show all frontend API calls or Stripe controller internals, so those relationships are shown only where documented or explicit.

Main entry points: [`backend/index.js`](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/index.js) (Express API), [`backend/routes/user.routes.js`](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/user.routes.js) (User routes), [`backend/routes/auth.routes.js`](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/auth.routes.js) (Auth routes), [`backend/routes/admin.routes.js`](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/admin.routes.js) (Admin routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_authui["Auth screens"]
  node_authroutes["Auth routes<br/>[auth.routes.js]"]
  node_authcontroller["Auth workflows"]
  node_authguard["JWT access guard<br/>[auth.middleware.js]"]
  node_mailer["Email delivery<br/>[mailer.js]"]
end

subgraph group_plans["Subscriptions"]
  node_planui["Plan screens<br/>[page.jsx]"]
  node_paymentui["Payment screens<br/>[page.jsx]"]
  node_striperoutes["Stripe routes<br/>[stripe.routes.js]"]
  node_stripecontroller["Stripe workflows"]
end

subgraph group_storage["File storage"]
  node_userui["User dashboard"]
  node_driveui["Drive manager<br/>[FileManager.jsx]"]
  node_userroutes["User routes<br/>[user.routes.js]"]
  node_usercontroller["User workflows"]
  node_cloudinary["Cloudinary storage"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin console"]
  node_adminroutes["Admin routes<br/>[admin.routes.js]"]
  node_admincontroller["Admin workflows"]
end

subgraph group_platform["Application platform"]
  node_web["Next.js client<br/>[layout.js]"]
  node_mobile["Native shells"]
  node_appserver["Express API<br/>[index.js]"]
  node_database[("PostgreSQL data<br/>[prisma.js]")]
end

node_user(("Storage user"))
node_administrator(("Administrator"))
node_stripe["Stripe payments"]

node_user -->|"uses"| node_web
node_administrator -->|"uses"| node_web
node_mobile -.->|"bundles"| node_web
node_web -->|"API requests"| node_appserver
node_appserver -->|"mounts"| node_authroutes
node_appserver -->|"mounts"| node_userroutes
node_appserver -->|"mounts"| node_adminroutes
node_appserver -->|"mounts"| node_striperoutes
node_authui -->|"auth requests"| node_authroutes
node_authroutes -->|"dispatches"| node_authcontroller
node_authcontroller -->|"reads/writes"| node_database
node_authcontroller -->|"sends email"| node_mailer
node_authroutes -->|"guards"| node_authguard
node_userui -->|"user requests"| node_userroutes
node_driveui -->|"file actions"| node_userroutes
node_userroutes -->|"dispatches"| node_usercontroller
node_usercontroller -->|"reads/writes"| node_database
node_driveui -.->|"uploads files"| node_cloudinary
node_planui -->|"plan requests"| node_userroutes
node_paymentui -->|"payment requests"| node_striperoutes
node_striperoutes -->|"dispatches"| node_stripecontroller
node_stripecontroller -->|"checkout/webhooks"| node_stripe
node_stripecontroller -->|"updates subscriptions"| node_database
node_adminui -->|"admin requests"| node_adminroutes
node_adminroutes -->|"dispatches"| node_admincontroller
node_admincontroller -->|"reads/writes"| node_database
node_adminroutes -->|"guards"| node_authguard

click node_web "https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/layout.js"
click node_mobile "https://github.com/sami-sial/subscription-based-file-management/tree/main/mobile"
click node_appserver "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/index.js"
click node_authui "https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(auth)"
click node_authroutes "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/auth.routes.js"
click node_authcontroller "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/auth.controllers.js"
click node_authguard "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/middlewares/auth.middleware.js"
click node_mailer "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/lib/mailer.js"
click node_userui "https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(dashboard)/user"
click node_driveui "https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/drive/FileManager.jsx"
click node_userroutes "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/user.routes.js"
click node_usercontroller "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/user.controllers.js"
click node_cloudinary "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/config/cloudinary.config.js"
click node_planui "https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/subscriptions/page.jsx"
click node_paymentui "https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/payment-success/page.jsx"
click node_striperoutes "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/stripe.routes.js"
click node_stripecontroller "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/stripe.cotrollers.js"
click node_adminui "https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(dashboard)/admin"
click node_adminroutes "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/admin.routes.js"
click node_admincontroller "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/admin.controllers.js"
click node_database "https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/lib/prisma.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_authui,node_authroutes,node_authcontroller,node_authguard,node_mailer toneBlue
class node_planui,node_paymentui,node_striperoutes,node_stripecontroller,node_user toneAmber
class node_userui,node_driveui,node_userroutes,node_usercontroller,node_cloudinary toneMint
class node_adminui,node_adminroutes,node_admincontroller toneRose
class node_web,node_mobile,node_appserver,node_database,node_administrator,node_stripe toneIndigo
```

## Components

### Identity

- [Auth screens](https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(auth)): `client/src/app/(auth)`
- [Auth routes](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/auth.routes.js): `backend/routes/auth.routes.js`
- [Auth workflows](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/auth.controllers.js): `backend/controllers/auth.controllers.js`
- [JWT access guard](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/middlewares/auth.middleware.js): `backend/middlewares/auth.middleware.js`
- [Email delivery](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/lib/mailer.js): `backend/lib/mailer.js`

### Subscriptions

- [Plan screens](https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/subscriptions/page.jsx): `client/src/app/(dashboard)/user/subscriptions/page.jsx`
- [Payment screens](https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/payment-success/page.jsx): `client/src/app/(dashboard)/user/payment-success/page.jsx`
- [Stripe routes](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/stripe.routes.js): `backend/routes/stripe.routes.js`
- [Stripe workflows](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/stripe.cotrollers.js): `backend/controllers/stripe.cotrollers.js`

### File storage

- [User dashboard](https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(dashboard)/user): `client/src/app/(dashboard)/user`
- [Drive manager](https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/(dashboard)/user/drive/FileManager.jsx): `client/src/app/(dashboard)/user/drive/FileManager.jsx`
- [User routes](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/user.routes.js): `backend/routes/user.routes.js`
- [User workflows](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/user.controllers.js): `backend/controllers/user.controllers.js`
- [Cloudinary storage](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/config/cloudinary.config.js): `backend/config/cloudinary.config.js`

### Administration

- [Admin console](https://github.com/sami-sial/subscription-based-file-management/tree/main/client/src/app/(dashboard)/admin): `client/src/app/(dashboard)/admin`
- [Admin routes](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/routes/admin.routes.js): `backend/routes/admin.routes.js`
- [Admin workflows](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/controllers/admin.controllers.js): `backend/controllers/admin.controllers.js`

### Application platform

- [Next.js client](https://github.com/sami-sial/subscription-based-file-management/blob/main/client/src/app/layout.js): `client/src/app/layout.js`
- [Native shells](https://github.com/sami-sial/subscription-based-file-management/tree/main/mobile): `mobile`
- [Express API](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/index.js): `backend/index.js`
- [PostgreSQL data](https://github.com/sami-sial/subscription-based-file-management/blob/main/backend/lib/prisma.js): `backend/lib/prisma.js`

### Other components

- **Storage user**
- **Administrator**
- **Stripe payments**

## Connections

- Storage user → Next.js client: uses
- Administrator → Next.js client: uses
- Native shells → Next.js client: bundles
- Next.js client → Express API: API requests
- Express API → Auth routes: mounts
- Express API → User routes: mounts
- Express API → Admin routes: mounts
- Express API → Stripe routes: mounts
- Auth screens → Auth routes: auth requests
- Auth routes → Auth workflows: dispatches
- Auth workflows → PostgreSQL data: reads/writes
- Auth workflows → Email delivery: sends email
- Auth routes → JWT access guard: guards
- User dashboard → User routes: user requests
- Drive manager → User routes: file actions
- User routes → User workflows: dispatches
- User workflows → PostgreSQL data: reads/writes
- Drive manager → Cloudinary storage: uploads files
- Plan screens → User routes: plan requests
- Payment screens → Stripe routes: payment requests
- Stripe routes → Stripe workflows: dispatches
- Stripe workflows → Stripe payments: checkout/webhooks
- Stripe workflows → PostgreSQL data: updates subscriptions
- Admin console → Admin routes: admin requests
- Admin routes → Admin workflows: dispatches
- Admin workflows → PostgreSQL data: reads/writes
- Admin routes → JWT access guard: guards
