# devdogs-2026/abp-portal-certificacao-ageis architecture

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

- Interactive diagram: https://gitdiagram.com/devdogs-2026/abp-portal-certificacao-ageis
- Repository: https://github.com/devdogs-2026/abp-portal-certificacao-ageis

## Overview

DevDogs is a web portal for studying agile methods and taking a timed certification assessment. A candidate signs in, starts or resumes an attempt, answers timed questions, and receives a server-calculated result; attempt history is also available. The README documents certification at 65% or higher with QR validation, while the sampled certificate UI uses local example data, so it is shown as a separate, not-connected capability. The tree and excerpts show the assessment and authentication implementation; study, progress, and certificate details are less fully sampled.

Main entry points: [`frontend`](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/tree/main/frontend) (Portal pages), [`backend/src/routes/assessmentRoutes.js`](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/routes/assessmentRoutes.js) (Assessment routes), [`backend/src/db/pool.js`](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/db/pool.js) (PostgreSQL pool), [`backend/src/server.js`](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/server.js) (HTTP server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Candidate portal"]
  node_portal["Portal pages"]
  node_access["Sign in and signup<br/>[acesso.js]"]
  node_study["Study area<br/>[tema.js]"]
  node_assessment_ui["Assessment UI<br/>[questao.js]"]
  node_progress["Progress and history<br/>[progresso.js]"]
  node_result_ui["Result view<br/>[resultado.js]"]
  node_certificate["Certificate and QR<br/>[certificados.js]"]
end

subgraph group_identity["Identity and sessions"]
  node_server["HTTP server<br/>[server.js]"]
  node_auth["Authentication routes<br/>[authRoutes.js]"]
  node_session_guard["Session guard"]
end

subgraph group_assessment["Assessment runtime"]
  node_assessment_routes["Assessment routes"]
  node_scoring["Result calculation"]
end

subgraph group_data["Persistence"]
  node_pool["PostgreSQL pool<br/>[pool.js]"]
  node_postgres[("PostgreSQL<br/>[schema.sql]")]
end

node_candidate(("Candidate"))

node_candidate -->|"uses"| node_portal
node_portal -->|"opens"| node_access
node_portal -->|"opens"| node_study
node_portal -->|"opens"| node_assessment_ui
node_portal -->|"opens"| node_progress
node_portal -->|"opens"| node_result_ui
node_candidate -->|"signs in"| node_access
node_server -->|"mounts routes"| node_auth
node_server -->|"mounts routes"| node_assessment_routes
node_auth -->|"queries"| node_pool
node_assessment_routes -->|"applies"| node_session_guard
node_assessment_routes -->|"queries"| node_pool
node_assessment_routes -->|"calculates result"| node_scoring
node_assessment_ui -->|"requests questions and answers"| node_assessment_routes
node_assessment_routes -.->|"reads and writes"| node_postgres
node_pool -.->|"connects"| node_postgres
node_candidate -->|"views certificate"| node_certificate

click node_portal "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/tree/main/frontend"
click node_access "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/acesso.js"
click node_study "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/tema.js"
click node_assessment_ui "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/questao.js"
click node_progress "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/progresso.js"
click node_result_ui "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/resultado.js"
click node_certificate "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/certificados.js"
click node_server "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/server.js"
click node_auth "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/routes/authRoutes.js"
click node_session_guard "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/middlewares/exigirAutenticacao.js"
click node_assessment_routes "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/routes/assessmentRoutes.js"
click node_scoring "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/services/calcularResultado.js"
click node_pool "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/db/pool.js"
click node_postgres "https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/database/schema.sql"

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_portal,node_access,node_study,node_assessment_ui,node_progress,node_result_ui,node_certificate toneBlue
class node_server,node_auth,node_session_guard toneAmber
class node_assessment_routes,node_scoring toneMint
class node_pool,node_postgres toneRose
class node_candidate toneIndigo
```

## Components

### Candidate portal

- [Portal pages](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/tree/main/frontend): `frontend`
- [Sign in and signup](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/acesso.js): `frontend/src/js/acesso.js`
- [Study area](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/tema.js): `frontend/src/js/tema.js`
- [Assessment UI](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/questao.js): `frontend/src/js/questao.js`
- [Progress and history](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/progresso.js): `frontend/src/js/progresso.js`
- [Result view](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/resultado.js): `frontend/src/js/resultado.js`
- [Certificate and QR](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/frontend/src/js/certificados.js): `frontend/src/js/certificados.js`

### Identity and sessions

- [HTTP server](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/server.js): `backend/src/server.js`
- [Authentication routes](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/routes/authRoutes.js): `backend/src/routes/authRoutes.js`
- [Session guard](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/middlewares/exigirAutenticacao.js): `backend/src/middlewares/exigirAutenticacao.js`

### Assessment runtime

- [Assessment routes](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/routes/assessmentRoutes.js): `backend/src/routes/assessmentRoutes.js`
- [Result calculation](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/services/calcularResultado.js): `backend/src/services/calcularResultado.js`

### Persistence

- [PostgreSQL pool](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/backend/src/db/pool.js): `backend/src/db/pool.js`
- [PostgreSQL](https://github.com/devdogs-2026/abp-portal-certificacao-ageis/blob/main/database/schema.sql): `database/schema.sql`

### Other components

- **Candidate**

## Connections

- Candidate → Portal pages: uses (evidence: `README.md`)
- Portal pages → Sign in and signup: opens
- Portal pages → Study area: opens
- Portal pages → Assessment UI: opens
- Portal pages → Progress and history: opens
- Portal pages → Result view: opens
- Candidate → Sign in and signup: signs in (evidence: `frontend/src/js/acesso.js`)
- HTTP server → Authentication routes: mounts routes (evidence: `backend/src/server.js`)
- HTTP server → Assessment routes: mounts routes (evidence: `backend/src/server.js`)
- Authentication routes → PostgreSQL pool: queries (evidence: `backend/src/routes/authRoutes.js`)
- Assessment routes → Session guard: applies (evidence: `backend/src/routes/assessmentRoutes.js`)
- Assessment routes → PostgreSQL pool: queries (evidence: `backend/src/routes/assessmentRoutes.js`)
- Assessment routes → Result calculation: calculates result (evidence: `backend/src/routes/assessmentRoutes.js`)
- Assessment UI → Assessment routes: requests questions and answers (evidence: `frontend/src/js/questao.js`)
- Assessment routes → PostgreSQL: reads and writes
- PostgreSQL pool → PostgreSQL: connects
- Candidate → Certificate and QR: views certificate (evidence: `frontend/src/js/certificados.js`)
