Logo

Desenvolvimento

Guias para desenvolvedores do Sinapse

Esta seção contém guias e recursos para desenvolvedores que trabalham no Sinapse.

Guias para Desenvolvedores

Quick Start para Devs

# Clone e entre no projeto
git clone https://github.com/sinapse/core-api.git
cd core-api

# Crie ambiente virtual
python -m venv venv
source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate  # Windows

# Instale dependências
pip install -r requirements.txt
pip install -r requirements-dev.txt

# Configure ambiente
cp .env.example .env
# Edite .env

# Rode com Docker
docker-compose up -d

# Ou rode localmente
uvicorn main:app --reload

Ferramentas de Desenvolvimento

Essenciais

  • Python 3.11+ - Runtime principal
  • VS Code - IDE recomendada
  • Docker - Ambiente isolado
  • Git - Controle de versão

Recomendadas

  • Black - Formatação de código
  • Ruff - Linting rápido
  • mypy - Type checking
  • pytest - Framework de testes

Padrões de Código

Python Style

# Bom
async def get_user_by_id(
    user_id: int,
    db: AsyncSession = Depends(get_db)
) -> UserModel | None:
    """Busca usuário por ID."""
    result = await db.execute(
        select(UserModel).where(UserModel.id == user_id)
    )
    return result.scalar_one_or_none()

# Evitar
def getUser(id):
    return db.query(User).filter(User.id == id).first()

Estrutura de Módulos

modules/
└── novo_modulo/
    ├── __init__.py
    ├── endpoints.py      # Rotas FastAPI
    ├── models.py         # Modelos SQLAlchemy
    ├── schemas.py        # Schemas Pydantic
    ├── services.py       # Lógica de negócio
    └── repository.py     # Acesso a dados

Desenvolvimento Orientado a Testes

Pirâmide de Testes

  1. Unitários (70%) - Lógica isolada
  2. Integração (20%) - Componentes juntos
  3. E2E (10%) - Fluxos completos

Exemplo de Teste

@pytest.mark.asyncio
async def test_create_user(client: AsyncClient, db: AsyncSession):
    # Arrange
    user_data = {
        "nome": "Test User",
        "email": "[email protected]",
        "senha": "Test123!"
    }
    
    # Act
    response = await client.post("/api/v1/usuarios", json=user_data)
    
    # Assert
    assert response.status_code == 201
    data = response.json()
    assert data["email"] == user_data["email"]

Workflow de Desenvolvimento

  1. Crie branch do tipo: feature/, fix/, docs/
  2. Desenvolva seguindo os padrões
  3. Teste localmente e com CI
  4. Documente mudanças significativas
  5. Abra PR com descrição clara
  6. Code Review por pelo menos 1 dev
  7. Merge após aprovação

Debugging

VS Code Launch Config

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "FastAPI",
      "type": "python",
      "request": "launch",
      "module": "uvicorn",
      "args": ["main:app", "--reload", "--port", "8000"],
      "jinja": true,
      "justMyCode": false
    }
  ]
}

Debug com Docker

# Em main.py
if settings.DEBUG:
    import debugpy
    debugpy.listen(("0.0.0.0", 5678))
    print("Debugger pronto na porta 5678")

Recursos Úteis

Documentação

Comunidade

  • Slack interno: #sinapse-dev
  • GitHub Discussions
  • Stack Overflow: [sinapse-api]

Dica: Use o comando make para tarefas comuns como make test, make lint, make format.


Explore os guias detalhados através dos cards acima!

On this page