/api-star-movie

API Para cadastrar,listar e ranquear filmes

Primary LanguageTypeScript

🌟 Star Movie API

Este projeto foi desenvolvido como um desafio proposto por Josiel, Senior Software Engineer na Syngenta Digital Brasil. Ele conduziu uma trilha de desafios, demonstrando como criar uma API do zero até o deploy.

Neste projeto, tive a oportunidade de aplicar meus conhecimentos e habilidades para desenvolver a aplicação de acordo com os requisitos propostos.



✨ Funcionalidades

👤 User

[ ✔️ ] Criação de usuário

[ ✔️ ] Atualização de usuário

[ ✔️ ] Authenticação de usuário

[ ✔️ ] Selecão de usuário por id

[ ✔️ ] Selecão de usuário por email

🎬 Movie

[ ✔️ ] Criação de um filme

[ ✔️ ] Seleção de todos os filmes

[ ✔️ ] Seleção de um filme com todos os comentários relacionados a ele e a média total de avaliações

[ ✔️ ] Remocão de um filme criado

💬 Comment

[ ✔️ ] Criação de comentário para um filme existente

[ ✔️ ] Remoção de um comentário



⚙️ Instalação


  • Clone o repositório.

  • Criar um arquivo .env com a informacoes seguindo o padrão do .env.example

  • Instale as dependências necessárias usando npm install.

  • Execute o arquivo da docker usando docker compose up.

    OBS: E necessário ter a docker instalada no computador.

  • Execute as migrates para criar o banco de dados usando npm run knex -- migrate:latest.

  • Execute a aplicação usando npm run dev.


📡 Endpoints da API

Os seguintes endpoints estão disponíveis:

👤 User - Endpoints

  • Criar um novo usuário.

    Método: POST

    rota: /user

    OBS: password precisa de no mínimo 8 caracteres

    Exemplo para requisição:

 {
  name: "user",
  email: "user@example.com",
  password: "userpassord"
 }

  • Autenticar usuário

    Método: POST

    rota: /user/session

    Exemplo para requisição:

 {
  email: "user@example.com",
  password: "userpassord"
 }

  • Atualizar usuário.

    Método: PUT

    rota: /user/session

    OBS: Esta rota requer um Bearer Token
    OBS: Todos os parâmetros que esta rota pode receber são opcionais

    Exemplo para requisição:

 {
  name: "username",
  image: "userimage.png",
  threads_url: "user-threads",
  twitter_url: "user-twitter",
  tiktok_url: "user-tiktok",
  instagram_url: "user-instagram",
 }

  • Selecionar usuário pelo ID.

    Método: GET

    rota: /user

    OBS: Esta rota requer um Bearer Token

  • Selecionar usuário pelo E-MAIL.

    Método: POST

    rota: /user

    OBS: Esta rota requer um Bearer Token

    Exemplo para requisição:

 {
  email: "user@example.com",
 }

  • Selecionar imagem do usuário

    Método: GET

    rota: /files/:image_name


🎬 Movie - Endpoints

  • Criar um novo filme.

    Método: POST

    rota: /movie

    OBS: A imagem deve ser um file do tipo jpg/jpeg/png
    OBS: Age deve ser o ano de lançamento do filme
    OBS: Esta rota requer um Bearer Token

    Exemplo para requisição:

 {
	title: "movie example",
	age: "1998",
	sinopse: "lorem lorem lorem lorem lorem lorem",
	image: "1e1a98285b6125b6a307-linux.jpeg",
 }

  • Selecionar todos os filmes.

    Método: GET

    rota: /movie

    OBS: Esta rota requer um Bearer Token

  • Selecionar um filme.

    Método: GET

    rota: /movie/:filme_id

    OBS: Esta rota trará os detalhes deste filme com todos os comentários e sua nota media de avaliação
    OBS: Esta rota requer um Bearer Token

  • Deletar um filme.

    Método: DEL

    rota: /movie/:filme_id

    OBS: Só é possível deletar este filme se o usuário for o mesmo que o criou.
    OBS: Esta rota requer um Bearer Token

💬 Comment - Endpoints

  • Criar um novo comentário.

    Método: POST

    rota: /comment/:movie_id

    OBS: Esta rota requer um Bearer Token
    OBS: A nota do filme deve ser de 0 a 5

    Exemplo para requisição:

{
	description: "Ótimo filme! Recomendo a todos!",
 	rating_movie: "2"
}

  • Deletar um comentário.

    Método: DEL

    rota: /comment/:comment_id

    OBS: Esta rota requer um Bearer Token

Tecnologias Utilizadas

  • TypeScript
  • NodeJs
  • Express
  • Knex
  • Multer
  • Jwt
  • Zod
  • PostgreSQL
  • Docker

Para testar toda aplicacao utilize também o Front-End Movie Star


Contribuidores

Nome Papel
Eduardo N Gomes Back-End | Front-end
Gabriel Santos Front-End | Design
Biro³ Design
Lara Azevedo Design