# ricardogm7/collina architecture

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

## Overview

Collina is documented as a sports-club operations platform, but the supplied source tree implements its inventory domain and only the frontend shell/auth/API foundation. The visible inventory workflow manages categories and products, tracks stock and movements, and supports orders and payment confirmation. The README describes a layered Spring API and a React client; edges beyond the sampled inventory services rely on that documented architecture. Other club domains are described in the README but have no implementation paths in this tree, so they are not represented as implemented components.

Main entry points: [`frontend/src/services/api.ts`](https://github.com/ricardogm7/collina/blob/main/frontend/src/services/api.ts) (API client), [`backend/src/main/java/br/ufs/dcomp/collina/repository/estoque`](https://github.com/ricardogm7/collina/tree/main/backend/src/main/java/br/ufs/dcomp/collina/repository/estoque) (JPA repositories), [`frontend/src/App.tsx`](https://github.com/ricardogm7/collina/blob/main/frontend/src/App.tsx) (React app), [`frontend/src/routes/index.tsx`](https://github.com/ricardogm7/collina/blob/main/frontend/src/routes/index.tsx) (Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web["React app<br/>[App.tsx]"]
  node_routes["Routes<br/>[index.tsx]"]
  node_guard["Route guard<br/>[ProtectedRoute.tsx]"]
  node_auth["Auth state<br/>[AuthContext.tsx]"]
  node_firebase["Firebase Auth<br/>[firebase.ts]"]
  node_http["API client<br/>[api.ts]"]
end

subgraph group_api["Inventory API"]
  node_category_api["Category endpoints"]
  node_product_api["Product endpoints"]
  node_stock_api["Stock endpoints"]
  node_order_api["Order endpoints"]
end

subgraph group_domain["Inventory domain"]
  node_category_service["Category rules"]
  node_product_service["Product rules"]
  node_stock_service["Stock operations"]
  node_order_service["Order &amp; payment<br/>[PedidoService.java]"]
end

subgraph group_persistence["Persistence"]
  node_repositories["JPA repositories"]
  node_entities[("Inventory entities")]
  node_postgres[("PostgreSQL")]
end

node_member(("Club user"))

node_member -->|"uses"| node_web
node_web -.->|"renders"| node_routes
node_routes -.->|"protects routes"| node_guard
node_guard -.->|"checks identity"| node_auth
node_auth -.->|"uses provider"| node_firebase
node_web -.->|"requests data"| node_http
node_http -.->|"calls API"| node_category_api
node_http -.->|"calls API"| node_product_api
node_http -.->|"calls API"| node_stock_api
node_http -.->|"calls API"| node_order_api
node_category_api -->|"delegates to"| node_category_service
node_product_api -->|"delegates to"| node_product_service
node_stock_api -->|"delegates to"| node_stock_service
node_order_api -->|"delegates to"| node_order_service
node_category_service -->|"reads and writes"| node_repositories
node_product_service -->|"reads and writes"| node_repositories
node_stock_service -->|"updates stock"| node_repositories
node_order_service -->|"manages orders"| node_repositories
node_repositories -.->|"persists"| node_entities
node_entities -.->|"maps tables"| node_postgres

click node_web "https://github.com/ricardogm7/collina/blob/main/frontend/src/App.tsx"
click node_routes "https://github.com/ricardogm7/collina/blob/main/frontend/src/routes/index.tsx"
click node_guard "https://github.com/ricardogm7/collina/blob/main/frontend/src/routes/ProtectedRoute.tsx"
click node_auth "https://github.com/ricardogm7/collina/blob/main/frontend/src/context/AuthContext.tsx"
click node_firebase "https://github.com/ricardogm7/collina/blob/main/frontend/src/config/firebase.ts"
click node_http "https://github.com/ricardogm7/collina/blob/main/frontend/src/services/api.ts"
click node_category_api "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/CategoriaController.java"
click node_product_api "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/ProdutoController.java"
click node_stock_api "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/EstoqueController.java"
click node_order_api "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/PedidoController.java"
click node_category_service "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/CategoriaService.java"
click node_product_service "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/ProdutoService.java"
click node_stock_service "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/EstoqueService.java"
click node_order_service "https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/PedidoService.java"
click node_repositories "https://github.com/ricardogm7/collina/tree/main/backend/src/main/java/br/ufs/dcomp/collina/repository/estoque"
click node_entities "https://github.com/ricardogm7/collina/tree/main/backend/src/main/java/br/ufs/dcomp/collina/model/estoque"

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_web,node_routes,node_guard,node_auth,node_firebase,node_http,node_member toneBlue
class node_category_api,node_product_api,node_stock_api,node_order_api toneAmber
class node_category_service,node_product_service,node_stock_service,node_order_service toneMint
class node_repositories,node_entities,node_postgres toneRose
```

## Components

### Web client

- [React app](https://github.com/ricardogm7/collina/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Routes](https://github.com/ricardogm7/collina/blob/main/frontend/src/routes/index.tsx): `frontend/src/routes/index.tsx`
- [Route guard](https://github.com/ricardogm7/collina/blob/main/frontend/src/routes/ProtectedRoute.tsx): `frontend/src/routes/ProtectedRoute.tsx`
- [Auth state](https://github.com/ricardogm7/collina/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [Firebase Auth](https://github.com/ricardogm7/collina/blob/main/frontend/src/config/firebase.ts): `frontend/src/config/firebase.ts`
- [API client](https://github.com/ricardogm7/collina/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`

### Inventory API

- [Category endpoints](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/CategoriaController.java): `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/CategoriaController.java`
- [Product endpoints](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/ProdutoController.java): `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/ProdutoController.java`
- [Stock endpoints](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/EstoqueController.java): `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/EstoqueController.java`
- [Order endpoints](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/PedidoController.java): `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/PedidoController.java`

### Inventory domain

- [Category rules](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/CategoriaService.java): `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/CategoriaService.java`
- [Product rules](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/ProdutoService.java): `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/ProdutoService.java`
- [Stock operations](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/EstoqueService.java): `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/EstoqueService.java`
- [Order & payment](https://github.com/ricardogm7/collina/blob/main/backend/src/main/java/br/ufs/dcomp/collina/service/estoque/PedidoService.java): `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/PedidoService.java`

### Persistence

- [JPA repositories](https://github.com/ricardogm7/collina/tree/main/backend/src/main/java/br/ufs/dcomp/collina/repository/estoque): `backend/src/main/java/br/ufs/dcomp/collina/repository/estoque`
- [Inventory entities](https://github.com/ricardogm7/collina/tree/main/backend/src/main/java/br/ufs/dcomp/collina/model/estoque): `backend/src/main/java/br/ufs/dcomp/collina/model/estoque`
- **PostgreSQL**

### Other components

- **Club user**

## Connections

- Club user → React app: uses
- React app → Routes: renders
- Routes → Route guard: protects routes
- Route guard → Auth state: checks identity
- Auth state → Firebase Auth: uses provider
- React app → API client: requests data
- API client → Category endpoints: calls API
- API client → Product endpoints: calls API
- API client → Stock endpoints: calls API
- API client → Order endpoints: calls API
- Category endpoints → Category rules: delegates to (evidence: `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/CategoriaController.java`)
- Product endpoints → Product rules: delegates to (evidence: `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/ProdutoController.java`)
- Stock endpoints → Stock operations: delegates to (evidence: `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/EstoqueController.java`)
- Order endpoints → Order & payment: delegates to (evidence: `backend/src/main/java/br/ufs/dcomp/collina/controller/estoque/PedidoController.java`)
- Category rules → JPA repositories: reads and writes (evidence: `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/CategoriaService.java`)
- Product rules → JPA repositories: reads and writes (evidence: `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/ProdutoService.java`)
- Stock operations → JPA repositories: updates stock (evidence: `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/EstoqueService.java`)
- Order & payment → JPA repositories: manages orders (evidence: `backend/src/main/java/br/ufs/dcomp/collina/service/estoque/PedidoService.java`)
- JPA repositories → Inventory entities: persists (evidence: `backend/src/main/java/br/ufs/dcomp/collina/repository/estoque/MovimentacaoEstoqueRepository.java`)
- Inventory entities → PostgreSQL: maps tables
