# abdrahman02/rbac-boilerplate architecture

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

- Interactive diagram: https://gitdiagram.com/abdrahman02/rbac-boilerplate
- Repository: https://github.com/abdrahman02/rbac-boilerplate

## Overview

RBAC Boilerplate is a full-stack admin dashboard starter: users authenticate, receive roles and permissions, and use permission-gated screens to manage users, roles, permissions, audit history, and notifications. The frontend calls the Express API; the backend’s documented controller–service–repository layers implement domain operations against MySQL. Authentication source confirms token, verification-email, and refresh-token handling. The tree and README establish the other major capability areas, but their detailed wiring was not sampled, so those links are shown only at documented architectural boundaries.

Main entry points: [`backend/src/app.ts`](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/app.ts) (Express API), [`backend/src/repositories`](https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/repositories) (Data repositories), [`frontend/src/shared/lib/api-client.ts`](https://github.com/abdrahman02/rbac-boilerplate/blob/main/frontend/src/shared/lib/api-client.ts) (API client), [`frontend/src/app`](https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/app) (Next.js app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Admin frontend"]
  node_web["Next.js app"]
  node_authui["Auth screens"]
  node_adminui["Admin features"]
  node_client["API client<br/>[api-client.ts]"]
  node_authstate["Auth state<br/>[authStore.ts]"]
end

subgraph group_api["Backend API"]
  node_apiapp["Express API<br/>[app.ts]"]
  node_authroutes["Auth routes<br/>[auth.ts]"]
  node_userctrl["User controller<br/>[user.controller.ts]"]
  node_rolectrl["Role controller<br/>[role.controller.ts]"]
  node_permctrl["Permission controller"]
  node_domainctrl["Other controllers"]
end

subgraph group_domain["RBAC services"]
  node_authsvc["Authentication<br/>[auth.service.ts]"]
  node_usersvc["User management<br/>[user.service.ts]"]
  node_rolesvc["Role management<br/>[role.service.ts]"]
  node_permsvc["Permission management"]
  node_othersvc["Dashboard, audit, notifications"]
  node_repos["Data repositories"]
end

subgraph group_state["Persistence and integrations"]
  node_mysql[("MySQL database")]
  node_email["Email service"]
  node_sse(("SSE clients"))
end

node_admin(("Dashboard user"))

node_admin -->|"uses"| node_web
node_web -->|"renders"| node_authui
node_web -->|"renders"| node_adminui
node_authui -->|"calls API"| node_client
node_adminui -->|"calls API"| node_client
node_client -->|"HTTP requests"| node_apiapp
node_client -->|"clears auth"| node_authstate
node_apiapp -->|"mounts"| node_authroutes
node_apiapp -->|"mounts users"| node_userctrl
node_apiapp -->|"mounts roles"| node_rolectrl
node_apiapp -->|"mounts permissions"| node_permctrl
node_apiapp -->|"mounts other routes"| node_domainctrl
node_authroutes -->|"handles auth"| node_authsvc
node_userctrl -->|"calls"| node_usersvc
node_rolectrl -->|"calls"| node_rolesvc
node_permctrl -->|"calls"| node_permsvc
node_domainctrl -->|"handles domain"| node_othersvc
node_authsvc -->|"reads/writes"| node_repos
node_usersvc -->|"reads/writes"| node_repos
node_rolesvc -->|"reads/writes"| node_repos
node_permsvc -->|"reads/writes"| node_repos
node_othersvc -->|"reads/writes"| node_repos
node_repos -->|"queries"| node_mysql
node_authsvc -->|"sends mail"| node_email
node_othersvc -->|"streams notices"| node_sse

click node_web "https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/app"
click node_authui "https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/features/auth"
click node_adminui "https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/features"
click node_client "https://github.com/abdrahman02/rbac-boilerplate/blob/main/frontend/src/shared/lib/api-client.ts"
click node_authstate "https://github.com/abdrahman02/rbac-boilerplate/blob/main/frontend/src/shared/stores/authStore.ts"
click node_apiapp "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/app.ts"
click node_authroutes "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/routes/auth.ts"
click node_userctrl "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/user.controller.ts"
click node_rolectrl "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/role.controller.ts"
click node_permctrl "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/permission.controller.ts"
click node_domainctrl "https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/controllers"
click node_authsvc "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/auth.service.ts"
click node_usersvc "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/user.service.ts"
click node_rolesvc "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/role.service.ts"
click node_permsvc "https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/permission.service.ts"
click node_othersvc "https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/services"
click node_repos "https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/repositories"

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_web,node_authui,node_adminui,node_client,node_authstate,node_admin toneBlue
class node_apiapp,node_authroutes,node_userctrl,node_rolectrl,node_permctrl,node_domainctrl toneAmber
class node_authsvc,node_usersvc,node_rolesvc,node_permsvc,node_othersvc,node_repos toneMint
class node_mysql,node_email,node_sse toneRose
```

## Components

### Admin frontend

- [Next.js app](https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/app): `frontend/src/app`
- [Auth screens](https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/features/auth): `frontend/src/features/auth`
- [Admin features](https://github.com/abdrahman02/rbac-boilerplate/tree/main/frontend/src/features): `frontend/src/features`
- [API client](https://github.com/abdrahman02/rbac-boilerplate/blob/main/frontend/src/shared/lib/api-client.ts): `frontend/src/shared/lib/api-client.ts`
- [Auth state](https://github.com/abdrahman02/rbac-boilerplate/blob/main/frontend/src/shared/stores/authStore.ts): `frontend/src/shared/stores/authStore.ts`

### Backend API

- [Express API](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/app.ts): `backend/src/app.ts`
- [Auth routes](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/routes/auth.ts): `backend/src/routes/auth.ts`
- [User controller](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/user.controller.ts): `backend/src/controllers/user.controller.ts`
- [Role controller](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/role.controller.ts): `backend/src/controllers/role.controller.ts`
- [Permission controller](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/controllers/permission.controller.ts): `backend/src/controllers/permission.controller.ts`
- [Other controllers](https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/controllers): `backend/src/controllers`

### RBAC services

- [Authentication](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/auth.service.ts): `backend/src/services/auth.service.ts`
- [User management](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/user.service.ts): `backend/src/services/user.service.ts`
- [Role management](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/role.service.ts): `backend/src/services/role.service.ts`
- [Permission management](https://github.com/abdrahman02/rbac-boilerplate/blob/main/backend/src/services/permission.service.ts): `backend/src/services/permission.service.ts`
- [Dashboard, audit, notifications](https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/services): `backend/src/services`
- [Data repositories](https://github.com/abdrahman02/rbac-boilerplate/tree/main/backend/src/repositories): `backend/src/repositories`

### Persistence and integrations

- **MySQL database**
- **Email service**
- **SSE clients**

### Other components

- **Dashboard user**

## Connections

- Dashboard user → Next.js app: uses
- Next.js app → Auth screens: renders
- Next.js app → Admin features: renders
- Auth screens → API client: calls API
- Admin features → API client: calls API
- API client → Express API: HTTP requests
- API client → Auth state: clears auth
- Express API → Auth routes: mounts
- Express API → User controller: mounts users
- Express API → Role controller: mounts roles
- Express API → Permission controller: mounts permissions
- Express API → Other controllers: mounts other routes
- Auth routes → Authentication: handles auth
- User controller → User management: calls
- Role controller → Role management: calls
- Permission controller → Permission management: calls
- Other controllers → Dashboard, audit, notifications: handles domain
- Authentication → Data repositories: reads/writes
- User management → Data repositories: reads/writes
- Role management → Data repositories: reads/writes
- Permission management → Data repositories: reads/writes
- Dashboard, audit, notifications → Data repositories: reads/writes
- Data repositories → MySQL database: queries
- Authentication → Email service: sends mail
- Dashboard, audit, notifications → SSE clients: streams notices
