# saikihector/devdogs architecture

> Architecture diagram of the GitHub repository saikihector/devdogs, 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/saikihector/devdogs
- Repository: https://github.com/saikihector/devdogs

## Overview

DogSchool is a browser-based site for learning Scrum through course material and an assessment. The intended user journey is to explore the material, create an account or log in, take the assessment, see a result, and access a certificate when the documented score threshold is met. The site currently uses browser storage for account and certificate data; the README says the SQL database is not integrated. Assessment-to-result handling is not established by the sampled code, so that connection is documented rather than inferred from implementation.

Main entry points: [`app/src/js/acesso.js`](https://github.com/saikihector/devdogs/blob/main/app/src/js/acesso.js) (Signup and login), [`app/avaliacao.html`](https://github.com/saikihector/devdogs/blob/main/app/avaliacao.html) (Assessment entry), [`app/resultado.html`](https://github.com/saikihector/devdogs/blob/main/app/resultado.html) (Assessment result), [`app/acesso.html`](https://github.com/saikihector/devdogs/blob/main/app/acesso.html) (Account forms)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Scrum learning"]
  node_home["Course landing<br/>[index.html]"]
  node_learning_material["Learning material<br/>[tema.html]"]
end

subgraph group_identity["Accounts and access"]
  node_account_page["Account forms<br/>[acesso.html]"]
  node_account_logic["Signup and login<br/>[acesso.js]"]
  node_user_store[("Browser account data<br/>[acesso.js]")]
  node_password_reset["Password reset<br/>[esqueci-senha.js]"]
  node_session["Session display<br/>[sessao.js]"]
  node_login_guard["Assessment login guard<br/>[guarda.js]"]
end

subgraph group_assessment["Assessment"]
  node_assessment_page["Assessment entry<br/>[avaliacao.html]"]
  node_question_flow["Question interaction<br/>[questao.js]"]
  node_result_page["Assessment result<br/>[resultado.html]"]
  node_result_effect["Pass animation<br/>[resultado.js]"]
end

subgraph group_credentials["Certificates"]
  node_certificate_page["Certificate access<br/>[certificados.html]"]
  node_certificate_logic["Issue and validate<br/>[certificados.js]"]
  node_certificate_store[("Browser certificate data<br/>[certificados.js]")]
end

node_learner(("Learner"))

node_learner -->|"opens"| node_home
node_learner -->|"studies"| node_learning_material
node_learner -->|"registers or logs in"| node_account_page
node_account_page -->|"submits forms"| node_account_logic
node_account_logic -->|"reads and writes"| node_user_store
node_learner -->|"resets password"| node_password_reset
node_password_reset -->|"updates account"| node_user_store
node_account_logic -->|"stores login"| node_session
node_session -->|"reads session"| node_user_store
node_learner -->|"starts assessment"| node_assessment_page
node_assessment_page -->|"requires login"| node_login_guard
node_login_guard -->|"redirects when logged out"| node_account_page
node_assessment_page -.->|"runs questions"| node_question_flow
node_learner -.->|"views result"| node_result_page
node_result_page -->|"animates passing result"| node_result_effect
node_learner -->|"accesses certificate"| node_certificate_page
node_result_page -->|"qualifies at 65 percent"| node_certificate_page
node_certificate_page -->|"displays and validates"| node_certificate_logic
node_certificate_logic -->|"reads and writes"| node_certificate_store

click node_home "https://github.com/saikihector/devdogs/blob/main/app/index.html"
click node_learning_material "https://github.com/saikihector/devdogs/blob/main/app/tema.html"
click node_account_page "https://github.com/saikihector/devdogs/blob/main/app/acesso.html"
click node_account_logic "https://github.com/saikihector/devdogs/blob/main/app/src/js/acesso.js"
click node_user_store "https://github.com/saikihector/devdogs/blob/main/app/src/js/acesso.js"
click node_password_reset "https://github.com/saikihector/devdogs/blob/main/app/src/js/esqueci-senha.js"
click node_session "https://github.com/saikihector/devdogs/blob/main/app/src/js/sessao.js"
click node_login_guard "https://github.com/saikihector/devdogs/blob/main/app/src/js/guarda.js"
click node_assessment_page "https://github.com/saikihector/devdogs/blob/main/app/avaliacao.html"
click node_question_flow "https://github.com/saikihector/devdogs/blob/main/app/src/js/questao.js"
click node_result_page "https://github.com/saikihector/devdogs/blob/main/app/resultado.html"
click node_result_effect "https://github.com/saikihector/devdogs/blob/main/app/src/js/resultado.js"
click node_certificate_page "https://github.com/saikihector/devdogs/blob/main/app/certificados.html"
click node_certificate_logic "https://github.com/saikihector/devdogs/blob/main/app/src/js/certificados.js"
click node_certificate_store "https://github.com/saikihector/devdogs/blob/main/app/src/js/certificados.js"

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_home,node_learning_material toneBlue
class node_account_page,node_account_logic,node_user_store,node_password_reset,node_session,node_login_guard toneAmber
class node_assessment_page,node_question_flow,node_result_page,node_result_effect toneMint
class node_certificate_page,node_certificate_logic,node_certificate_store toneRose
class node_learner toneIndigo
```

## Components

### Scrum learning

- [Course landing](https://github.com/saikihector/devdogs/blob/main/app/index.html): `app/index.html`
- [Learning material](https://github.com/saikihector/devdogs/blob/main/app/tema.html): `app/tema.html`

### Accounts and access

- [Account forms](https://github.com/saikihector/devdogs/blob/main/app/acesso.html): `app/acesso.html`
- [Signup and login](https://github.com/saikihector/devdogs/blob/main/app/src/js/acesso.js): `app/src/js/acesso.js`
- [Browser account data](https://github.com/saikihector/devdogs/blob/main/app/src/js/acesso.js): `app/src/js/acesso.js`
- [Password reset](https://github.com/saikihector/devdogs/blob/main/app/src/js/esqueci-senha.js): `app/src/js/esqueci-senha.js`
- [Session display](https://github.com/saikihector/devdogs/blob/main/app/src/js/sessao.js): `app/src/js/sessao.js`
- [Assessment login guard](https://github.com/saikihector/devdogs/blob/main/app/src/js/guarda.js): `app/src/js/guarda.js`

### Assessment

- [Assessment entry](https://github.com/saikihector/devdogs/blob/main/app/avaliacao.html): `app/avaliacao.html`
- [Question interaction](https://github.com/saikihector/devdogs/blob/main/app/src/js/questao.js): `app/src/js/questao.js`
- [Assessment result](https://github.com/saikihector/devdogs/blob/main/app/resultado.html): `app/resultado.html`
- [Pass animation](https://github.com/saikihector/devdogs/blob/main/app/src/js/resultado.js): `app/src/js/resultado.js`

### Certificates

- [Certificate access](https://github.com/saikihector/devdogs/blob/main/app/certificados.html): `app/certificados.html`
- [Issue and validate](https://github.com/saikihector/devdogs/blob/main/app/src/js/certificados.js): `app/src/js/certificados.js`
- [Browser certificate data](https://github.com/saikihector/devdogs/blob/main/app/src/js/certificados.js): `app/src/js/certificados.js`

### Other components

- **Learner**

## Connections

- Learner → Course landing: opens (evidence: `README.md`)
- Learner → Learning material: studies (evidence: `README.md`)
- Learner → Account forms: registers or logs in (evidence: `README.md`)
- Account forms → Signup and login: submits forms (evidence: `app/src/js/acesso.js`)
- Signup and login → Browser account data: reads and writes (evidence: `app/src/js/acesso.js`)
- Learner → Password reset: resets password (evidence: `app/src/js/esqueci-senha.js`)
- Password reset → Browser account data: updates account (evidence: `app/src/js/esqueci-senha.js`)
- Signup and login → Session display: stores login (evidence: `app/src/js/acesso.js`)
- Session display → Browser account data: reads session (evidence: `app/src/js/sessao.js`)
- Learner → Assessment entry: starts assessment (evidence: `README.md`)
- Assessment entry → Assessment login guard: requires login (evidence: `README.md`)
- Assessment login guard → Account forms: redirects when logged out (evidence: `app/src/js/guarda.js`)
- Assessment entry → Question interaction: runs questions
- Learner → Assessment result: views result
- Assessment result → Pass animation: animates passing result (evidence: `app/src/js/resultado.js`)
- Learner → Certificate access: accesses certificate (evidence: `README.md`)
- Assessment result → Certificate access: qualifies at 65 percent (evidence: `README.md`)
- Certificate access → Issue and validate: displays and validates (evidence: `app/src/js/certificados.js`)
- Issue and validate → Browser certificate data: reads and writes (evidence: `app/src/js/certificados.js`)
