Coder Social home page Coder Social logo

mid-server's Introduction

Mid-server

Api de aplicação para escolher qual é o melhor lugar para se viver em MiddleEarth. Os usuários que possuem cadastro podem enviar fotos de seu lugares favoritos para que qualquer um possa votar.

Frontend: https://github.com/F13Fabricio/mid-angular

[TOC]

Funcionalidades

  • Cadastro de usuários;
  • Autenticação com JWT (JSON Web Token);
  • Cadastro, edição e exclusão de lugares (somente usuários autenticados);
  • Imagens sendo salvas no AWS S3;
  • Sistema de votação em tempo usando WebSocket;

Funcionalidades futuras

  • Opção para editar a imagem do lugar;
  • Exclusão da imagem após a exclusão do lugar no banco de dados;
  • Testes (unitários e integração);

Instruções

Requisitos

  • Mysql
  • Nodejs
  • Bucket do AWS S3 (com acesso público)

Iniciando a aplicação

  • Após instalar todas as dependências defina todas as informações de ambiente no .env.
  • Crie uma base de dados no Mysql com nome e usuário informados nas variáveis de ambiente.
  • Execute o comando abaixo para criar as tabelas no banco de dados: $ npm ./node_modues/.bin/sequelize db:migrate
  • Agora basta executar: $ npm run start

API

Endpoint base para quando o servidor estiver rodando localmente: http://localhost:3000/mid-server/api/v1

Criar um usuário

Endpoint: POST /users

Autenticado: Não

Exemplo de requisição:

{
  "name": "Gollum",
  "email": "[email protected]",
  "password": "my_precious"
}

Exemplo de resposta:

{
  "token": "jwt_token",
  "data": {
    "id": 1,
    "name": "Gollum",
    "email": "[email protected]",
    "updatedAt": "2019-10-21T14:12:34.059Z",
    "createdAt": "2019-10-21T14:12:34.059Z"
  }
}

Login

Endpoint: POST /login

Autenticado: Não

Exemplo de requisição:

{
  "email": "[email protected]",
  "password": "slkdfjlklskd"
}

Exemplo de resposta:

{
  "token": "jwt_token",
  "data": {
    "id": 1,
    "name": "Gollum",
    "email": "[email protected]",
    "updatedAt": "2019-10-21T14:12:34.059Z",
    "createdAt": "2019-10-21T14:12:34.059Z"
  }
}

Exibir um usuário

Endpoint: GET /users/:userId

Autenticado: Sim

Header:

Header Exemplo
authorization Bearer token

Exemplo de resposta:

{
  "data": {
    "id": 1,
    "name": "Gollum",
    "email": "[email protected]",
    "createdAt": "2019-10-21T14:12:34.000Z",
    "updatedAt": "2019-10-21T14:12:34.000Z"
  }
}

Adicionar um lugar

Endpoint: POST /users/:userId/places

Autenticado: Sim

Header:

Header Exemplo
authorization Bearer token

Requisição do tipo Multipart:

Campo Exemplo
file campos_de lis.png
name Campos de Lis

Exemplo de resposta:

{
  "data": {
    "id": 1,
    "name": "Campos de Lis",
    "UserId": "1",
    "imageUrl": "image_url",
    "numberOfVotes": 0,
    "updatedAt": "2019-10-21T14:24:03.894Z",
    "createdAt": "2019-10-21T14:24:03.894Z"
  }
}

Listar todos os lugar

Endpoint: GET /places

Autenticado: Não

Exemplo de resposta:

{
  "count": 1,
  "data": [
    {
      "data": {
        "id": 1,
        "name": "Campos de Lis",
        "UserId": "1",
        "imageUrl": "image_url",
        "numberOfVotes": 0,
        "updatedAt": "2019-10-21T14:24:03.894Z",
        "createdAt": "2019-10-21T14:24:03.894Z"
      }
    }
  ]
}

Exibir um lugar

Endpoint: GET /places/:placeId

Autenticado: Não

Exemplo de resposta:

{
  "data": {
    "id": 1,
    "name": "Campos de Lis",
    "UserId": "1",
    "imageUrl": "image_url",
    "numberOfVotes": 0,
    "updatedAt": "2019-10-21T14:24:03.894Z",
    "createdAt": "2019-10-21T14:24:03.894Z"
  }
}

Atualizar um lugar (apenas o nome)

Endpoint: PUT /places/:placeId

Autenticado: Sim

Header:

Header Exemplo
authorization Bearer token

Exemplo de requisição:

{
  "name": "Vales do Anduin"
}

Exemplo de resposta:

{
  "data": {
    "id": 1,
    "name": "Vales do Anduin",
    "UserId": "1",
    "imageUrl": "image_url",
    "numberOfVotes": 0,
    "updatedAt": "2019-10-21T14:24:03.894Z",
    "createdAt": "2019-10-21T14:24:15.894Z"
  }
}

Excluir um lugar

Endpoint: DELETE /places/:placeId

Autenticado: Sim

Header:

Header Exemplo
authorization Bearer token

mid-server's People

Contributors

f13fabricio avatar

Watchers

 avatar  avatar

Forkers

ffagner

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.