Skip to content

Projeto Labook, feito no curso Web Full Stack da escola Labenu. Trata-se de uma API com funcionalidades básicas de uma rede social.

License

Notifications You must be signed in to change notification settings

nyhvignoli/labook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Labook

Português | English

Estrutura de back-end do Projeto Labook do bootcamp da escola Labenu. Trata-se de uma API com funcionalidades básicas de uma rede social.

Requisitos Básicos:

  • Git
  • Node
  • Typescript
  • MySQL

Primeiros Passos:

  • Clone esse repositório no diretório de sua escolha com o comando git clone <url>.
  • Abra o projeto na sua IDE favorita.
  • Rode o comando npm install ou npm i para instalar as dependências do projeto.
  • Crie um arquivo .env na pasta raíz do projeto com as suas informações:
# Database
DB_HOST = host do banco de dados
DB_USER = user do banco de dados
DB_PASSWORD = senha
DB_NAME = nome do banco de dados

# JasonWebToken
JWT_KEY = chave para gerar o jason web token
JWT_EXPIRES_IN = tempo de expiração do token

# Bcrypt
BCRYPT_COST = 12

Scripts Disponíveis:

  • npm run my-sql-setup para criar as tabelas.
  • npm run start para rodar a aplicação.
  • npm run dev para iniciar a aplicação em modo de desenvolvimento com hot reload.

Funcionalidades:

  • Cadastro
  • Login
  • Fazer uma postagem
  • Ver feed com todos os posts
  • Exibir detalhes de um post específico
  • Fazer amizade
  • Remover amizade

Bibliotecas e Frameworks:

  • cors
  • express
  • knex
  • mysql
  • dotenv
  • uuid
  • jsonwebtoken
  • bcryptjs

Português | English

Back-end structure of the Labook Project developed at Labenu School bootcamp. An API with basic features of a social media.

Minimum Requirements:

  • Git
  • Node
  • Typescript
  • MySQL

Getting Started:

  • Clone this repository in a directory of your choice running git clone <url> command.
  • Open the project on your favorite IDE.
  • Run the npm install command or npm i to install all the dependencies.
  • On the root directory of the project, create a .env file with your environment variables:
# Database
DB_HOST = database host
DB_USER = database user name
DB_PASSWORD = user password
DB_NAME = database name

# JasonWebToken
JWT_KEY = key to generate jason web token
JWT_EXPIRES_IN = token expires at

# Bcrypt
BCRYPT_COST = 12

Available Scripts:

  • npm run my-sql-setup to create the necessary tables.
  • npm run start to run the application.
  • npm run dev to start the application in development mode, with hot reload.

Features:

  • Cadastro
  • Login
  • Create a post
  • Get feed with all posts
  • Display selected post details
  • Add friend
  • Remove friend

Libs and Frameworks:

  • cors
  • express
  • knex
  • mysql
  • dotenv
  • uuid
  • jsonwebtoken
  • bcryptjs

Endpoints

signup

  • Request:
    curl -i -X POST http://localhost:3003/users/signup -H "Content-Type: application/json" -d '{"name":"Alice","email":"alice@gmail.com","password":"pass123"}'
  • Response (success):
    HTTP/1.1 201 Created
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 220
    ETag: W/"dc-ec7r4rkKsMBe/V0SGyUkO6Vyto0"
    Date: Tue, 17 Nov 2020 14:33:15 GMT
    Connection: keep-alive
    
    {"message":"Success!", "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijg5OGJjNDVlLTExZjEtNGEyMy04OTZhLTdmMmUyOWNmZTAxMiIsImlhdCI6MTYwNTYyMzU5NSwiZXhwIjoxNjA1NzA5OTk1fQ.pWxV2vtLnp0hKm0CXXnLpnDu6PEPkZM27A71oTTCYfE"}%   

