Skip to content

RenanFachin/RS_NLW_space-time-server

Repository files navigation

Logo NLW spacetime

NLW - SPACETIME API

API desenvolvida durante a NLW#12 - Spacetime.

Está aplicação foi criada utilizando NodeJS, Typescript, Prisma, Docker e Postgresql.

Regras da aplicação

  • Deve ser possível cadastrar uma memória
  • Deve ser possível listar todos as memórias de um usuário
  • Deve ser possível listar uma memória específica do usuário
  • Deve ser possível atualizar os dados de uma memória
  • Deve ser possível deletar uma memória
  • Deve ser possível se autenticar utilizando o GITHUB
  • Deve ser possível enviar uma foto/vídeo junto à uma memória

Requisitos não funcionais

  • Os dados da aplicação precisam estar persistidos em um banco PostgreSQL
  • O usuário deve ser identificado por um JWT (Json Web Token)
  • Os usuários precisam estar com uma autenticação válida para acessar as rotas '/memories'
  • Gerar nomes aleatórios com no padrão UUID para os arquivos enviados nas memórias
  • Os arquivos enviados devem ter no máximo 15mb de tamanho

Instalação

# Faça o clone do repotório
  git clone git@github.com:RenanFachin/RS_NLW_space-time-server.git

# Instalar as dependências do projeto
  npm install

# Subindo o banco de dados com docker
  docker compose up -d

# Rodar as migrations do projeto para criar o banco de dados
  npx prisma migrate dev

# Executando o projeto no ambiente de desenvolvimento
  npm run dev

Diagrama ERD

Diagrama ERD

Insomnia

Run in Insomnia}

Rotas

  • Autenticação
POST /register
  • Criar uma nova memória
POST /memories
  • Listar TODAS memórias
GET /memories
  • Listar UMA memória específica
GET /memories/:{id}
  • Atualizar UMA memória específica
PUT /memories/:{id}
  • Deletar UMA memória
DELETE /memories/:{id}
  • Enviar uma imagem ou vídeo
POST /upload/{file}