Serviço de Noticas e Bibliotecas PyNews
- Python
- FastAPI
- Pydantic
- Poetry
- Sqlite3
- Orjson
- ruff (linter)
Endpoints para CRUD de noticias selecionadas pela comunidade.
[Documentação de referencia API Dog](https://apidog.com/apidoc/shared/70418cab-ddba-4c7d-97a4-8b70b43a7946/)
fastapi_news_service/
│
├── app/
│ ├── __init__.py # Marca 'app' como um pacote Python
│ ├── main.py # Ponto de entrada principal da aplicação FastAPI e inclusão dos routers
│ ├── schemas.py # Definições dos modelos Pydantic para todas as entidades (User, News, Library, Subscription)
│ │
│ ├── services/
│ │ ├── __init__.py # Marca 'services' como um pacote Python
│ │ ├── database.py # Lógica de conexão e gerenciamento de sessão com o banco de dados (SQLAlchemy/SQLModel)
│ │ ├── auth.py # Lógica de negócio para autenticação (hashing de senhas, geração/validação de JWT)
│ │
│ └── routers/
│ ├── __init__.py # Marca 'routers' como um pacote Python
│ ├── news.py # Definição dos endpoints da API para o módulo de Notícias (/news)
│ ├── libraries.py # Definição dos endpoints da API para o módulo de Libraries (/libraries)
│ └── authentication.py # Definição dos endpoints da API para o módulo de Autenticação (/auth)
│
├── test/ # Diretório para testes unitários
│ └── __init__.py
│ └── test_auth.py
│ └── test_news.py
│ └── test_libraries.py
│
├── .env # Arquivo para variáveis de ambiente (ex: credenciais do banco de dados, chave secreta JWT)
├── .gitignore # Regras para ignorar arquivos e diretórios no controle de versão (Git)
├── requirements.txt # Lista das dependências Python do projeto
├── Dockerfile # Definição para construir a imagem Docker da aplicação
├── docker-compose.yaml # Configuração para orquestrar serviços Docker (API, banco de dados)
├── Makefile # Utilitário para automação de tarefas (build, deploy, etc., incluindo scripts para Kubernetes)
├── pyproject.toml # Configuração de projeto Python (Poetry)
├── README.md # Este arquivo: Visão geral do projeto, instruções de configuração e uso
└── .vscode/ # Configurações específicas para o ambiente de desenvolvimento VS Code
├── settings.json # Configurações de formatação, linting, etc.
└── launch.json # Configurações para depuração da aplicação
sequenceDiagram
participant Cliente as Cliente
participant ServicoAutenticacao as Serviço de Autenticação
participant ServicoNoticias as Serviço de Notícias
activate Cliente
Cliente->>ServicoAutenticacao: Solicitar Login (credenciais)
activate ServicoAutenticacao
ServicoAutenticacao-->>Cliente: Retornar JWT (Token de Acesso)
deactivate ServicoAutenticacao
Cliente->>ServicoNoticias: Solicitar Criação de Notícia (dados da notícia, JWT)
activate ServicoNoticias
ServicoNoticias-->>Cliente: Notícia Criada (201 Created)
deactivate ServicoNoticias
deactivate Cliente
[TBD]
[Opinion based fastapi best practices](https://github.com/zhanymkanov/fastapi-best-practices)