diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..7ecbb90 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +name: Continuous Integration + +on: + push: + branches: + - main + + pull_request: + branches: + - main + +jobs: + quality: + name: Quality Assurance + + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Upgrade pip + run: | + python -m pip install --upgrade pip + + - name: Install project + run: | + python -m pip install -e ".[dev]" + + - name: Ruff + run: | + python -m ruff check . + python -m ruff format --check . + + - name: MyPy + run: | + python -m mypy . + + - name: Test & Coverage + run: | + python -m coverage run -m pytest + python -m coverage report diff --git a/README.md b/README.md index 4d373c1..226c93d 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,40 @@ # SMAVS > **SMAVS (Su Misura Al Vostro Sistema)** -> The Composition Engine developed by **Spiral**. +> Il Composition Engine proprietario sviluppato da **Spiral**. --- -## Overview +## Cos'è SMAVS -SMAVS is a deterministic composition engine designed to transform structured specifications into complete software artifacts through a modular composition pipeline. +SMAVS è un **Composition Engine deterministico** progettato per trasformare una specifica strutturata in un artefatto software completo attraverso una pipeline di composizione modulare. -Rather than generating code directly, SMAVS analyzes a specification, selects compatible modules, resolves dependencies, builds an execution plan, and composes the final artifact. +Il framework non genera semplicemente codice e non è un template engine o un website builder. -The framework is built around the principles of: +SMAVS analizza una specifica, seleziona i moduli compatibili, risolve automaticamente le dipendenze, costruisce un piano di esecuzione e compone l'artefatto finale in maniera completamente deterministica. -- Deterministic execution -- Modular architecture -- Composition over inheritance -- Domain-Driven Design +--- + +## Principi + +L'intera architettura del framework è basata sui seguenti principi: + +- Determinismo +- Modularità +- Composition over Inheritance +- Domain-Driven Design (DDD) - Clean Architecture -- Layer isolation -- Dependency inversion -- Immutability +- Layer Isolation +- Dependency Inversion +- Immutabilità --- -## Architecture +## Architettura -The composition pipeline follows the architecture defined by the Software Architecture Specification (SAS): +La pipeline di composizione segue l'architettura definita nella Software Architecture Specification (SAS). -``` +```text JSON │ ▼ @@ -53,13 +59,13 @@ Composition Artifact ``` -Each layer communicates exclusively through Contracts. +Ogni layer comunica esclusivamente attraverso i **Contract** definiti dal framework. --- -## Repository Structure +## Struttura della Repository -``` +```text smavs/ ├── api/ @@ -76,84 +82,92 @@ smavs/ --- -## Current Status +## Obiettivi -Current version: +SMAVS è progettato per: -``` -0.1.0 (Foundation) -``` +- analizzare una specifica di progetto; +- costruire il Composition Context; +- selezionare automaticamente i moduli; +- risolvere dipendenze e conflitti; +- generare un Execution Plan; +- comporre artefatti software riproducibili. -Current implementation phase: +A parità di: -``` -PHASE 0 — Foundation -``` +- specifica; +- versione del framework; +- versione dei moduli; -Current sprint: - -``` -Sprint 0.1 — Repository -``` +SMAVS produrrà sempre lo stesso risultato. --- -## Project Goals +## Stack Tecnologico -SMAVS aims to provide a deterministic engine capable of: - -- analyzing project specifications; -- building composition contexts; -- resolving module dependencies; -- selecting compatible variants; -- composing software artifacts; -- producing reproducible outputs. - -Given the same: - -- specification; -- framework version; -- module versions; - -SMAVS always produces the same artifact. - ---- - -## Technology Stack - -- Python 3.12+ +- Python 3.11+ - Domain-Driven Design - Clean Architecture - SOLID -- Dataclasses -- Protocols -- Pydantic v2 (API only) +- Dataclass immutabili +- Protocol +- Pydantic v2 (solo API) --- -## Documentation +## Stato del Progetto -Project documentation is organized under the `docs/` directory. +Versione corrente -It includes: +```text +0.1.0 +``` -- Architecture -- Guides +Fase corrente + +```text +PHASE 0 — Foundation +``` + +Stato + +```text +In sviluppo +``` + +--- + +## Documentazione + +La documentazione del progetto è disponibile nella cartella `docs/` ed è organizzata nelle seguenti sezioni: + +- Architettura +- Guide - API -- Contracts -- Modules -- Examples +- Contract +- Moduli +- Esempi --- -## License +## Licenza -This project is licensed under the terms described in the `LICENSE` file. +SMAVS è un software proprietario sviluppato da **Spiral**. + +L'utilizzo, la modifica e la distribuzione sono regolati dal file `LICENSE`. --- -## Developed by +## Repository -**Spiral** +Repository ufficiale: -SMAVS is the proprietary Composition Engine powering the Spiral ecosystem. +``` +https://gitea.netbird.smavs.duckdns.org/SMAVS/smavs +``` + +--- + +## Spiral + +SMAVS costituisce il motore di composizione alla base dell'ecosistema **Spiral** ed è progettato per consentire la generazione deterministica di artefatti software modulari, estendibili e completamente componibili. diff --git a/pyproject.toml b/pyproject.toml index b67b9bf..938380b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -180,3 +180,12 @@ exclude_lines = [ [tool.mkdocs] config_file = "mkdocs.yml" + + +[tool.coverage.paths] +source = [ + ".", +] + +[tool.coverage.html] +directory = "htmlcov"