# martellileo/fpr1 architecture

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

- Interactive diagram: https://gitdiagram.com/martellileo/fpr1
- Repository: https://github.com/martellileo/fpr1

## Overview

This is a coursework repository of separate Java web projects and exercises, not one integrated application. Its principal interaction pattern is a JSF user action invoking a managed controller, which uses DAOs to query or persist JPA entities; some controllers also assemble multi-entity examples or report outcomes through JSF messages. The graph preserves the major project branches named in the tree and README. Connections are limited to relationships visible in excerpts or the SOURCE INDEX; unsampled project internals are represented at their existing directories.

Main entry points: [`Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java`](https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java) (Product catalog), [`Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java`](https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java) (Project staffing), [`jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java`](https://github.com/martellileo/fpr1/blob/main/jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java) (Vehicle maintenance), [`pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java`](https://github.com/martellileo/fpr1/blob/main/pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java) (Sales workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_academic["Academic Exercises"]
  node_student["Student enrollment"]
  node_studentdata[("Enrollment data")]
  node_catalog["Product catalog"]
  node_catalogdata[("Catalog data")]
  node_team["Project staffing"]
  node_teamdata[("Staffing data")]
end

subgraph group_jsf["JSF Applications"]
  node_facelets["Facelets CRUD"]
  node_faceletsdata[("People and roles")]
  node_introjsf["JSF introduction"]
  node_expenses["Expense control"]
  node_access["Access listener"]
  node_maintenance["Vehicle maintenance"]
  node_converters["JSF converters"]
  node_maintenance_data[("Maintenance records")]
end

subgraph group_jpa["JPA Examples"]
  node_sales["Sales workflow"]
  node_sales_data[("Sales records<br/>[VendaDAO.java]")]
  node_jpa_intro["JPA introduction"]
  node_jpa_models[("JPA entities")]
end

subgraph group_shared["Shared Web Code"]
  node_messages["JSF messages<br/>[Mensagem.java]"]
  node_shared_dao["DAO base<br/>[AbstractDAO.java]"]
end

node_user(("Web user"))

node_user -.->|"invokes"| node_student
node_student -->|"uses DAOs"| node_studentdata
node_user -.->|"invokes"| node_catalog
node_catalog -->|"uses DAO"| node_catalogdata
node_catalog -->|"reports status"| node_messages
node_user -.->|"invokes"| node_team
node_team -->|"persists staffing"| node_teamdata
node_team -->|"reports status"| node_messages
node_facelets -->|"uses entities"| node_faceletsdata
node_introjsf -->|"uses people model"| node_faceletsdata
node_user -.->|"invokes"| node_expenses
node_expenses -.->|"access handling"| node_access
node_user -.->|"invokes"| node_maintenance
node_maintenance -->|"uses DAOs"| node_maintenance_data
node_maintenance -.->|"converts selections"| node_converters
node_user -.->|"invokes"| node_sales
node_sales -->|"saves sale"| node_sales_data
node_sales -->|"confirms sale"| node_messages
node_user -.->|"invokes"| node_jpa_intro
node_jpa_intro -->|"creates entities"| node_jpa_models
node_introjsf -.->|"uses DAO base"| node_shared_dao

click node_student "https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/controller/AlunoController.java"
click node_studentdata "https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/dao"
click node_catalog "https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java"
click node_catalogdata "https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/DAO"
click node_team "https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java"
click node_teamdata "https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/dao"
click node_facelets "https://github.com/martellileo/fpr1/tree/main/facelets/src/java/br/edu/ifsp/pep/controller"
click node_faceletsdata "https://github.com/martellileo/fpr1/tree/main/facelets/src/java/br/edu/ifsp/pep/entidade"
click node_introjsf "https://github.com/martellileo/fpr1/blob/main/introducao-jsf/src/java/br/edu/ifsp/pep/controller/PessoaController.java"
click node_expenses "https://github.com/martellileo/fpr1/tree/main/controle-despesas/src/java/br/edu/ifsp/pep/controller"
click node_access "https://github.com/martellileo/fpr1/blob/main/controle-despesas/src/java/br/edu/ifsp/pep/listener/ControleAcessoListener.java"
click node_maintenance "https://github.com/martellileo/fpr1/blob/main/jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java"
click node_converters "https://github.com/martellileo/fpr1/tree/main/jsf-converter/src/java/br/edu/ifsp/pep/converter"
click node_maintenance_data "https://github.com/martellileo/fpr1/tree/main/jsf-converter/src/java/br/edu/ifsp/pep/dao"
click node_sales "https://github.com/martellileo/fpr1/blob/main/pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java"
click node_sales_data "https://github.com/martellileo/fpr1/blob/main/pagina-de-venda/src/java/br/edu/ifsp/pep/dao/VendaDAO.java"
click node_jpa_intro "https://github.com/martellileo/fpr1/blob/main/jpa-introducao/src/java/br/edu/ifsp/pep/controller/PessoaController.java"
click node_jpa_models "https://github.com/martellileo/fpr1/tree/main/jpa-introducao/src/java/br/edu/ifsp/pep/entidade"
click node_messages "https://github.com/martellileo/fpr1/blob/main/libraries/java-web-library/src/br/edu/ifsp/pep/util/Mensagem.java"
click node_shared_dao "https://github.com/martellileo/fpr1/blob/main/libraries/java-web-library/src/br/edu/ifsp/pep/dao/AbstractDAO.java"

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_student,node_studentdata,node_catalog,node_catalogdata,node_team,node_teamdata,node_user toneBlue
class node_facelets,node_faceletsdata,node_introjsf,node_expenses,node_access,node_maintenance,node_converters,node_maintenance_data toneAmber
class node_sales,node_sales_data,node_jpa_intro,node_jpa_models toneMint
class node_messages,node_shared_dao toneRose
```

## Components

### Academic Exercises

- [Student enrollment](https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/controller/AlunoController.java): `Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/controller/AlunoController.java`
- [Enrollment data](https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/dao): `Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/dao`
- [Product catalog](https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java): `Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java`
- [Catalog data](https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/DAO): `Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/DAO`
- [Project staffing](https://github.com/martellileo/fpr1/blob/main/Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java): `Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java`
- [Staffing data](https://github.com/martellileo/fpr1/tree/main/Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/dao): `Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/dao`

### JSF Applications

- [Facelets CRUD](https://github.com/martellileo/fpr1/tree/main/facelets/src/java/br/edu/ifsp/pep/controller): `facelets/src/java/br/edu/ifsp/pep/controller`
- [People and roles](https://github.com/martellileo/fpr1/tree/main/facelets/src/java/br/edu/ifsp/pep/entidade): `facelets/src/java/br/edu/ifsp/pep/entidade`
- [JSF introduction](https://github.com/martellileo/fpr1/blob/main/introducao-jsf/src/java/br/edu/ifsp/pep/controller/PessoaController.java): `introducao-jsf/src/java/br/edu/ifsp/pep/controller/PessoaController.java`
- [Expense control](https://github.com/martellileo/fpr1/tree/main/controle-despesas/src/java/br/edu/ifsp/pep/controller): `controle-despesas/src/java/br/edu/ifsp/pep/controller`
- [Access listener](https://github.com/martellileo/fpr1/blob/main/controle-despesas/src/java/br/edu/ifsp/pep/listener/ControleAcessoListener.java): `controle-despesas/src/java/br/edu/ifsp/pep/listener/ControleAcessoListener.java`
- [Vehicle maintenance](https://github.com/martellileo/fpr1/blob/main/jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java): `jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java`
- [JSF converters](https://github.com/martellileo/fpr1/tree/main/jsf-converter/src/java/br/edu/ifsp/pep/converter): `jsf-converter/src/java/br/edu/ifsp/pep/converter`
- [Maintenance records](https://github.com/martellileo/fpr1/tree/main/jsf-converter/src/java/br/edu/ifsp/pep/dao): `jsf-converter/src/java/br/edu/ifsp/pep/dao`

### JPA Examples

- [Sales workflow](https://github.com/martellileo/fpr1/blob/main/pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java): `pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java`
- [Sales records](https://github.com/martellileo/fpr1/blob/main/pagina-de-venda/src/java/br/edu/ifsp/pep/dao/VendaDAO.java): `pagina-de-venda/src/java/br/edu/ifsp/pep/dao/VendaDAO.java`
- [JPA introduction](https://github.com/martellileo/fpr1/blob/main/jpa-introducao/src/java/br/edu/ifsp/pep/controller/PessoaController.java): `jpa-introducao/src/java/br/edu/ifsp/pep/controller/PessoaController.java`
- [JPA entities](https://github.com/martellileo/fpr1/tree/main/jpa-introducao/src/java/br/edu/ifsp/pep/entidade): `jpa-introducao/src/java/br/edu/ifsp/pep/entidade`

### Shared Web Code

- [JSF messages](https://github.com/martellileo/fpr1/blob/main/libraries/java-web-library/src/br/edu/ifsp/pep/util/Mensagem.java): `libraries/java-web-library/src/br/edu/ifsp/pep/util/Mensagem.java`
- [DAO base](https://github.com/martellileo/fpr1/blob/main/libraries/java-web-library/src/br/edu/ifsp/pep/dao/AbstractDAO.java): `libraries/java-web-library/src/br/edu/ifsp/pep/dao/AbstractDAO.java`

### Other components

- **Web user**

## Connections

- Web user → Student enrollment: invokes
- Student enrollment → Enrollment data: uses DAOs (evidence: `Atividade-avaliativa-1/src/java/br/edu/ifsp/pep/controller/AlunoController.java`)
- Web user → Product catalog: invokes
- Product catalog → Catalog data: uses DAO (evidence: `Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java`)
- Product catalog → JSF messages: reports status (evidence: `Atividade-avaliativa-2/src/java/br/edu/ifsp/pep/controller/ProdutoController.java`)
- Web user → Project staffing: invokes
- Project staffing → Staffing data: persists staffing (evidence: `Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java`)
- Project staffing → JSF messages: reports status (evidence: `Atividade-avaliativa-3/src/java/br/edu/ifsp/pep/controller/AlocadoController.java`)
- Facelets CRUD → People and roles: uses entities (evidence: `facelets/src/java/br/edu/ifsp/pep/controller/PessoaController.java`)
- JSF introduction → People and roles: uses people model (evidence: `introducao-jsf/src/java/br/edu/ifsp/pep/controller/PessoaController.java`)
- Web user → Expense control: invokes
- Expense control → Access listener: access handling
- Web user → Vehicle maintenance: invokes
- Vehicle maintenance → Maintenance records: uses DAOs (evidence: `jsf-converter/src/java/br/edu/ifsp/pep/controller/ManutencaoController.java`)
- Vehicle maintenance → JSF converters: converts selections
- Web user → Sales workflow: invokes
- Sales workflow → Sales records: saves sale (evidence: `pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java`)
- Sales workflow → JSF messages: confirms sale (evidence: `pagina-de-venda/src/java/br/edu/ifsp/pep/controller/VendaController.java`)
- Web user → JPA introduction: invokes
- JPA introduction → JPA entities: creates entities (evidence: `jpa-introducao/src/java/br/edu/ifsp/pep/controller/PessoaController.java`)
- JSF introduction → DAO base: uses DAO base
