Skip to content

francisdiasbr/movie-search-blog-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Movie Search Blog Backend

Render Server Status GitHub release (latest by date) GitHub last commit

Read in English

API para busca e gerenciamento de filmes e posts de blog.

ĂŤndice

Infraestrutura

O projeto está hospedado na seguinte infraestrutura:

  • Backend: Aplicação Flask hospedada no Heroku
  • Armazenamento de Imagens: Amazon S3 para armazenamento de imagens dos posts
  • Banco de Dados: MongoDB Atlas para persistĂŞncia dos dados

Estrutura do Projeto

movie-search-blog-backend/
├── README.md
├── README_EN.md
├── app.py                    # Aplicação principal
├── config.py                # Configurações (MongoDB, AWS, etc)
├── gunicorn.conf.py         # Configuração do Gunicorn
├── requirements.txt         # Dependências do projeto
├── favorites/              # Módulo de filmes favoritos
│   ├── controller.py       # Lógica de negócios
│   ├── models.py          # Modelos Swagger
│   └── routes.py          # Rotas da API
├── generate_blogpost/      # Módulo de geração de posts
│   ├── controller.py       # Lógica de negócios
│   ├── models.py          # Modelos Swagger
│   └── routes.py          # Rotas da API
├── images/                # Módulo de gerenciamento de imagens
│   ├── controller.py       # Lógica de negócios
│   └── routes.py          # Rotas da API
├── personal_opinion/      # Módulo de opiniões pessoais
│   ├── controller.py       # Lógica de negócios
│   └── routes.py          # Rotas da API
└── write_review/         # Módulo de escrita de reviews
    └── controller.py       # Lógica de negócios

Documentação da API

A documentação Swagger está disponível em http://localhost:5000/docs

URL Base

Endpoints Favoritos

  • POST /api/favorites/search - Exibe todos os filmes favoritos

Endpoints Blog Posts

  • POST /api/blogposts/search - Exibe todos os posts do blog
  • GET /api/blogposts/tconst - Exibe um post especĂ­fico

Endpoints de Imagens

  • GET /api/images/tconst - Exibe todas as imagens de um filme
  • POST /api/images/tconst/filename - Exibe uma imagem especĂ­fica de um filme

Configuração

Crie um ambiente virtual

python -m venv venv

Ative o ambiente virtual

No macOS/Linux

source venv/bin/activate

No Windows

venv\Scripts\activate

DependĂŞncias

pip install -r requirements.txt

Variáveis de Ambiente

Crie um arquivo .env na raiz do projeto e defina as seguintes variáveis:

  • MongoDB:

    • MONGODB_CONNECTION_STRING: String de conexĂŁo com o MongoDB.
    • MONGODB_DATABASE: Nome do banco de dados MongoDB.
  • AWS S3:

    • AWS_ACCESS_KEY_ID: ID da chave de acesso da AWS.
    • AWS_SECRET_ACCESS_KEY: Chave de acesso secreta da AWS.
    • BUCKET_NAME: Nome do bucket S3.

Exemplo de arquivo .env:

MONGODB_CONNECTION_STRING="mongodb+srv://<username>:<password>@cluster0.mongodb.net/"
MONGODB_DATABASE="movie-search"
AWS_ACCESS_KEY_ID="your-access-key-id"
AWS_SECRET_ACCESS_KEY="your-secret-access-key"
BUCKET_NAME="your-bucket-name"

Executando o Projeto

python app.py

Desenvolvimento

Estrutura dos MĂłdulos

Cada mĂłdulo (favorites e blogposts) segue a mesma estrutura:

  • models.py: Define os modelos Swagger para documentação da API
  • routes.py: Define as rotas e endpoints da API
  • controller.py: ContĂ©m a lĂłgica de negĂłcios e interação com o banco de dados

Tecnologias Utilizadas

  • Flask: Framework web
  • Flask-RESTX: ExtensĂŁo para APIs RESTful e documentação Swagger
  • PyMongo: Driver MongoDB
  • Boto3: SDK AWS para Python
  • Python-dotenv: Gerenciamento de variáveis de ambiente