feat: initial project setup with scenarios, database and web ui

Add complete mockupAWS platform for AWS cost estimation:
- FastAPI backend with scenario management
- PostgreSQL database schema for scenarios, metrics, logs
- AWS pricing table with real pricing data
- React frontend dashboard (planned)
- PII detection and token counting
- Report generation (PDF/CSV)
- Complete test suite with pytest
- Docker Compose setup
- Documentation: README, PRD, Architecture
- OpenCode configuration (.opencode/)
This commit is contained in:
Luca Sacchi Ricciardi
2026-04-07 12:52:18 +02:00
parent b539134280
commit 59e5cf48f0
23 changed files with 2982 additions and 29 deletions

59
docs/architecture.md Normal file
View File

@@ -0,0 +1,59 @@
# Architecture Decision Records
> Registro delle decisioni architetturali e dei pattern di design utilizzati.
## Formato
```markdown
## [YYYY-MM-DD] - [Titolo Decisione]
### Contesto
[Background e motivazione]
### Decisione
[Cosa è stato deciso]
### Conseguenze
- Positivo: [Benefici]
- Negativo: [Trade-off]
### Alternative Considerate
- [Alternativa 1]: [Perché scartata]
- [Alternativa 2]: [Perché scartata]
```
---
## Esempio Template
## 2026-04-05 - Uso di FastAPI come framework API
### Contesto
Necessità di un framework web async per l'API REST con documentazione OpenAPI automatica.
### Decisione
Adottare FastAPI come framework principale per:
- Supporto nativo async/await
- Validazione automatica con Pydantic
- Documentazione OpenAPI/Swagger integrata
- Performance elevate
### Conseguenze
- **Positivo:**
- Sviluppo più rapido con type hints
- Documentazione API sempre aggiornata
- Validazione input automatica
- Supporto nativo async per I/O bound operations
- **Negativo:**
- Curva di apprendimento per sviluppatori nuovi
- Dipendenza da Pydantic v2
### Alternative Considerate
- **Flask**: Scartato per mancanza di supporto async nativo
- **Django REST Framework**: Scartato per essere troppo pesante per API-only
- **Starlette**: Scartato in favore di FastAPI che include più funzionalità out-of-box
---
*Aggiungere nuove decisioni in ordine cronologico crescente*

36
docs/bug_ledger.md Normal file
View File

@@ -0,0 +1,36 @@
# Bug Ledger
> Registro dei bug complessi risolti con sintomo, causa, soluzione e prevenzione.
## Formato
```markdown
## YYYY-MM-DD: [Titolo Bug]
**Sintomo:** [Descrizione sintomo]
**Causa:** [Root cause]
**Soluzione:** [Fix applicato]
**Prevenzione:** [Come evitare in futuro]
```
---
## Esempio Template
## 2026-04-05: Race condition in webhook dispatch
**Sintomo:** Webhook duplicati inviati sotto carico elevato
**Causa:** Manca meccanismo di lock nel dispatcher, richieste concorrenti causano doppia delivery
**Soluzione:**
- Aggiunto `asyncio.Lock()` nel dispatcher
- Sequentializza invio webhook per lo stesso evento
**Prevenzione:**
- Test di carico obbligatori per componenti async
- Code review focus su race condition
- Documentare comportamento thread-safe nei docstring
---
*Aggiungere nuovi bug in ordine cronologico decrescente (più recente in cima)*