1
resposta

[Projeto] Projeto Sabor Express: Evolução do Curso para uma Arquitetura Profissional com FastAPI e Typer

Olá pessoal!

Estou muito animado em compartilhar a evolução do meu projeto final do curso de Python, o Sabor Express. Fui além do projeto original e o refatorei em uma aplicação completa, com uma API RESTful (FastAPI) e um cliente de linha de comando (CLI) interativo (Typer).

Link do GitHub: [https://github.com/YuriArduino/sabor_express]

Sobre o Projeto

A aplicação agora é dividida em duas partes principais que se comunicam:

  1. A API (Backend): Um servidor FastAPI que busca dados de restaurantes da web, os salva localmente em arquivos JSON e os serve através de endpoints RESTful.
  2. A CLI (Frontend): Uma interface de linha de comando que consome a API, permitindo ao usuário interagir com a aplicação de forma amigável e intuitiva.

A aplicação permite:

  • Listar todos os restaurantes com seus dados (categoria, status).
  • Visualizar o cardápio de um restaurante específico.
  • Navegar pelo cardápio de forma organizada, selecionando categorias (Bebidas, Sanduíches, etc.).
  • Cadastrar novos restaurantes e alterar o status dos existentes.

Toda a API possui documentação interativa via Swagger UI (/docs) e a validação de dados é garantida pelo Pydantic.

Principais Diferenciais e Tecnologias

O foco desta refatoração foi aplicar conceitos de arquitetura de software para criar uma base sólida e escalável. Os principais diferenciais são:

  • Arquitetura Limpa com src/ Layout: O código é organizado de forma profissional, separando a lógica da aplicação dos arquivos de configuração.
  • Separação de Responsabilidades (API vs. CLI): A API e a interface do usuário são completamente desacopladas, comunicando-se apenas via HTTP.
  • API Modular com FastAPI e APIRouter: Os endpoints são agrupados por recurso, tornando a API fácil de manter e expandir.
  • CLI Interativa e Orientada a Objetos: A CLI foi construída com Typer e classes que separam a lógica da UI (MenuUI) da comunicação com a API (ApiClient).
  • Enriquecimento Dinâmico de Dados: Criei um módulo classificador (classifier.py) que analisa os itens do cardápio e atribui categorias a eles em tempo real, sem precisar modificar os dados originais. Foco na organização e praticidade, um verdadeiro desafio não tratar e preparar os dados a priori.
  • Gerenciamento Moderno com pyproject.toml: Todas as dependências, metadados e configurações de ferramentas (como Pylint) estão centralizados em um único arquivo.
  • Ponto de Entrada via Script (sabor-express): O projeto é instalável e pode ser executado com comandos simples e diretos no terminal.

Solicitações de Feedback

Gostaria muito de receber o feedback de vocês, especialmente sobre:

  1. Arquitetura do Projeto: A separação entre API, CLI e os módulos de utilidade (utils) está clara e bem definida?
  2. Design da CLI: A abordagem com as classes MenuApp, ApiClient e MenuUI é uma boa prática para uma aplicação de terminal?
  3. Qualidade do Código: Existem pontos onde o código poderia ser mais "Pythônico" ou eficiente?
  4. Ele está preparado para escalonar?Construi considerando o seguinte ambiente profissional:
    • Implementar uma persistência real com um banco de dados (SQLite ou PostgreSQL).
    • Adicionar testes automatizados com pytest.
    • Criar um frontend web (React, Vue) para consumir a API.

Se puderem dar uma olhada no repositório e deixar sugestões, críticas ou correções, ficarei extremamente grato.

Obrigado

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá meu amigo.
Só pela apresentação já vi que é coisa de profissional.
Fiquei curioso e com certeza vou fuçar seu código no github.
Depois volto aqui para lhe dar um feedback.
Mas já lhe parabenizo adiantado por toda a sua dedicação.
Está no caminho certo...
Bons estudos e continue compartilhando seu aprendizado conosco.
Até...