|
1 | 1 | # NetMaster CLI/API |
2 | 2 |
|
3 | | -Bem-vindo ao **NetMaster CLI/API**, um projeto open-source concebido como um template base para automação de equipamentos de rede, ideal para uso em Hackathons, desafios de programação e estudos de arquitetura de software. |
| 3 | +Network automation template for provisioning and documenting network devices with a clean, extensible Python architecture. |
4 | 4 |
|
5 | | -## Propósito Pedagógico e Técnico |
| 5 | +## Overview |
6 | 6 |
|
7 | | -Este repositório foi criado com o objetivo de demonstrar a aplicação de **Clean Architecture** em um projeto Python moderno. Ele separa claramente as responsabilidades, facilitando a escalabilidade, manutenção e testes. |
| 7 | +NetMaster CLI/API is an educational and technical starter project for network automation. It separates domain rules, application use cases, interface adapters, and infrastructure details so students and engineers can evolve the repository into a CLI, REST API, or lab automation tool without mixing business logic with device-specific integrations. |
8 | 8 |
|
9 | | -### Arquitetura (Clean Architecture) |
| 9 | +## Problem |
10 | 10 |
|
11 | | -A estrutura do projeto está dividida nas seguintes camadas: |
| 11 | +Network teams often start automation scripts as isolated one-off files. That makes testing, reuse, and onboarding difficult. This repository demonstrates a more professional baseline for VLAN provisioning, device inventory, and future SSH/API integrations. |
12 | 12 |
|
13 | | -* **`domain/`**: Contém as Entidades (ex: `NetworkDevice`, `VLAN`) e regras de negócio puras, independentes de frameworks externos. |
14 | | -* **`application/`**: Contém os Casos de Uso (ex: `ProvisionVLANUseCase`), orquestrando o fluxo de dados entre as entidades e as interfaces externas. |
15 | | -* **`interface_adapters/`**: Responsável por converter os dados no formato mais conveniente para os casos de uso e vice-versa. Aqui residirão as rotas web (FastAPI) e os comandos de terminal (Typer). |
16 | | -* **`infrastructure/`**: Camada mais externa, contendo detalhes de implementação técnica, como persistência em banco de dados (SQLAlchemy) e comunicação com os equipamentos de rede via SSH (Netmiko). |
| 13 | +## Architecture |
17 | 14 |
|
18 | | -## Stack Tecnológica |
| 15 | +- `domain/`: pure entities such as `NetworkDevice` and `VLAN`. |
| 16 | +- `application/`: use cases such as `ProvisionVLANUseCase`. |
| 17 | +- `interface_adapters/`: future FastAPI routes, Typer commands, and serializers. |
| 18 | +- `infrastructure/`: future persistence, Netmiko drivers, and vendor-specific adapters. |
19 | 19 |
|
20 | | -O projeto utiliza as seguintes tecnologias: |
| 20 | +## Stack |
21 | 21 |
|
22 | | -* **Python 3.10+** |
23 | | -* [**FastAPI**](https://fastapi.tiangolo.com/): Para criação de uma API RESTful moderna e assíncrona. |
24 | | -* [**Uvicorn**](https://www.uvicorn.org/): Servidor ASGI para rodar a aplicação FastAPI. |
25 | | -* [**Typer**](https://typer.tiangolo.com/): Para criação de uma Interface de Linha de Comando (CLI) robusta. |
26 | | -* [**SQLAlchemy**](https://www.sqlalchemy.org/): ORM para persistência de dados. |
27 | | -* [**Netmiko**](https://pynet.twb-tech.com/blog/automation/netmiko.html): Para conexões seguras (SSH) e interação com equipamentos de rede. |
| 22 | +- Python 3.10+ |
| 23 | +- FastAPI and Uvicorn for REST APIs |
| 24 | +- Typer for command-line workflows |
| 25 | +- SQLAlchemy for persistence |
| 26 | +- Netmiko for SSH-based network device automation |
28 | 27 |
|
29 | | -## Como Iniciar |
| 28 | +## Getting Started |
30 | 29 |
|
31 | | -1. **Clone o repositório:** |
32 | | - ```bash |
33 | | - git clone <sua-url-do-github> |
34 | | - cd netmaster-cli-api |
35 | | - ``` |
| 30 | +```bash |
| 31 | +git clone https://github.com/albertomateus9/netmaster-cli-api.git |
| 32 | +cd netmaster-cli-api |
| 33 | +python -m venv .venv |
| 34 | +.venv\Scripts\activate |
| 35 | +pip install -r requirements.txt |
| 36 | +``` |
36 | 37 |
|
37 | | -2. **Ative o ambiente virtual:** |
38 | | - * No Windows: `venv\\Scripts\\activate` |
39 | | - * No Linux/macOS: `source venv/bin/activate` |
| 38 | +On Linux or macOS, activate the environment with: |
40 | 39 |
|
41 | | -3. **Instale as dependências:** |
42 | | - ```bash |
43 | | - pip install -r requirements.txt |
44 | | - ``` |
| 40 | +```bash |
| 41 | +source .venv/bin/activate |
| 42 | +``` |
45 | 43 |
|
46 | | -4. **Expanda a implementação!** |
47 | | - Comece implementando as interfaces em `interface_adapters/` e os adaptadores reais em `infrastructure/` guiados pelos casos de uso em `application/`. |
| 44 | +## Development Direction |
48 | 45 |
|
49 | | ---- |
50 | | -*Desenvolvido como um template base para aceleração de projetos de engenharia de redes.* |
| 46 | +- Implement repository interfaces for device inventory. |
| 47 | +- Add a Netmiko-backed network service for lab devices. |
| 48 | +- Expose the provisioning use case through FastAPI and Typer. |
| 49 | +- Add tests for domain entities and use-case orchestration. |
| 50 | + |
| 51 | +## Professional Context |
| 52 | + |
| 53 | +This repository reflects practical interests in telecom infrastructure, routing, network automation, and teaching software architecture through realistic engineering scenarios. |
| 54 | + |
| 55 | +## License |
| 56 | + |
| 57 | +MIT. See [LICENSE](LICENSE). |
0 commit comments