# nornarath001-ui/smartdocs architecture

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

- Interactive diagram: https://gitdiagram.com/nornarath001-ui/smartdocs
- Repository: https://github.com/nornarath001-ui/smartdocs

## Overview

SmartDocs combines a public document portal with an authenticated document-management dashboard, plus translation and file-conversion tools. Users browse and filter published documents, inspect summaries, and preview or download files; staff sign in to manage documents and categories, while administrators also manage users and review activity. Translation and conversion are separate workflows. The graph follows documented routes and sampled calls; some page-to-API connections and the translator deployment wiring are not fully evidenced in the excerpts.

Main entry points: [`backend/routes/api.php`](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/routes/api.php) (API routing), [`frontend/src/App.jsx`](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/App.jsx) (Page routing), [`frontend/src/api/axios.js`](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/api/axios.js) (API client), [`backend/app/Http/Controllers/Api/ActivityController.php`](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/ActivityController.php) (Activity and analytics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_router["Page routing<br/>[App.jsx]"]
  node_portal["Document portal<br/>[Portal.jsx]"]
  node_admin_docs["Document management<br/>[Documents.jsx]"]
  node_dashboard["Dashboard and activity<br/>[Dashboard.jsx]"]
  node_translation_ui["Translation pages"]
  node_conversion_ui["Conversion page<br/>[Convert.jsx]"]
  node_auth_state["Authentication state<br/>[AuthContext.jsx]"]
  node_http_client["API client<br/>[axios.js]"]
end

subgraph group_api["Backend API"]
  node_api_routes["API routing<br/>[api.php]"]
  node_authentication["Authentication<br/>[AuthController.php]"]
  node_document_api["Document operations"]
  node_public_catalog["Public catalog and summaries"]
  node_activity_api["Activity and analytics"]
  node_category_api["Category management"]
  node_user_api["User management<br/>[UserController.php]"]
  node_translation_api["Translation endpoints"]
  node_conversion_api["Conversion endpoints"]
end

subgraph group_services["Processing services"]
  node_translator["Translator service<br/>[app.py]"]
  node_ai_service["AI service<br/>[main.py]"]
end

subgraph group_data["Domain data"]
  node_documents[("Documents<br/>[Document.php]")]
  node_users[("Users and roles<br/>[User.php]")]
  node_categories[("Categories<br/>[Category.php]")]
  node_activities[("Activities<br/>[Activity.php]")]
end

node_visitor(("Visitor or staff"))

node_visitor -->|"uses"| node_router
node_router -->|"routes to"| node_portal
node_router -->|"routes to"| node_admin_docs
node_router -->|"routes to"| node_dashboard
node_router -->|"routes to"| node_translation_ui
node_router -->|"routes to"| node_conversion_ui
node_router -->|"checks access"| node_auth_state
node_auth_state -->|"calls"| node_http_client
node_portal -->|"requests data"| node_http_client
node_admin_docs -.->|"requests data"| node_http_client
node_dashboard -.->|"requests data"| node_http_client
node_translation_ui -.->|"requests translation"| node_http_client
node_conversion_ui -.->|"requests conversion"| node_http_client
node_http_client -.->|"sends requests"| node_api_routes
node_api_routes -->|"routes to"| node_authentication
node_api_routes -->|"routes to"| node_document_api
node_api_routes -->|"routes to"| node_public_catalog
node_api_routes -->|"routes to"| node_activity_api
node_api_routes -->|"routes to"| node_category_api
node_api_routes -->|"routes to"| node_user_api
node_api_routes -->|"routes to"| node_translation_api
node_api_routes -->|"routes to"| node_conversion_api
node_document_api -->|"queries and updates"| node_documents
node_public_catalog -->|"queries published"| node_documents
node_public_catalog -->|"queries filters"| node_categories
node_activity_api -->|"queries activity"| node_activities
node_activity_api -->|"queries documents"| node_documents
node_activity_api -->|"queries users"| node_users
node_category_api -->|"manages categories"| node_categories
node_category_api -->|"checks usage"| node_documents
node_user_api -->|"manages users"| node_users
node_authentication -->|"authenticates"| node_users
node_translation_api -.->|"posts translation"| node_translator

click node_router "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/App.jsx"
click node_portal "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Portal.jsx"
click node_admin_docs "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Documents.jsx"
click node_dashboard "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Dashboard.jsx"
click node_translation_ui "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/PublicTranslate.jsx"
click node_conversion_ui "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Convert.jsx"
click node_auth_state "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/context/AuthContext.jsx"
click node_http_client "https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/api/axios.js"
click node_api_routes "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/routes/api.php"
click node_authentication "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/AuthController.php"
click node_document_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/DocumentController.php"
click node_public_catalog "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/PublicDocumentController.php"
click node_activity_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/ActivityController.php"
click node_category_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/CategoryController.php"
click node_user_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/UserController.php"
click node_translation_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/PublicTranslateController.php"
click node_conversion_api "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/ConvertController.php"
click node_translator "https://github.com/nornarath001-ui/smartdocs/blob/main/docker/translator/app.py"
click node_ai_service "https://github.com/nornarath001-ui/smartdocs/blob/main/ai-service/main.py"
click node_documents "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Document.php"
click node_users "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/User.php"
click node_categories "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Category.php"
click node_activities "https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Activity.php"

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_router,node_portal,node_admin_docs,node_dashboard,node_translation_ui,node_conversion_ui,node_auth_state,node_http_client toneBlue
class node_api_routes,node_authentication,node_document_api,node_public_catalog,node_activity_api,node_category_api,node_user_api,node_translation_api,node_conversion_api toneAmber
class node_translator,node_ai_service toneMint
class node_documents,node_users,node_categories,node_activities toneRose
class node_visitor toneIndigo
```

## Components

### Web application

- [Page routing](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Document portal](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Portal.jsx): `frontend/src/pages/Portal.jsx`
- [Document management](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Documents.jsx): `frontend/src/pages/Documents.jsx`
- [Dashboard and activity](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Translation pages](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/PublicTranslate.jsx): `frontend/src/pages/PublicTranslate.jsx`
- [Conversion page](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/pages/Convert.jsx): `frontend/src/pages/Convert.jsx`
- [Authentication state](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/nornarath001-ui/smartdocs/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`

### Backend API

- [API routing](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Authentication](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/AuthController.php): `backend/app/Http/Controllers/Api/AuthController.php`
- [Document operations](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/DocumentController.php): `backend/app/Http/Controllers/Api/DocumentController.php`
- [Public catalog and summaries](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/PublicDocumentController.php): `backend/app/Http/Controllers/Api/PublicDocumentController.php`
- [Activity and analytics](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/ActivityController.php): `backend/app/Http/Controllers/Api/ActivityController.php`
- [Category management](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/CategoryController.php): `backend/app/Http/Controllers/Api/CategoryController.php`
- [User management](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/UserController.php): `backend/app/Http/Controllers/Api/UserController.php`
- [Translation endpoints](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/PublicTranslateController.php): `backend/app/Http/Controllers/Api/PublicTranslateController.php`
- [Conversion endpoints](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Http/Controllers/Api/ConvertController.php): `backend/app/Http/Controllers/Api/ConvertController.php`

### Processing services

- [Translator service](https://github.com/nornarath001-ui/smartdocs/blob/main/docker/translator/app.py): `docker/translator/app.py`
- [AI service](https://github.com/nornarath001-ui/smartdocs/blob/main/ai-service/main.py): `ai-service/main.py`

### Domain data

- [Documents](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Document.php): `backend/app/Models/Document.php`
- [Users and roles](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/User.php): `backend/app/Models/User.php`
- [Categories](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Category.php): `backend/app/Models/Category.php`
- [Activities](https://github.com/nornarath001-ui/smartdocs/blob/main/backend/app/Models/Activity.php): `backend/app/Models/Activity.php`

### Other components

- **Visitor or staff**

## Connections

- Visitor or staff → Page routing: uses (evidence: `frontend/src/App.jsx`)
- Page routing → Document portal: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Document management: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Dashboard and activity: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Translation pages: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Conversion page: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Authentication state: checks access (evidence: `frontend/src/App.jsx`)
- Authentication state → API client: calls (evidence: `frontend/src/context/AuthContext.jsx`)
- Document portal → API client: requests data (evidence: `frontend/src/pages/Portal.jsx`)
- Document management → API client: requests data
- Dashboard and activity → API client: requests data
- Translation pages → API client: requests translation
- Conversion page → API client: requests conversion
- API client → API routing: sends requests
- API routing → Authentication: routes to (evidence: `backend/routes/api.php`)
- API routing → Document operations: routes to (evidence: `backend/routes/api.php`)
- API routing → Public catalog and summaries: routes to (evidence: `backend/routes/api.php`)
- API routing → Activity and analytics: routes to (evidence: `backend/routes/api.php`)
- API routing → Category management: routes to (evidence: `backend/routes/api.php`)
- API routing → User management: routes to (evidence: `backend/routes/api.php`)
- API routing → Translation endpoints: routes to (evidence: `backend/routes/api.php`)
- API routing → Conversion endpoints: routes to (evidence: `backend/routes/api.php`)
- Document operations → Documents: queries and updates (evidence: `backend/app/Http/Controllers/Api/DocumentController.php`)
- Public catalog and summaries → Documents: queries published (evidence: `backend/app/Http/Controllers/Api/PublicDocumentController.php`)
- Public catalog and summaries → Categories: queries filters (evidence: `backend/app/Http/Controllers/Api/PublicDocumentController.php`)
- Activity and analytics → Activities: queries activity (evidence: `backend/app/Http/Controllers/Api/ActivityController.php`)
- Activity and analytics → Documents: queries documents (evidence: `backend/app/Http/Controllers/Api/ActivityController.php`)
- Activity and analytics → Users and roles: queries users (evidence: `backend/app/Http/Controllers/Api/ActivityController.php`)
- Category management → Categories: manages categories (evidence: `backend/app/Http/Controllers/Api/CategoryController.php`)
- Category management → Documents: checks usage (evidence: `backend/app/Http/Controllers/Api/CategoryController.php`)
- User management → Users and roles: manages users (evidence: `backend/app/Http/Controllers/Api/UserController.php`)
- Authentication → Users and roles: authenticates (evidence: `backend/app/Http/Controllers/Api/AuthController.php`)
- Translation endpoints → Translator service: posts translation
