{
  "project": {
    "name": "mockupAWS",
    "description": "Simulatore locale del backend AWS per LogWhispererAI - Profiler e Cost Estimator",
    "type": "python-fastapi",
    "version": "0.1.0"
  },
  "language": "it",
  "tech_stack": {
    "framework": "FastAPI",
    "python_version": ">=3.11",
    "key_dependencies": [
      "fastapi>=0.110.0",
      "pydantic>=2.7.0",
      "tiktoken>=0.6.0",
      "uvicorn>=0.29.0"
    ],
    "dev_dependencies": [
      "pytest>=8.1.1",
      "httpx>=0.27.0"
    ],
    "package_manager": "uv"
  },
  "architecture": {
    "pattern": "layered",
    "principles": [
      "Safety First - Validazione integrità payload e sanitizzazione dati",
      "Little Often - Processamento a piccoli batch",
      "Double Check - Validazione finale prompt prima calcolo costi"
    ],
    "components": [
      {
        "name": "Ingestion API",
        "path": "src/main.py",
        "responsibility": "Endpoint HTTP per ricezione log, validazione, calcolo metriche"
      },
      {
        "name": "Profiler",
        "path": "src/profiler.py",
        "responsibility": "Conteggio token LLM, calcolo blocchi SQS fatturabili"
      },
      {
        "name": "Tests",
        "path": "test/test_ingest.py",
        "responsibility": "Test TDD per metriche, validazione payload, token count"
      }
    ]
  },
  "development": {
    "methodology": "TDD",
    "workflow": "Spec-Driven",
    "commit_style": "Conventional Commits",
    "git_strategy": "feature-branch"
  },
  "conventions": {
    "code_style": "PEP8",
    "naming": {
      "functions": "snake_case",
      "classes": "PascalCase",
      "constants": "UPPER_CASE"
    },
    "imports": [
      "Importare sempre prima le librerie standard",
      "Poi le librerie di terze parti",
      "Infine i moduli locali"
    ]
  },
  "aws_simulation": {
    "services": [
      {
        "name": "SQS",
        "billing_block_size": "64KB (65536 bytes)",
        "metric": "sqs_billing_blocks"
      },
      {
        "name": "Lambda",
        "metric": "lambda_simulated_invocations"
      },
      {
        "name": "Bedrock/LLM",
        "tokenizer": "cl100k_base",
        "metric": "llm_estimated_input_tokens"
      }
    ]
  },
  "export_files": {
    "prd": "export/prd.md",
    "architecture": "export/architecture.md",
    "kanban": "export/kanban.md",
    "progress": "export/progress.md",
    "githistory": "export/githistory.md"
  },
  "commands": {
    "install": "uv sync",
    "run": "uv run uvicorn src.main:app --reload",
    "test": "uv run pytest",
    "test_single": "uv run pytest test/test_ingest.py::test_name -v"
  }
}
