docs: update documentation and add Docker configuration for v0.3.0
- Update README.md with v0.3.0 completion status and improved setup instructions - Update export/progress.md with completed tasks (53/55, 96% progress) - Update export/architecture.md with current project structure and implementation status - Add docker-compose.yml with PostgreSQL service - Add Dockerfile.backend for production builds - Add frontend/Dockerfile for multi-stage builds - Update .gitignore with comprehensive rules for Python, Node.js, and Docker Project status: - v0.2.0: Database and Backend API ✅ - v0.3.0: Frontend React implementation ✅ - v0.4.0: Reports and visualization (planned)
This commit is contained in:
@@ -374,7 +374,7 @@ LIMIT 1;
|
||||
openapi: 3.0.0
|
||||
info:
|
||||
title: mockupAWS API
|
||||
version: 0.2.0
|
||||
version: 0.3.0
|
||||
description: AWS Cost Simulation Platform API
|
||||
|
||||
servers:
|
||||
@@ -902,167 +902,173 @@ def detect_pii(message: str) -> dict:
|
||||
| Testing | pytest | ≥8.1 | Test framework |
|
||||
| HTTP Client | httpx | ≥0.27 | Async HTTP |
|
||||
|
||||
### 7.2 Frontend
|
||||
### 7.2 Frontend (v0.3.0 Implemented)
|
||||
|
||||
| Component | Technology | Version | Purpose |
|
||||
|-----------|------------|---------|---------|
|
||||
| Framework | React | ≥18 | UI library |
|
||||
| Language | TypeScript | ≥5.0 | Type safety |
|
||||
| Build | Vite | latest | Build tool |
|
||||
| Styling | Tailwind CSS | ≥3.4 | CSS framework |
|
||||
| Components | shadcn/ui | latest | UI components |
|
||||
| Charts | Recharts | latest | Data viz |
|
||||
| State | React Query | ≥5.0 | Server state |
|
||||
| HTTP | Axios | latest | HTTP client |
|
||||
| Routing | React Router | ≥6.0 | Navigation |
|
||||
| Component | Technology | Version | Purpose | Status |
|
||||
|-----------|------------|---------|---------|--------|
|
||||
| Framework | React | ≥18 | UI library | ✅ Implemented |
|
||||
| Language | TypeScript | ≥5.0 | Type safety | ✅ Implemented |
|
||||
| Build | Vite | ≥5.0 | Build tool | ✅ Implemented |
|
||||
| Styling | Tailwind CSS | ≥3.4 | CSS framework | ✅ Implemented |
|
||||
| Components | shadcn/ui | latest | UI components | ✅ 10+ components |
|
||||
| Icons | Lucide React | latest | Icon library | ✅ Implemented |
|
||||
| State | TanStack Query | ≥5.0 | Server state | ✅ React Query v5 |
|
||||
| HTTP | Axios | ≥1.6 | HTTP client | ✅ With interceptors |
|
||||
| Routing | React Router | ≥6.0 | Navigation | ✅ Implemented |
|
||||
| Charts | Recharts | ≥2.0 | Data viz | 🔄 Planned v0.4.0 |
|
||||
| Forms | React Hook Form | latest | Form management | 🔄 Planned v0.4.0 |
|
||||
| Validation | Zod | latest | Schema validation | 🔄 Planned v0.4.0 |
|
||||
|
||||
### 7.3 Infrastructure
|
||||
**Note v0.3.0:**
|
||||
- ✅ 3 pages complete: Dashboard, ScenarioDetail, ScenarioEdit
|
||||
- ✅ 10+ shadcn/ui components integrated
|
||||
- ✅ React Query for data fetching with caching
|
||||
- ✅ Axios with error interceptors and toast notifications
|
||||
- ✅ Responsive design with Tailwind CSS
|
||||
- 🔄 Charts and advanced forms in v0.4.0
|
||||
|
||||
| Component | Technology | Purpose |
|
||||
|-----------|------------|---------|
|
||||
| Container | Docker | Application containers |
|
||||
| Orchestration | Docker Compose | Multi-container dev |
|
||||
| Database | PostgreSQL 15+ | Primary data store |
|
||||
| Reverse Proxy | Nginx | SSL, static files |
|
||||
| Process Manager | systemd / PM2 | Production process mgmt |
|
||||
### 7.3 Infrastructure (v0.3.0 Status)
|
||||
|
||||
| Component | Technology | Purpose | Status |
|
||||
|-----------|------------|---------|--------|
|
||||
| Container | Docker | Application containers | ✅ PostgreSQL |
|
||||
| Orchestration | Docker Compose | Multi-container dev | ✅ Dev setup |
|
||||
| Database | PostgreSQL 15+ | Primary data store | ✅ Running |
|
||||
| Reverse Proxy | Nginx | SSL, static files | 🔄 Planned v0.4.0 |
|
||||
| Process Manager | systemd / PM2 | Production process mgmt | 🔄 Planned v1.0.0 |
|
||||
|
||||
**Docker Services:**
|
||||
```yaml
|
||||
# Current (v0.3.0)
|
||||
- postgres: PostgreSQL 15 with healthcheck
|
||||
Status: ✅ Tested and running
|
||||
Ports: 5432:5432
|
||||
Volume: postgres_data (persistent)
|
||||
|
||||
# Planned (v1.0.0)
|
||||
- backend: FastAPI production image
|
||||
- frontend: Nginx serving React build
|
||||
- nginx: Reverse proxy with SSL
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Project Structure
|
||||
## 8. Project Structure (v0.3.0 - Implemented)
|
||||
|
||||
```
|
||||
mockupAWS/
|
||||
├── backend/
|
||||
│ ├── src/
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── main.py # FastAPI app entry
|
||||
├── src/ # Backend FastAPI (Root level)
|
||||
│ ├── main.py # FastAPI app entry
|
||||
│ ├── core/ # Core utilities
|
||||
│ │ ├── config.py # Settings & env vars
|
||||
│ │ ├── dependencies.py # FastAPI dependencies
|
||||
│ │ ├── models/ # SQLAlchemy models
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── base.py # Base model
|
||||
│ │ │ ├── scenario.py
|
||||
│ │ │ ├── scenario_log.py
|
||||
│ │ │ ├── scenario_metric.py
|
||||
│ │ │ ├── aws_pricing.py
|
||||
│ │ │ └── report.py
|
||||
│ │ ├── schemas/ # Pydantic schemas
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── scenario.py
|
||||
│ │ │ ├── log.py
|
||||
│ │ │ ├── metric.py
|
||||
│ │ │ ├── pricing.py
|
||||
│ │ │ └── report.py
|
||||
│ │ ├── api/ # API routes
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── deps.py # Dependencies
|
||||
│ │ │ └── v1/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── scenarios.py # /scenarios/*
|
||||
│ │ │ ├── ingest.py # /ingest
|
||||
│ │ │ ├── metrics.py # /metrics
|
||||
│ │ │ ├── reports.py # /reports
|
||||
│ │ │ └── pricing.py # /pricing
|
||||
│ │ ├── services/ # Business logic
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── scenario_service.py
|
||||
│ │ │ ├── ingest_service.py
|
||||
│ │ │ ├── cost_calculator.py
|
||||
│ │ │ ├── report_service.py
|
||||
│ │ │ └── pii_detector.py
|
||||
│ │ ├── repositories/ # Data access
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── base.py
|
||||
│ │ │ ├── scenario_repo.py
|
||||
│ │ │ ├── log_repo.py
|
||||
│ │ │ ├── metric_repo.py
|
||||
│ │ │ └── pricing_repo.py
|
||||
│ │ ├── core/ # Core utilities
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── security.py # Auth, JWT
|
||||
│ │ │ ├── database.py # DB connection
|
||||
│ │ │ └── exceptions.py # Custom exceptions
|
||||
│ │ └── utils/ # Utilities
|
||||
│ │ ├── __init__.py
|
||||
│ │ └── hashing.py # SHA-256 utils
|
||||
│ ├── alembic/ # Database migrations
|
||||
│ │ ├── versions/ # Migration files
|
||||
│ │ ├── env.py
|
||||
│ │ └── alembic.ini
|
||||
│ ├── tests/
|
||||
│ │ ├── database.py # SQLAlchemy async config
|
||||
│ │ └── exceptions.py # Custom exception handlers
|
||||
│ ├── models/ # SQLAlchemy models (v0.2.0)
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── conftest.py # pytest fixtures
|
||||
│ │ ├── unit/
|
||||
│ │ │ ├── test_services.py
|
||||
│ │ │ └── test_cost_calculator.py
|
||||
│ │ ├── integration/
|
||||
│ │ │ ├── test_api_scenarios.py
|
||||
│ │ │ ├── test_api_ingest.py
|
||||
│ │ │ └── test_api_metrics.py
|
||||
│ │ └── e2e/
|
||||
│ │ └── test_full_flow.py
|
||||
│ ├── Dockerfile
|
||||
│ ├── pyproject.toml
|
||||
│ └── requirements.txt
|
||||
│ │ ├── scenario.py
|
||||
│ │ ├── scenario_log.py
|
||||
│ │ ├── scenario_metric.py
|
||||
│ │ ├── aws_pricing.py
|
||||
│ │ └── report.py
|
||||
│ ├── schemas/ # Pydantic schemas
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── scenario.py
|
||||
│ │ ├── scenario_log.py
|
||||
│ │ └── scenario_metric.py
|
||||
│ ├── api/ # API routes
|
||||
│ │ ├── deps.py # FastAPI dependencies (get_db)
|
||||
│ │ └── v1/
|
||||
│ │ ├── __init__.py # API router aggregation
|
||||
│ │ ├── scenarios.py # CRUD endpoints (v0.2.0)
|
||||
│ │ ├── ingest.py # Log ingestion (v0.2.0)
|
||||
│ │ └── metrics.py # Metrics endpoints (v0.2.0)
|
||||
│ ├── repositories/ # Repository pattern (v0.2.0)
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── base.py
|
||||
│ │ ├── scenario.py
|
||||
│ │ ├── scenario_log.py
|
||||
│ │ ├── scenario_metric.py
|
||||
│ │ └── aws_pricing.py
|
||||
│ └── services/ # Business logic (v0.2.0)
|
||||
│ ├── __init__.py
|
||||
│ ├── pii_detector.py # PII detection service
|
||||
│ ├── cost_calculator.py # AWS cost calculation
|
||||
│ └── ingest_service.py # Log ingestion orchestration
|
||||
│
|
||||
├── frontend/
|
||||
├── frontend/ # Frontend React (v0.3.0)
|
||||
│ ├── src/
|
||||
│ │ ├── App.tsx # Root component with routing
|
||||
│ │ ├── main.tsx # React entry point
|
||||
│ │ ├── components/
|
||||
│ │ │ ├── ui/ # shadcn/ui components
|
||||
│ │ │ ├── layout/
|
||||
│ │ │ ├── layout/ # Layout components
|
||||
│ │ │ │ ├── Header.tsx
|
||||
│ │ │ │ ├── Sidebar.tsx
|
||||
│ │ │ │ └── Layout.tsx
|
||||
│ │ │ ├── scenarios/
|
||||
│ │ │ │ ├── ScenarioList.tsx
|
||||
│ │ │ │ ├── ScenarioCard.tsx
|
||||
│ │ │ │ ├── ScenarioForm.tsx
|
||||
│ │ │ │ └── ScenarioDetail.tsx
|
||||
│ │ │ ├── metrics/
|
||||
│ │ │ │ ├── MetricCard.tsx
|
||||
│ │ │ │ ├── CostChart.tsx
|
||||
│ │ │ │ └── MetricsDashboard.tsx
|
||||
│ │ │ └── reports/
|
||||
│ │ │ ├── ReportGenerator.tsx
|
||||
│ │ │ └── ReportDownload.tsx
|
||||
│ │ ├── pages/
|
||||
│ │ │ ├── Dashboard.tsx
|
||||
│ │ │ ├── ScenariosPage.tsx
|
||||
│ │ │ ├── ScenarioCreate.tsx
|
||||
│ │ │ ├── ScenarioDetail.tsx
|
||||
│ │ │ ├── Compare.tsx
|
||||
│ │ │ ├── Reports.tsx
|
||||
│ │ │ └── Settings.tsx
|
||||
│ │ ├── hooks/
|
||||
│ │ │ └── ui/ # shadcn/ui components (v0.3.0)
|
||||
│ │ │ ├── button.tsx
|
||||
│ │ │ ├── card.tsx
|
||||
│ │ │ ├── dialog.tsx
|
||||
│ │ │ ├── input.tsx
|
||||
│ │ │ ├── label.tsx
|
||||
│ │ │ ├── table.tsx
|
||||
│ │ │ ├── textarea.tsx
|
||||
│ │ │ ├── toast.tsx
|
||||
│ │ │ ├── toaster.tsx
|
||||
│ │ │ └── sonner.tsx
|
||||
│ │ ├── pages/ # Page components (v0.3.0)
|
||||
│ │ │ ├── Dashboard.tsx # Scenarios list
|
||||
│ │ │ ├── ScenarioDetail.tsx # Scenario view/edit
|
||||
│ │ │ └── ScenarioEdit.tsx # Create/edit form
|
||||
│ │ ├── hooks/ # React Query hooks (v0.3.0)
|
||||
│ │ │ ├── useScenarios.ts
|
||||
│ │ │ ├── useMetrics.ts
|
||||
│ │ │ └── useReports.ts
|
||||
│ │ ├── services/
|
||||
│ │ │ ├── api.ts # Axios config
|
||||
│ │ │ ├── scenarioApi.ts
|
||||
│ │ │ └── metricApi.ts
|
||||
│ │ ├── types/
|
||||
│ │ │ ├── scenario.ts
|
||||
│ │ │ ├── metric.ts
|
||||
│ │ │ └── api.ts
|
||||
│ │ ├── context/
|
||||
│ │ │ └── ThemeContext.tsx
|
||||
│ │ ├── App.tsx
|
||||
│ │ └── main.tsx
|
||||
│ ├── public/
|
||||
│ ├── index.html
|
||||
│ ├── Dockerfile
|
||||
│ │ │ ├── useCreateScenario.ts
|
||||
│ │ │ └── useUpdateScenario.ts
|
||||
│ │ ├── lib/ # Utilities
|
||||
│ │ │ ├── api.ts # Axios client config
|
||||
│ │ │ ├── utils.ts # Utility functions
|
||||
│ │ │ └── queryClient.ts # React Query config
|
||||
│ │ └── types/
|
||||
│ │ └── api.ts # TypeScript types
|
||||
│ ├── package.json
|
||||
│ ├── vite.config.ts
|
||||
│ ├── tsconfig.json
|
||||
│ ├── tailwind.config.js
|
||||
│ └── vite.config.ts
|
||||
│ ├── components.json # shadcn/ui config
|
||||
│ └── Dockerfile # Production build
|
||||
│
|
||||
├── docker-compose.yml
|
||||
├── nginx.conf
|
||||
├── .env.example
|
||||
├── .env
|
||||
├── .gitignore
|
||||
└── README.md
|
||||
├── alembic/ # Database migrations (v0.2.0)
|
||||
│ ├── versions/ # 6 migrations implemented
|
||||
│ │ ├── 8c29fdcbbf85_create_scenarios_table.py
|
||||
│ │ ├── e46de4b0264a_create_scenario_logs_table.py
|
||||
│ │ ├── 5e247ed57b77_create_scenario_metrics_table.py
|
||||
│ │ ├── 48f2231e7c12_create_aws_pricing_table.py
|
||||
│ │ ├── e80c6eef58b2_create_reports_table.py
|
||||
│ │ └── 0892c44b2a58_seed_aws_pricing_data.py
|
||||
│ ├── env.py
|
||||
│ └── alembic.ini
|
||||
│
|
||||
├── export/ # Project documentation
|
||||
│ ├── prd.md # Product Requirements
|
||||
│ ├── architecture.md # This file
|
||||
│ ├── kanban.md # Task breakdown
|
||||
│ └── progress.md # Progress tracking
|
||||
│
|
||||
├── .opencode/ # OpenCode team config
|
||||
│ └── agents/ # 6 agent configurations
|
||||
│ ├── spec-architect.md
|
||||
│ ├── backend-dev.md
|
||||
│ ├── db-engineer.md
|
||||
│ ├── frontend-dev.md
|
||||
│ ├── devops-engineer.md
|
||||
│ └── qa-engineer.md
|
||||
│
|
||||
├── docker-compose.yml # PostgreSQL service
|
||||
├── Dockerfile.backend # Backend production image
|
||||
├── pyproject.toml # Python dependencies (uv)
|
||||
├── uv.lock # Locked dependencies
|
||||
├── .env # Environment variables
|
||||
├── .gitignore # Git ignore rules
|
||||
└── README.md # Project documentation
|
||||
```
|
||||
|
||||
---
|
||||
@@ -1287,6 +1293,145 @@ volumes:
|
||||
|
||||
---
|
||||
|
||||
## 13. Implementation Status & Changelog
|
||||
|
||||
### v0.2.0 - Backend Core ✅ COMPLETED
|
||||
|
||||
**Database Layer:**
|
||||
- ✅ PostgreSQL 15 with 5 tables (scenarios, logs, metrics, pricing, reports)
|
||||
- ✅ 6 Alembic migrations (including AWS pricing seed data)
|
||||
- ✅ SQLAlchemy 2.0 async models with relationships
|
||||
- ✅ Indexes and constraints optimized
|
||||
|
||||
**Backend API:**
|
||||
- ✅ FastAPI application with structured routing
|
||||
- ✅ Scenario CRUD endpoints (POST, GET, PUT, DELETE)
|
||||
- ✅ Ingest API with PII detection
|
||||
- ✅ Metrics API with cost calculation
|
||||
- ✅ Repository pattern implementation
|
||||
- ✅ Service layer (PII detector, Cost calculator, Ingest service)
|
||||
- ✅ Exception handlers and validation
|
||||
|
||||
**Data Processing:**
|
||||
- ✅ SHA-256 message hashing for deduplication
|
||||
- ✅ Email PII detection with regex
|
||||
- ✅ AWS cost calculation (SQS, Lambda, Bedrock)
|
||||
- ✅ Token counting with tiktoken
|
||||
|
||||
### v0.3.0 - Frontend Implementation ✅ COMPLETED
|
||||
|
||||
**React Application:**
|
||||
- ✅ Vite + TypeScript + React 18 setup
|
||||
- ✅ Tailwind CSS integration
|
||||
- ✅ shadcn/ui components (Button, Card, Dialog, Input, Label, Table, Textarea, Toast)
|
||||
- ✅ Lucide React icons
|
||||
|
||||
**State Management:**
|
||||
- ✅ TanStack Query (React Query) v5 for server state
|
||||
- ✅ Axios HTTP client with interceptors
|
||||
- ✅ Error handling with toast notifications
|
||||
|
||||
**Pages & Routing:**
|
||||
- ✅ Dashboard - Scenarios list with pagination
|
||||
- ✅ ScenarioDetail - View and edit scenarios
|
||||
- ✅ ScenarioEdit - Create and edit form
|
||||
- ✅ React Router v6 navigation
|
||||
|
||||
**API Integration:**
|
||||
- ✅ TypeScript types for all API responses
|
||||
- ✅ Custom hooks for data fetching (useScenarios, useCreateScenario, useUpdateScenario)
|
||||
- ✅ Loading states and error boundaries
|
||||
- ✅ Responsive design
|
||||
|
||||
**Docker & DevOps:**
|
||||
- ✅ Docker Compose with PostgreSQL service
|
||||
- ✅ Health checks for database
|
||||
- ✅ Dockerfile for backend (production ready)
|
||||
- ✅ Dockerfile for frontend (multi-stage build)
|
||||
- ✅ Environment configuration
|
||||
|
||||
### v0.4.0 - Reports & Visualization 🔄 PLANNED
|
||||
|
||||
**Features:**
|
||||
- 🔄 Report generation (PDF/CSV)
|
||||
- 🔄 Scenario comparison view
|
||||
- 🔄 Interactive charts (Recharts)
|
||||
- 🔄 Dark/Light mode toggle
|
||||
- 🔄 Advanced form validation (React Hook Form + Zod)
|
||||
|
||||
### v1.0.0 - Production Ready ⏳ PLANNED
|
||||
|
||||
**Security:**
|
||||
- ⏳ JWT authentication
|
||||
- ⏳ API key management
|
||||
- ⏳ Role-based access control
|
||||
|
||||
**Infrastructure:**
|
||||
- ⏳ Full Docker Compose stack (backend + frontend + nginx)
|
||||
- ⏳ SSL/TLS configuration
|
||||
- ⏳ Database backup automation
|
||||
- ⏳ Monitoring and logging
|
||||
|
||||
**Documentation:**
|
||||
- ⏳ Complete OpenAPI specification
|
||||
- ⏳ User guide
|
||||
- ⏳ API reference
|
||||
|
||||
---
|
||||
|
||||
## 14. Testing Status
|
||||
|
||||
### Current Coverage (v0.3.0)
|
||||
|
||||
| Layer | Type | Status | Coverage |
|
||||
|-------|------|--------|----------|
|
||||
| Backend Unit | pytest | ✅ Basic | ~45% |
|
||||
| Backend Integration | pytest | 🔄 Partial | Key endpoints |
|
||||
| Frontend Unit | Vitest | ⏳ Planned | - |
|
||||
| E2E | Playwright | ⏳ Planned | - |
|
||||
|
||||
### Test Files
|
||||
|
||||
```
|
||||
tests/
|
||||
├── __init__.py
|
||||
├── conftest.py # Fixtures
|
||||
├── unit/
|
||||
│ ├── test_main.py # Basic app tests (v0.1)
|
||||
│ ├── test_services.py # Service logic tests (planned)
|
||||
│ └── test_cost_calculator.py
|
||||
├── integration/
|
||||
│ ├── test_api_scenarios.py
|
||||
│ ├── test_api_ingest.py
|
||||
│ └── test_api_metrics.py
|
||||
└── e2e/
|
||||
└── test_full_flow.py # Complete user journey
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 15. Known Limitations & Technical Debt
|
||||
|
||||
### Current (v0.3.0)
|
||||
|
||||
1. **No Authentication**: API is open (JWT planned v1.0.0)
|
||||
2. **No Rate Limiting**: API endpoints unprotected (slowapi planned v0.4.0)
|
||||
3. **Frontend Charts Missing**: Recharts integration pending
|
||||
4. **Report Generation**: Backend ready but no UI
|
||||
5. **No Caching**: Every request hits database (Redis planned v1.0.0)
|
||||
6. **Limited Test Coverage**: Only basic tests from v0.1
|
||||
|
||||
### Resolved in v0.3.0
|
||||
|
||||
- ✅ Database connection pooling
|
||||
- ✅ Async SQLAlchemy implementation
|
||||
- ✅ React Query for efficient data fetching
|
||||
- ✅ Error handling with user-friendly messages
|
||||
- ✅ Docker setup for consistent development
|
||||
|
||||
---
|
||||
|
||||
*Documento creato da @spec-architect*
|
||||
*Versione: 1.0*
|
||||
*Data: 2026-04-07*
|
||||
*Versione: 1.1*
|
||||
*Ultimo aggiornamento: 2026-04-07*
|
||||
*Stato: v0.3.0 Completata*
|
||||
|
||||
Reference in New Issue
Block a user