O Fast Zero é uma aplicação web desenvolvida com FastAPI. O projeto utiliza PostgreSQL como banco de dados relacional, SQLAlchemy como ORM, gerenciamento de migrações com Alembic e controle de dependências através do uv.
O projeto foi desenvolvido durante ocurso de Python do Dunossauro.
- Python 3.14
- FastAPI
- PostgreSQL
- SQLAlchemy & Alembic
- uv (Gerenciamento de dependências)
- Docker & Docker Compose
- pytest (Testes automatizados)
- ruff (Linting e formatação)
- taskipy (Automação de tarefas)
Para executar o projeto, certifique-se de ter instalado:
- Python 3.14
- uv
- Docker e Docker Compose (para instanciar o banco de dados e/ou executar a aplicação conteinerizada)
-
Acesse o diretório raiz do projeto.
-
Instale as dependências com o uv:
uv sync- Crie um arquivo
.envna raiz do projeto com as seguintes variáveis de ambiente:
DATABASE_URL="postgresql+psycopg://app_user:app_password@localhost:5432/app_db"
SECRET_KEY="sua-chave-secreta"
ALGORITHM="HS256"
ACCESS_TOKEN_EXPIRE_MINUTES="30"(Nota: Para desenvolvimento local sem o Docker, você pode alterar o DATABASE_URL para sqlite+aiosqlite:///database.db e ignorar a próxima etapa).
- Inicie o banco de dados PostgreSQL usando o Docker Compose:
docker compose up fastzero_database -d- Execute as migrações do banco de dados para criar as tabelas necessárias:
uv run alembic upgrade head- Inicie o servidor de desenvolvimento:
uv run task runA API estará acessível em: http://localhost:8000
Para rodar o ambiente completo (API + Banco de Dados) apenas com Docker:
- Na raiz do projeto, execute o seguinte comando:
docker compose up --buildO contêiner da aplicação automaticamente executará as migrações necessárias e iniciará o servidor. O serviço também estará disponível na porta 8000.
O projeto utiliza o taskipy para facilitar a execução de comandos frequentes.
Para rodar os testes (com cobertura de código):
uv run task testPara checar erros de tipografia (typos) e executar o linter (ruff):
uv run task lintPara formatar o código de acordo com o padrão do projeto:
uv run task format