Início Profile Projeto
Avatar de

WALTER ALIPIO DA SILVA

Challenge Back-End 5ª edição - AluraFlix

  • c#
  • .Net 6
  • SQL Server
  • Entity
  • Identity
  • JWT
  • XUnit

VideoPlaylist - API

A plataforma que permiti aos usuários montar playlists com links para seus vídeos preferidos, separados por categorias.

🪧 Vitrine.Dev
Nome Challenge Back-End 5ª edição - AluraFlix
🏷️ Tecnologias c#, .Net 6, SQL Server, Entity, Identity, JWT, XUnit
🔥 Desafio https://www.alura.com.br/challenges/back-end

Badge em desenvolvimento

🔨 Objetivo do projeto

O objetivo do Alura Challenge é aplicar os conhecimentos obtidos através dos cursos disponíveis na plataforma. As tarefas são disponibilizadas ao início de cada uma das 4 semans de challenge. Não há restrição quanto a qual técnologia deva ser utilizada pelos alunos, ficando a cargo de cada um decidir como irá construir o projeto.

Extras

  • As rotas agora requerem autenticação, menos get Videos e Categorias.
  • Apenas o adminstrador pode cadastrar, alterar ou deletar uma categoria.
  • Há um novo endpoint para acessar apenas os videos do próprio usuário.
  • Apenas o proprietário do video pode alterar ou deletar um video.
  • Implementado soft delete para videos.
  • Implementada rota para que o adminstrador tenha acesso a todos os videos, incluindo os videos deletados.

História

Após alguns testes com protótipos feitos pelo time de UX de uma empresa, foi requisitada a primeira versão de uma plataforma para compartilhamento de vídeos. A plataforma deve permitir ao usuário montar playlists com links para seus vídeos preferidos, separados por categorias.
Os times de frontend e UI já estão trabalhando no layout e nas telas. Para o backend, as principais funcionalidades a serem implementadas são:

  • API com rotas implementadas segundo o padrão REST;
  • Validações feitas conforme as regras de negócio;
  • Implementação de base de dados para persistência das informações;
  • Serviço de autenticação para acesso às rotas POST, PUT e DELETE.

🆗 Semana 1

  • Armazenar no banco de dados as informações sobre os vídeos
  • Todos os campos de vídeos devem ser obrigatórios e validados.
  • Implementar para /videos POST/GET/GET_ID/PUT/DELETE.
  • PUT atualiza um ou mais campos de um vídeo.

🆗 Semana 2

  • Armazenar no banco de dados as informações sobre as categorias.
  • Uma nova categoria não pode ser criada caso tenha algum campo vazio.Caso em branco, informar: O campo é obrigatório.
  • Implementar para /categorias POST/GET/GET_ID/PUT/DELETE.
  • Implemente uma relação entre vídeos e categorias, atribuindo para cada vídeo uma categoria.
  • Criar uma rota GET relacionando categorias e videos, exemplo: GET categorias/:id/videos/.
  • Criar uma rota que busque vídeos por nome via query parameters, exemplo: GET /videos/?search=jogos.
  • A categoria com ID = 1, deve chamar LIVRE e caso ela não seja especificada na criação do vídeo, atribuir o ID = 1.
  • Criar testes de unidade para os modelos e controller.
  • Crie testes de integração.

🆗 Semana 3 e 4

  • Sistema de autenticação.
  • Alteração no banco de dados para tabela de usuário.
  • Deploy.

✔️ Tecnologias utilizadas


🛠️ Abrir e rodar o projeto

Clone o projeto para seu repositório.
Instale as dependências através do comando:

dotnet restore

Configure sua connection string pelo user-secrets com o comando:

dotnet user-secrets "DbConnection" "SUA_STRING_AQUI"

Criar a base de dados:

dotnet ef database update

O adminstrador deve ser criado direto no banco de dados e deve ser atribuído o papel amdmin para o mesmo.

Crie um arquivo .env na raiz do projeto PlayListAPI seguindo o modelo do arquivo .env.example

Rotas do projeto

Categorias

Método Autorização Rota Descrição Body Params Query Params
POST Admin /categorias Cadastra nova categoria JSON -
GET - /categorias/{id} Retorna uma categoria por id numérico - -
GET - /categorias/{id}//videos Retorna lista de videos pertencentes a categoria - -
GET - /categorias Retorna todas as categorias - -
PUT Admin /categorias/{id} Permite atualizar uma categoria. JSON -
Retorna dados atualizados.
DELETE Admin /categorias/{id} Exclui a categoria indicada pelo id. - -



Videos

Método Autorização Rota Descrição Body Params Query Params
POST User /videos Cadastra novo video JSON -
GET - /videos Retorna lista de videos paginado - ?page=1&pageSize=5
GET - /videos Retorna videos com título informado - ?page=1&pageSize=5&search=Titulo do video
GET - /videos/{id} Retorna um video por id numérico - -
GET User /meus_videos Retorna lista de videos do usuário logado -
PUT User /videos/{id} Permite atualizar um ou mais dados do video. JSON -
DELETE User /videos/{id} Exclui um video indicado pelo id. - -
GET Admin /videos/Todos Retorna todos os videos incluindo deletados. - -



Usuário

Método Autorização Rota Descrição Body Params Query Params
POST - /User/CriarLogin Cadastra novo Usuario JSON -
POST - /User/Login Verifica usuário e retorna token de acesso JSON -
POST - /User/Logout Desloga usuário JSON -