login

  • Request:
    curl -i -X POST http://localhost:3003/users/login -H "Content-Type: application/json" -d '{"email":"alice@gmail.com","password":"pass123"}'
  • Response (success):
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 220
    ETag: W/"dc-IBDYVXSmDzdFsqHXhPCAutzNwn8"
    Date: Tue, 17 Nov 2020 14:39:23 GMT
    Connection: keep-alive
    
    {"message":"Success!","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijg5OGJjNDVlLTExZjEtNGEyMy04OTZhLTdmMmUyOWNmZTAxMiIsImlhdCI6MTYwNTYyMzk2MywiZXhwIjoxNjA1NzEwMzYzfQ.9JvXRQpazI5k6GAnc1lFcVcTbZ_ElASnwyybU_tRU48"}%   

createPost

  • Request:
    curl -i -X POST http://localhost:3003/posts/create -H "Content-Type: application/json" -H "authorization:$token" -d '{"photo":"https://i.picsum.photos/id/238/200/200.jpg?hmac=O4Jc6lqHVfaKVzLf8bWssNTbWzQoaRUC0TDXod9xDdM","description":"My city is beautiful =D","type":"normal"}'
  • Response (success):
    HTTP/1.1 201 Created
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 22
    ETag: W/"16-ChcZhlw1slqtGuDwxLsUclql5gE"
    Date: Tue, 17 Nov 2020 14:47:15 GMT
    Connection: keep-alive
    
    {"message":"Success!"}%    

getPostById

  • Request:
    curl -i GET http://localhost:3003/posts/$id -H "Content-Type: application/json" -H "authorization:$token" 
  • Response (success):
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 322
    ETag: W/"142-IYRwCODXZBltXE3MydHuIDB8M3w"
    Date: Tue, 17 Nov 2020 14:52:19 GMT
    Connection: keep-alive
    
    {"message":"Success!","post":{"id":"e4eb1531-d814-4742-b614-be2a36602548","photo":"https://i.picsum.photos/id/238/200/200.jpg?hmac=O4Jc6lqHVfaKVzLf8bWssNTbWzQoaRUC0TDXod9xDdM","description":"My city is beautiful =D","type":"normal","createdAt":"2020-11-17T17:47:15.000Z","authorId":"898bc45e-11f1-4a23-896a-7f2e29cfe012"}}% 

addFriend

  • Request:
    curl -i PUT http://localhost:3003/users/friendship/$id -H "Content-Type: application/json" -H "authorization:$token" 
  • Response (success):
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 38
    ETag: W/"26-FRG92jk/IDv4fDHb8n2wbljn+Xw"
    Date: Fri, 05 Feb 2021 20:07:12 GMT
    Connection: close
    
    {"message": "Friend added successfuly"} 

removeFriend

  • Request:
    curl -i DELETE http://localhost:3003/users/friendship/$id -H "Content-Type: application/json" -H "authorization:$token" 
  • Response (success):
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Access-Control-Allow-Origin: *
    Content-Type: application/json; charset=utf-8
    Content-Length: 40
    ETag: W/"28-p/Q+JvLS79xP5hajp1hbgqiqxTM"
    Date: Fri, 05 Feb 2021 20:10:39 GMT
    Connection: close
    
    {"message": "Friend removed successfuly"} 

getPosts

  • Request:
    curl -i GET http://localhost:3003/posts/feed -H "Content-Type: application/json" -H "authorization:$token" 
  • Response (success):
    {"posts":[{"id":"25a2dc30-86f0-42f7-af90-1c323b95d7fc","photo":"Terceiro Post da Amiga da Aline","description":"Descrição do post dela","type":"event","createdAt":"2021-02-05T16:30:34.000Z","authorId":"77a5f772-cb00-4bf9-9d8a-7227cd88cbc8"},{"id":"12ab0792-e0c7-41ad-b810-f3a0d69406a6","photo":"Segundo Post da Amiga da Aline","description":"Descrição do post dela","type":"event","createdAt":"2021-02-05T16:30:21.000Z","authorId":"77a5f772-cb00-4bf9-9d8a-7227cd88cbc8"},{"id":"564f711e-0341-4c1a-a12b-9d5fd1044691","photo":"Post da Amiga da Aline","description":"Descrição do post dela","type":"normal","createdAt":"2021-02-05T16:29:56.000Z","authorId":"77a5f772-cb00-4bf9-9d8a-7227cd88cbc8"}]} 

About

Projeto Labook, feito no curso Web Full Stack da escola Labenu. Trata-se de uma API com funcionalidades básicas de uma rede social.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published