# milansourcecoding/infoservis-frontend architecture

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

- Interactive diagram: https://gitdiagram.com/milansourcecoding/infoservis-frontend
- Repository: https://github.com/milansourcecoding/infoservis-frontend

## Overview

InfoSistem is a React portal with authentication, work-order screens, reference-data maintenance, and user settings, presented through shared layouts and UI components. The evident entry workflow is user → application shell → route handling; the tree identifies domain screens, but their route wiring and page-to-state interactions were not sampled, so those links are omitted. The graph also shows the sampled provider composition and shared settings/theme layer.

Main entry points: [`src/App.jsx`](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/App.jsx) (Application shell), [`src/routes/sections/index.js`](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/routes/sections/index.js) (Route sections), [`src/components/settings/context/settings-provider.js`](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/components/settings/context/settings-provider.js) (Settings context), [`src/theme/index.js`](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/theme/index.js) (Theme provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Portal entry"]
  node_app["Application shell<br/>[App.jsx]"]
  node_router["Route sections<br/>[index.js]"]
end

subgraph group_domain["Portal features"]
  node_workorders["Work orders<br/>[list.tsx]"]
  node_workorderform["Work-order form<br/>[form.tsx]"]
  node_workorderslice["Work-order state<br/>[reduxSlice.tsx]"]
  node_categories["Category records<br/>[list.tsx]"]
  node_workers["Worker records<br/>[list.tsx]"]
  node_managers["Manager records<br/>[list.tsx]"]
  node_settings["User settings<br/>[settings.tsx]"]
end

subgraph group_presentation["Presentation"]
  node_dashboard["Dashboard layout<br/>[layout.js]"]
  node_layouts["Other layouts<br/>[config-layout.js]"]
  node_components["Shared UI components"]
end

subgraph group_platform["Application services"]
  node_auth["JWT authentication<br/>[auth-provider.js]"]
  node_authguard["Route guards<br/>[index.js]"]
  node_store["Redux store<br/>[store.tsx]"]
  node_settingsprovider["Settings context"]
  node_theme["Theme provider<br/>[index.js]"]
end

node_user(("Portal user"))

node_user -->|"uses"| node_app
node_app -->|"provides auth"| node_auth
node_app -->|"provides settings"| node_settingsprovider
node_app -->|"applies theme"| node_theme
node_app -->|"provides store"| node_store
node_app -->|"renders routes"| node_router
node_app -->|"renders shared UI"| node_components
node_settingsprovider -->|"supplies preferences"| node_theme
node_router -.->|"guard wiring unclear"| node_authguard

click node_app "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/App.jsx"
click node_router "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/routes/sections/index.js"
click node_auth "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/auth/context/jwt/auth-provider.js"
click node_authguard "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/auth/guard/index.js"
click node_store "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/utils/store.tsx"
click node_workorders "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/list.tsx"
click node_workorderform "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/form.tsx"
click node_workorderslice "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/reduxSlice.tsx"
click node_categories "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/kategorija/list.tsx"
click node_workers "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/radnik/list.tsx"
click node_managers "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/upravnik/list.tsx"
click node_settings "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/settings/settings.tsx"
click node_dashboard "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/layouts/dashboard/layout.js"
click node_layouts "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/layouts/config-layout.js"
click node_settingsprovider "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/components/settings/context/settings-provider.js"
click node_theme "https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/theme/index.js"
click node_components "https://github.com/milansourcecoding/infoservis-frontend/tree/master/src/components"

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_router,node_user toneBlue
class node_workorders,node_workorderform,node_workorderslice,node_categories,node_workers,node_managers,node_settings toneAmber
class node_dashboard,node_layouts,node_components toneMint
class node_auth,node_authguard,node_store,node_settingsprovider,node_theme toneRose
```

## Components

### Portal entry

- [Application shell](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/App.jsx): `src/App.jsx`
- [Route sections](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/routes/sections/index.js): `src/routes/sections/index.js`

### Portal features

- [Work orders](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/list.tsx): `src/pages/radniNalog/list.tsx`
- [Work-order form](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/form.tsx): `src/pages/radniNalog/form.tsx`
- [Work-order state](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/radniNalog/reduxSlice.tsx): `src/pages/radniNalog/reduxSlice.tsx`
- [Category records](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/kategorija/list.tsx): `src/pages/sifarnici/kategorija/list.tsx`
- [Worker records](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/radnik/list.tsx): `src/pages/sifarnici/radnik/list.tsx`
- [Manager records](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/sifarnici/upravnik/list.tsx): `src/pages/sifarnici/upravnik/list.tsx`
- [User settings](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/pages/settings/settings.tsx): `src/pages/settings/settings.tsx`

### Presentation

- [Dashboard layout](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/layouts/dashboard/layout.js): `src/layouts/dashboard/layout.js`
- [Other layouts](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/layouts/config-layout.js): `src/layouts/config-layout.js`
- [Shared UI components](https://github.com/milansourcecoding/infoservis-frontend/tree/master/src/components): `src/components`

### Application services

- [JWT authentication](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/auth/context/jwt/auth-provider.js): `src/auth/context/jwt/auth-provider.js`
- [Route guards](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/auth/guard/index.js): `src/auth/guard/index.js`
- [Redux store](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/utils/store.tsx): `src/utils/store.tsx`
- [Settings context](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/components/settings/context/settings-provider.js): `src/components/settings/context/settings-provider.js`
- [Theme provider](https://github.com/milansourcecoding/infoservis-frontend/blob/master/src/theme/index.js): `src/theme/index.js`

### Other components

- **Portal user**

## Connections

- Portal user → Application shell: uses
- Application shell → JWT authentication: provides auth
- Application shell → Settings context: provides settings
- Application shell → Theme provider: applies theme
- Application shell → Redux store: provides store
- Application shell → Route sections: renders routes
- Application shell → Shared UI components: renders shared UI
- Settings context → Theme provider: supplies preferences
- Route sections → Route guards: guard wiring unclear
