Skip to content

Gildofj/PyNewsServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pynewsserver

Serviço de Noticas e Bibliotecas PyNews

💡 Visão Geral

💻 Tecnologias Utilizadas

- Python 
    - FastAPI 
    - Pydantic
    - Poetry
    - Sqlite3
    - Orjson
    - ruff (linter)

🚀 Recursos e Funcionalidades

Endpoints para CRUD de noticias selecionadas pela comunidade. 

Schema da API

[Documentação de referencia API Dog](https://apidog.com/apidoc/shared/70418cab-ddba-4c7d-97a4-8b70b43a7946/)

Schema do Servidor

    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
 

Loading

⚙️ Como Rodar

[TBD]

🧩 Configuração Inicial

▶️ Guia de Execução Dev

▶️ Guia de Execução Prod

referencias

[Opinion based fastapi best practices](https://github.com/zhanymkanov/fastapi-best-practices)

About

Serviço de Noticas e Bibliotecas Pynwes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%