# barujharo/fileuploader architecture

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

- Interactive diagram: https://gitdiagram.com/barujharo/fileuploader
- Repository: https://github.com/barujharo/fileuploader

## Overview

This repository currently implements an Express web app with account registration, login, logout, and server-side sessions. The principal workflow is a visitor submitting credentials through the auth routes; validation and Passport authentication lead to a session and rendered or redirected response. The tree also contains file and folder modules, but their sampled controllers and routes are empty, so they are not shown as working capabilities. Auth persistence wiring is uncertain: the controller imports a missing `src/db.js`, while the tree contains `src/db/db.js`; the Prisma schema is included without inferring runtime calls to it.

Main entry points: [`src/routes/authRoutes.js`](https://github.com/barujharo/fileuploader/blob/main/src/routes/authRoutes.js) (Auth routes), [`app.js`](https://github.com/barujharo/fileuploader/blob/main/app.js) (Express app), [`src/controllers/authController.js`](https://github.com/barujharo/fileuploader/blob/main/src/controllers/authController.js) (Auth controller), [`src/config/session.js`](https://github.com/barujharo/fileuploader/blob/main/src/config/session.js) (Session config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web entry"]
  node_app["Express app<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_views["Auth forms"]
end

subgraph group_identity["Account access"]
  node_auth_controller["Auth controller<br/>[authController.js]"]
  node_user_validation["Signup validation<br/>[userValidator.js]"]
  node_login_validation["Login validation<br/>[loginValidator.js]"]
  node_login_limit["Login rate limit<br/>[rateLimiter.js]"]
  node_auth_guard["Auth guard<br/>[Auth.js]"]
  node_passport["Passport config<br/>[passport.js]"]
end

subgraph group_persistence["Session persistence"]
  node_session_config["Session config<br/>[session.js]"]
  node_session_store[("Prisma session store")]
  node_schema["Prisma schema<br/>[schema.prisma]"]
end

node_visitor(("Visitor"))

node_visitor -->|"sends requests"| node_app
node_app -->|"mounts routes"| node_auth_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_routes -->|"validates signup"| node_user_validation
node_auth_routes -->|"validates login"| node_login_validation
node_auth_routes -->|"limits login"| node_login_limit
node_auth_routes -->|"guards logout"| node_auth_guard
node_auth_controller -->|"authenticates"| node_passport
node_app -->|"initializes"| node_passport
node_app -->|"installs sessions"| node_session_config
node_session_config -->|"stores sessions"| node_session_store
node_auth_controller -->|"renders forms"| node_auth_views

click node_app "https://github.com/barujharo/fileuploader/blob/main/app.js"
click node_auth_routes "https://github.com/barujharo/fileuploader/blob/main/src/routes/authRoutes.js"
click node_auth_views "https://github.com/barujharo/fileuploader/tree/main/src/views/auth"
click node_auth_controller "https://github.com/barujharo/fileuploader/blob/main/src/controllers/authController.js"
click node_user_validation "https://github.com/barujharo/fileuploader/blob/main/src/controllers/validators/userValidator.js"
click node_login_validation "https://github.com/barujharo/fileuploader/blob/main/src/controllers/validators/loginValidator.js"
click node_login_limit "https://github.com/barujharo/fileuploader/blob/main/src/routes/middleware/rateLimiter.js"
click node_auth_guard "https://github.com/barujharo/fileuploader/blob/main/src/routes/middleware/Auth.js"
click node_passport "https://github.com/barujharo/fileuploader/blob/main/src/config/passport.js"
click node_session_config "https://github.com/barujharo/fileuploader/blob/main/src/config/session.js"
click node_schema "https://github.com/barujharo/fileuploader/blob/main/prisma/schema.prisma"

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_auth_routes,node_auth_views toneBlue
class node_auth_controller,node_user_validation,node_login_validation,node_login_limit,node_auth_guard,node_passport toneAmber
class node_session_config,node_session_store,node_schema toneMint
class node_visitor toneIndigo
```

## Components

### Web entry

- [Express app](https://github.com/barujharo/fileuploader/blob/main/app.js): `app.js`
- [Auth routes](https://github.com/barujharo/fileuploader/blob/main/src/routes/authRoutes.js): `src/routes/authRoutes.js`
- [Auth forms](https://github.com/barujharo/fileuploader/tree/main/src/views/auth): `src/views/auth`

### Account access

- [Auth controller](https://github.com/barujharo/fileuploader/blob/main/src/controllers/authController.js): `src/controllers/authController.js`
- [Signup validation](https://github.com/barujharo/fileuploader/blob/main/src/controllers/validators/userValidator.js): `src/controllers/validators/userValidator.js`
- [Login validation](https://github.com/barujharo/fileuploader/blob/main/src/controllers/validators/loginValidator.js): `src/controllers/validators/loginValidator.js`
- [Login rate limit](https://github.com/barujharo/fileuploader/blob/main/src/routes/middleware/rateLimiter.js): `src/routes/middleware/rateLimiter.js`
- [Auth guard](https://github.com/barujharo/fileuploader/blob/main/src/routes/middleware/Auth.js): `src/routes/middleware/Auth.js`
- [Passport config](https://github.com/barujharo/fileuploader/blob/main/src/config/passport.js): `src/config/passport.js`

### Session persistence

- [Session config](https://github.com/barujharo/fileuploader/blob/main/src/config/session.js): `src/config/session.js`
- **Prisma session store**
- [Prisma schema](https://github.com/barujharo/fileuploader/blob/main/prisma/schema.prisma): `prisma/schema.prisma`

### Other components

- **Visitor**

## Connections

- Visitor → Express app: sends requests
- Express app → Auth routes: mounts routes
- Auth routes → Auth controller: dispatches
- Auth routes → Signup validation: validates signup
- Auth routes → Login validation: validates login
- Auth routes → Login rate limit: limits login
- Auth routes → Auth guard: guards logout
- Auth controller → Passport config: authenticates
- Express app → Passport config: initializes
- Express app → Session config: installs sessions
- Session config → Prisma session store: stores sessions
- Auth controller → Auth forms: renders forms
