# joaosantos6/jvtools architecture

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

## Overview

Este é um sistema serverless AWS que detecta abandono de formulários e envia lembretes push após um período de inatividade. O fluxo principal parte dos eventos do front-end, passa pelo API Gateway e pelo ActivityProcessor, que cria, reinicia ou cancela agendamentos; quando um agendamento dispara, o PushTrigger obtém credenciais e chama a API jvtools. O repositório também inclui um simulador FastAPI dessa API e infraestrutura de segredos e monitoramento. Relações de infraestrutura e monitoramento são documentadas no README, mas seus detalhes de implementação não foram amostrados.

Main entry points: [`lambdas/push_trigger/handler.py`](https://github.com/joaosantos6/jvtools/blob/main/lambdas/push_trigger/handler.py) (PushTrigger), [`lambdas/activity_processor/handler.py`](https://github.com/joaosantos6/jvtools/blob/main/lambdas/activity_processor/handler.py) (ActivityProcessor), [`api/main.py`](https://github.com/joaosantos6/jvtools/blob/main/api/main.py) (Simulador jvtools), [`infrastructure/modules/api_gateway/main.tf`](https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/api_gateway/main.tf) (API Gateway)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Entrada de atividade"]
  node_api_gateway["API Gateway<br/>[main.tf]"]
  node_activity_processor["ActivityProcessor<br/>[handler.py]"]
end

subgraph group_inactivity["Gestão de inatividade"]
  node_scheduler["EventBridge Scheduler<br/>[main.tf]"]
end

subgraph group_notification["Entrega de notificações"]
  node_push_trigger["PushTrigger<br/>[handler.py]"]
  node_jvtools_api["API jvtools"]
  node_api_simulator["Simulador jvtools<br/>[main.py]"]
  node_notification_models["Modelos de notificação<br/>[models.py]"]
  node_api_config["Configuração da API<br/>[config.py]"]
end

subgraph group_support["Configuração e observabilidade"]
  node_secrets_manager[("Secrets Manager<br/>[main.tf]")]
  node_cloudwatch[("CloudWatch<br/>[main.tf]")]
end

node_frontend(("Front-end"))

node_frontend -->|"envia atividade"| node_api_gateway
node_api_gateway -->|"roteia eventos"| node_activity_processor
node_activity_processor -->|"cria ou cancela"| node_scheduler
node_scheduler -->|"dispara após timeout"| node_push_trigger
node_push_trigger -->|"recupera credenciais"| node_secrets_manager
node_push_trigger -->|"envia notificação"| node_jvtools_api
node_jvtools_api -.->|"simulado por"| node_api_simulator
node_api_simulator -->|"valida com"| node_notification_models
node_api_simulator -->|"lê configurações"| node_api_config
node_activity_processor -.->|"registra atividade"| node_cloudwatch
node_push_trigger -.->|"registra resultados"| node_cloudwatch

click node_api_gateway "https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/api_gateway/main.tf"
click node_activity_processor "https://github.com/joaosantos6/jvtools/blob/main/lambdas/activity_processor/handler.py"
click node_scheduler "https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/eventbridge/main.tf"
click node_push_trigger "https://github.com/joaosantos6/jvtools/blob/main/lambdas/push_trigger/handler.py"
click node_secrets_manager "https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/secrets/main.tf"
click node_api_simulator "https://github.com/joaosantos6/jvtools/blob/main/api/main.py"
click node_notification_models "https://github.com/joaosantos6/jvtools/blob/main/api/models.py"
click node_api_config "https://github.com/joaosantos6/jvtools/blob/main/api/config.py"
click node_cloudwatch "https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/monitoring/main.tf"

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_api_gateway,node_activity_processor toneBlue
class node_scheduler toneAmber
class node_push_trigger,node_jvtools_api,node_api_simulator,node_notification_models,node_api_config toneMint
class node_secrets_manager,node_cloudwatch toneRose
class node_frontend toneIndigo
```

## Components

### Entrada de atividade

- [API Gateway](https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/api_gateway/main.tf): `infrastructure/modules/api_gateway/main.tf`
- [ActivityProcessor](https://github.com/joaosantos6/jvtools/blob/main/lambdas/activity_processor/handler.py): `lambdas/activity_processor/handler.py`

### Gestão de inatividade

- [EventBridge Scheduler](https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/eventbridge/main.tf): `infrastructure/modules/eventbridge/main.tf`

### Entrega de notificações

- [PushTrigger](https://github.com/joaosantos6/jvtools/blob/main/lambdas/push_trigger/handler.py): `lambdas/push_trigger/handler.py`
- **API jvtools**
- [Simulador jvtools](https://github.com/joaosantos6/jvtools/blob/main/api/main.py): `api/main.py`
- [Modelos de notificação](https://github.com/joaosantos6/jvtools/blob/main/api/models.py): `api/models.py`
- [Configuração da API](https://github.com/joaosantos6/jvtools/blob/main/api/config.py): `api/config.py`

### Configuração e observabilidade

- [Secrets Manager](https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/secrets/main.tf): `infrastructure/modules/secrets/main.tf`
- [CloudWatch](https://github.com/joaosantos6/jvtools/blob/main/infrastructure/modules/monitoring/main.tf): `infrastructure/modules/monitoring/main.tf`

### Other components

- **Front-end**

## Connections

- Front-end → API Gateway: envia atividade (evidence: `README.md`)
- API Gateway → ActivityProcessor: roteia eventos (evidence: `README.md`)
- ActivityProcessor → EventBridge Scheduler: cria ou cancela (evidence: `lambdas/activity_processor/handler.py`)
- EventBridge Scheduler → PushTrigger: dispara após timeout (evidence: `README.md`)
- PushTrigger → Secrets Manager: recupera credenciais (evidence: `lambdas/push_trigger/handler.py`)
- PushTrigger → API jvtools: envia notificação (evidence: `lambdas/push_trigger/handler.py`)
- API jvtools → Simulador jvtools: simulado por (evidence: `README.md`)
- Simulador jvtools → Modelos de notificação: valida com (evidence: `api/main.py`)
- Simulador jvtools → Configuração da API: lê configurações (evidence: `api/main.py`)
- ActivityProcessor → CloudWatch: registra atividade (evidence: `README.md`)
- PushTrigger → CloudWatch: registra resultados (evidence: `README.md`)
