architek
========

**architek** é uma ferramenta CLI para criar automaticamente a estrutura de projetos.

Instalação
----------

Para instalar, use:

.. code-block:: bash

    pip install architek

Uso
---

Para criar um novo projeto no diretorio atual, execute:

.. code-block:: bash

    arc create

Ou para criar um novo projeto com um nome específico num diretorio novo:

.. code-block:: bash

    arc create --name nome_do_projeto

Se você preferir **não criar** um ambiente virtual, adicione a flag `--no-venv`:

.. code-block:: bash

    arc create --no-venv

Ou, ao criar o projeto com nome específico:

.. code-block:: bash

    arc create --name nome_do_projeto --no-venv


Se você deseja inicializar um repositório Git no projeto, adicione a flag --git:

.. code-block:: bash

    arc create --git

Ou, ao criar o projeto com nome específico:

.. code-block:: bash

    arc create --name nome_do_projeto --git

Se você já criou o projeto e deseja **ativar** o ambiente virtual, use o comando:

.. code-block:: bash

    arc start

Em caso de querer ativar o ambiente de um projeto especifico:

.. code-block:: bash

    arc start nome_do_projeto







Estrutura do Projeto
====================

.. code-block:: text

    /nome_do_projeto/
    ├── src/
    │   ├── app/
    │   ├── core/
    │   ├── integracoes/
    │   ├── utils/
    │   ├── api/
    ├── config/
    ├── dados/
    ├── logs/
    ├── tests/
    ├── requirements.txt
    ├── README.md
    ├── main.py

📂 src/ (Código-fonte principal)
--------------------------------
Aqui ficam todos os scripts e módulos essenciais para o funcionamento do seu.

- **app/** → Contém os projeto individuais, responsáveis pela automação das tarefas.  
  *Exemplo: Um projeto de automação `bot_exemplo.py` que pode fazer login em um sistema e extrair dados.*

- **core/** → Contém funcionalidades reutilizáveis essenciais, como manipulação de logs, autenticação e controle de erros.  
  *Exemplo: `logger.py` para registrar atividades do robô.*

- **integracoes/** → Guarda os módulos que fazem comunicação com sistemas externos, como APIs, bancos de dados, ou WebServices.  
  *Exemplo: `api_cliente.py` pode conter funções para enviar e receber dados de uma API.*

- **utils/** → Contém funções auxiliares comuns ao projeto, como manipulação de arquivos, datas e formatação de strings.  
  *Exemplo: `arquivos.py` pode ter funções para ler e escrever CSV, Excel, etc.*

- **api/** → Caso seu projeto precise expor serviços via API, aqui ficarão os endpoints necessários.  
  *Exemplo: `server.py` pode rodar um FastAPI/Flask para disponibilizar um serviço.*

📁 config/ (Configurações do projeto)
--------------------------------------
Contém arquivos de configuração, como variáveis de ambiente ou JSON/YAML para armazenar credenciais e parâmetros.  
*Exemplo: `config.yaml` pode armazenar URLs de APIs, usuários e senhas criptografadas.*

📁 dados/ (Entrada e saída de arquivos)
---------------------------------------
Diretório destinado para armazenar arquivos usados, como planilhas, XMLs, PDFs e outros dados de entrada/saída.  
*Exemplo: O bot pode buscar arquivos CSV aqui e gerar relatórios em Excel.*

📁 logs/ (Registro das execuções)
---------------------------------
Armazena logs detalhados das execuções. É essencial para rastrear erros e entender o comportamento do projeto.  
*Exemplo: `execucao_20240207.log` conterá um histórico do que o codigo fez durante uma execução.*

📁 tests/ (Testes automatizados)
--------------------------------
Guarda os testes unitários para validar a funcionalidade dos módulos do projeto.  
*Exemplo: `test_bots.py` pode conter testes para garantir que um bot de automação se comporta corretamente.*

📄 requirements.txt (Lista de dependências)
-------------------------------------------
Este arquivo contém todas as bibliotecas Python necessárias para o projeto rodar corretamente.  
O comando abaixo instalará tudo automaticamente:

.. code-block:: bash

    pip install -r requirements.txt

📄 README.md (Documentação do projeto)
--------------------------------------
Arquivo de documentação que explica o objetivo do projeto, como instalar, rodar e configurar.  
Deve conter um guia passo a passo para que qualquer pessoa possa entender e contribuir.

📄 main.py (Ponto de entrada do projeto)
----------------------------------------
Arquivo principal que inicia a execução.  

Exemplo de código:

.. code-block:: python

    if __name__ == "__main__":
        print("iniciado!")

💡 Com essa estrutura organizada, fica muito mais fácil manter o código limpo, escalável e reutilizável! 🚀