# unb-mds/2026-2-unb_core architecture

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

- Interactive diagram: https://gitdiagram.com/unb-mds/2026-2-unb_core
- Repository: https://github.com/unb-mds/2026-2-unb_core

## Overview

UNB CORE is a partially implemented UnB information platform: its planned product combines a collaborative academic knowledge base with a central catalog of official publications. The visible frontend routes users to publication browsing/details, knowledge pages, contribution submission/history, and account pages; the sampled contribution page submits through a shared API client. The README describes the project as still in planning, and the backend entry point currently registers error handlers but no visible product routes. Several page and API capabilities are represented by paths in the tree, but their internal behavior and wiring were not sampled.

Main entry points: [`frontend/src/App.jsx`](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/App.jsx) (Route dispatcher), [`frontend/src/pages/LoginPage.jsx`](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/LoginPage.jsx) (Account pages), [`frontend/src/services/api.js`](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/services/api.js) (API client), [`frontend/src/state/auth.js`](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/state/auth.js) (Session state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["Route dispatcher<br/>[App.jsx]"]
  node_auth_pages["Account pages<br/>[LoginPage.jsx]"]
  node_auth_form["Account form<br/>[AuthForm.jsx]"]
  node_auth_state["Session state<br/>[auth.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_knowledge["Knowledge collaboration"]
  node_knowledge_page["Knowledge base"]
  node_contribution_page["Submit contribution"]
  node_contribution_history["My contributions"]
  node_knowledge_content["Content presentation"]
end

subgraph group_publications["Official publications"]
  node_publication_list["Publication catalog"]
  node_publication_detail["Publication detail"]
  node_publication_metadata["Source and status"]
end

subgraph group_backend["Backend foundation"]
  node_backend_app["FastAPI application<br/>[main.py]"]
  node_api_errors["Error handling<br/>[errors.py]"]
  node_auth_api["Auth API module<br/>[auth.py]"]
  node_search_api["Search API module<br/>[search.py]"]
  node_publication_service["Publication service"]
end

node_visitor(("UnB user"))

node_visitor -->|"uses"| node_app
node_app -->|"routes"| node_auth_pages
node_app -->|"routes"| node_knowledge_page
node_app -->|"routes"| node_contribution_page
node_app -->|"routes"| node_contribution_history
node_app -->|"routes"| node_publication_list
node_app -->|"routes"| node_publication_detail
node_auth_pages -->|"renders"| node_auth_form
node_auth_pages -->|"uses"| node_auth_state
node_auth_state -->|"stores session via"| node_api_client
node_contribution_page -->|"submits contribution"| node_api_client
node_api_client -.->|"sends HTTP requests"| node_backend_app
node_backend_app -->|"registers handlers"| node_api_errors

click node_app "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/App.jsx"
click node_auth_pages "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/LoginPage.jsx"
click node_auth_form "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/auth/AuthForm.jsx"
click node_auth_state "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/state/auth.js"
click node_api_client "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/services/api.js"
click node_knowledge_page "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/ConhecimentoPage.jsx"
click node_contribution_page "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/ContribuicaoPage.jsx"
click node_contribution_history "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/MinhasContribuicoesPage.jsx"
click node_knowledge_content "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/conteudos/ConteudoDetalhe.jsx"
click node_publication_list "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/PublicacoesPage.jsx"
click node_publication_detail "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/PublicacaoDetalhePage.jsx"
click node_publication_metadata "https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/publicacoes/PublicacaoFonte.jsx"
click node_backend_app "https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/main.py"
click node_api_errors "https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/errors.py"
click node_auth_api "https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/auth.py"
click node_search_api "https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/search.py"
click node_publication_service "https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/services/publicacao_service.py"

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_pages,node_auth_form,node_auth_state,node_api_client,node_visitor toneBlue
class node_knowledge_page,node_contribution_page,node_contribution_history,node_knowledge_content toneAmber
class node_publication_list,node_publication_detail,node_publication_metadata toneMint
class node_backend_app,node_api_errors,node_auth_api,node_search_api,node_publication_service toneRose
```

## Components

### Web experience

- [Route dispatcher](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Account pages](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/LoginPage.jsx): `frontend/src/pages/LoginPage.jsx`
- [Account form](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/auth/AuthForm.jsx): `frontend/src/components/auth/AuthForm.jsx`
- [Session state](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/state/auth.js): `frontend/src/state/auth.js`
- [API client](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Knowledge collaboration

- [Knowledge base](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/ConhecimentoPage.jsx): `frontend/src/pages/ConhecimentoPage.jsx`
- [Submit contribution](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/ContribuicaoPage.jsx): `frontend/src/pages/ContribuicaoPage.jsx`
- [My contributions](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/MinhasContribuicoesPage.jsx): `frontend/src/pages/MinhasContribuicoesPage.jsx`
- [Content presentation](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/conteudos/ConteudoDetalhe.jsx): `frontend/src/components/conteudos/ConteudoDetalhe.jsx`

### Official publications

- [Publication catalog](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/PublicacoesPage.jsx): `frontend/src/pages/PublicacoesPage.jsx`
- [Publication detail](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/pages/PublicacaoDetalhePage.jsx): `frontend/src/pages/PublicacaoDetalhePage.jsx`
- [Source and status](https://github.com/unb-mds/2026-2-unb_core/blob/main/frontend/src/components/publicacoes/PublicacaoFonte.jsx): `frontend/src/components/publicacoes/PublicacaoFonte.jsx`

### Backend foundation

- [FastAPI application](https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/main.py): `backend/app/main.py`
- [Error handling](https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/errors.py): `backend/app/api/errors.py`
- [Auth API module](https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/auth.py): `backend/app/api/auth.py`
- [Search API module](https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/api/search.py): `backend/app/api/search.py`
- [Publication service](https://github.com/unb-mds/2026-2-unb_core/blob/main/backend/app/services/publicacao_service.py): `backend/app/services/publicacao_service.py`

### Other components

- **UnB user**

## Connections

- UnB user → Route dispatcher: uses
- Route dispatcher → Account pages: routes
- Route dispatcher → Knowledge base: routes
- Route dispatcher → Submit contribution: routes
- Route dispatcher → My contributions: routes
- Route dispatcher → Publication catalog: routes
- Route dispatcher → Publication detail: routes
- Account pages → Account form: renders
- Account pages → Session state: uses
- Session state → API client: stores session via
- Submit contribution → API client: submits contribution
- API client → FastAPI application: sends HTTP requests
- FastAPI application → Error handling: registers handlers
