Skip to content

ThVinicius/geek-book-back-end

Repository files navigation

projeto autoral-GeekBook

GeekBook

Built With


Sumário

Descrição

GeekBook é um gerenciador de manga, anime, séries e novels.


Funções

  • Crie uma conta e acesse-a
  • Registre uma obra e altere seu último capítulo/episódio visto
  • Crie um ranking top 10 de suas obras cadastradas
  • Compartilhe sua coleção e classificação por meio de um link

Documentação da API

Rotas de autenticação

Criar uma conta

POST /signup

Request:

Params Type Description
email string Required, email format
nickname string Required, trim, max caractere(16)
avatar string Required, uri, allow(null)
password string Required, min(3)
confirmPassword string Required, same as password

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
409 Conflito de email ou nickname existentes

Em caso de sucesso: (status code 201)

Acessar uma conta

POST /signin

Request:

Params Type Description
email string Required, email format
password string Required, min(3)

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Email ou senha incorretos

Em caso de sucesso (status code 200:) e um objeto com retorno. exemplo:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
  "nickname": "pacheco",
  "avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}

Login com github

POST /signin/github

Request:

Enviar o código de acesso, que o github disponibiliza ao fazer a permissão de acesso, pelo body
Params Type Description
code string Required

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Código inválido ou incorreto
409 Conflito com o nickname

Em caso de conflito é também mandado um token com as informações do usuário para poder terminar seu cadastro na rota de cadastro com o github

Em caso de sucesso (status code 200:) e um objeto com retorno. exemplo:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
  "nickname": "pacheco",
  "avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}

Cadastro com o github

Caso o login com o github de errado é necessário fazer o cadastro do nickname

Caso de erro do login:

  • username do github já esta em uso.
    • nesse caso é solicitado ao usuário cadastrado um nickname único
POST /signup/oauth

Request (body):

Params Type Description
nickname string Required, trim, max(16)

Headers:

Enviar o token fornecido na rota de login com o github (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
409 Conflito com o nickname
426 Token desatualizado
498 Token expirado

Em caso de conflito é também mandado um token com as informações do usuário.

Response:

Em caso de sucesso (status code 200:) e um objeto com retorno. exemplo:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
  "nickname": "pacheco",
  "avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}

Rotas da categoria

Buscar todas as categorias

GET /categories

Response:

Em caso de sucesso (status code 200:) e um array com retorno. exemplo:

[
  {
    "id": 1,
    "name": "Mangá"
  },
  {
    "id": 2,
    "name": "Anime"
  },
  {
    "id": 5,
    "name": "Novel"
  },
  {
    "id": 6,
    "name": "Série"
  }
]

Rotas da coleção

Buscar as coleções por categoria

GET /collections/:categoryId

Request:

Params:

Enviar por params
Params Type Description
categoryId number required, greater than 0

Response:

Em caso de sucesso (status code 200:) e um array com retorno. exemplo:

[
  {
    "id": 15,
    "name": "One Piece",
    "categoryId": 1,
    "poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
    "synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
    "createdAt": "2022-09-30T23:39:26.746Z"
  },
  {
    "id": 16,
    "name": "One Punch-Man",
    "categoryId": 1,
    "poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
    "synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
    "createdAt": "2022-10-05T13:22:03.721Z"
  }
]

Rotas do status

Buscar todos os status

GET /status

Request:

Success case (status code 200:) and an array as a return. example:

[
  {
    "id": 1,
    "name": "Ativo"
  },
  {
    "id": 2,
    "name": "Completo"
  }
]

Rotas da coleção do usuário

Registrar uma obra na coleção do usuário

POST /user-collections

Request:

Body

Params Type Description
categoryId number Required, greater than 0
name string Required, trim
synopsis string Required, allow(null)
poster string Required, uri, allow(null)
lastSeen number Required, greater than -1
statusId number Required, greater than 0
publicValue boolean Required

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 categoryId ou statusId não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 201:)

Buscar todas as coleções do usuário

GET /user-collections

Request:

Query

Se o statusId for passado, a lista retornada será filtrada pelo statusId

Ex: /user-collections?statusId=1

Params Type Description
statusId number greater than 0

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:) e um array como retorno. example:

[
  {
    "id": 62,
    "lastSeen": 1070,
    "status": {
      "id": 1,
      "name": "Ativo"
    },
    "collection": {
      "id": 15,
      "name": "One Piece",
      "poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
      "synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
      "category": {
        "id": 1,
        "name": "Mangá",
        "createdAt": "2022-09-30T22:29:07.695Z"
      }
    }
  },
  {
    "id": 66,
    "lastSeen": 8,
    "status": {
      "id": 2,
      "name": "Completo"
    },
    "collection": {
      "id": 17,
      "name": "O Senhor dos Anéis: Os Anéis de Poder 1ª Temporada",
      "poster": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ9a7cngBSAOKyqTdaBgbdSrYWceR4w9CqJJOojtaH532M-_8uF",
      "synopsis": "Antes da jornada de Frodo pela Terra-Média, a Segunda Era foi palco de diversas lendas heróicas. O drama épico que se passa milhares de anos antes de A Sociedade do Anel, tem foco em um momento da história em que grandes poderes foram forjados, reinos ascenderam e também ruíram, ao mesmo tempo em que heróis foram testados e tiveram a esperança quase aniquilada pelo grande vilão do universo de Senhor dos Anéis. A série começa em um momento de paz, quando o elenco de novos e antigos personagens precisam enfrentar o ressurgimento do mal, vindo das profundezas mais escuras das Montanhas Sombrias. Os reinos e personagens irão esculpir legados que viverão por muito tempo depois que eles se forem.",
      "category": {
        "id": 6,
        "name": "Série",
        "createdAt": "2022-09-30T22:29:07.695Z"
      }
    }
  },
  {
    "id": 67,
    "lastSeen": 120,
    "status": {
      "id": 1,
      "name": "Ativo"
    },
    "collection": {
      "id": 16,
      "name": "One Punch-Man",
      "poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
      "synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
      "category": {
        "id": 1,
        "name": "Mangá",
        "createdAt": "2022-09-30T22:29:07.695Z"
      }
    }
  }
]

Atualizar o ultimo capitulo/episodio da obra na coleção do usuário

PATCH /user-collections/last-seen

Request:

Body

Params Type Description
collectionId number Required, greater than 0
lastSeen number greater than -1
increment number valid(-1, 1)

Deve se enviar o lastSeen ou o increment. Não é possivel mandar os dois juntos

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 collectionId não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:)

Atualizar o status da obra na coleção do usuário

PATCH /user-collections/status

Request:

Body

Params Type Description
id number Required, greater than 0
statusId number Required, greater than 0

id: user-collection id

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 id ou statusId não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:)

Atualizar a visualização da obra na coleção do usuário

PATCH /user-collections/public

Request:

Body

Params Type Description
id number Required, greater than 0
publicValue boolean Required

id: user-collection id

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 id não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:)

Deletar uma obra da coleção do usuário

DELETE /user-collections/:id

Request:

Params

Params Type Description
id number Required, greater than 0

id: user-collection id

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 id não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso (status code 200:)

Rotas do ranking

Posicionar uma obra no ranking

POST /rankings

Request:

Body

Params Type Description
userCollectionId number Required, greater than 0
position number Required, min(1), max(10)

Headers:

Send the token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Request in wrong format
401 Invalid token
404 userCollectionId not found
409 The work is already ranked
426 Outdated token
498 Expired token

Em caso de sucesso (status code 201:)

Remover uma obra do ranking

DELETE /rankings/:id

Request:

Params

Params Type Description
id number Required, greater than 0

id: ranking id

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Request in wrong format
401 Invalid token
404 id not found
426 Outdated token
498 Expired token

Em caso de sucesso: (status code 201:)

Substituir uma obra por outra na mesma posição do ranking

PATCH /rankings

Request:

Body

Params Type Description
id number Required, greater than 0
userCollectionId number Required, greater than 0

id: ranking id

Headers:

Send the token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 id ou userCollectionId não encontrado
409 tentar atualizar o ranking por uma obra já classificada
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:)

Buscar o top 10 da coleção do usuário

GET /rankings

Request:

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:) e um array como retorno. example:

[
  {
    "rankingId": null,
    "position": 1,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": 54,
    "position": 2,
    "userCollectionId": 67,
    "name": "One Punch-Man",
    "poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
    "synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
    "category": "Mangá",
    "status": "Ativo",
    "lastSeen": 120
  },
  {
    "rankingId": 52,
    "position": 3,
    "userCollectionId": 62,
    "name": "One Piece",
    "poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
    "synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
    "category": "Mangá",
    "status": "Ativo",
    "lastSeen": 1070
  },
  {
    "rankingId": null,
    "position": 4,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 5,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 6,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 7,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 8,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 9,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  },
  {
    "rankingId": null,
    "position": 10,
    "userCollectionId": null,
    "name": null,
    "poster": null,
    "synopsis": null,
    "category": null,
    "status": null,
    "lastSeen": null
  }
]

Buscar todas as obras não rankeados do usuário

GET /rankings/user-collections

Request:

Headers:

Send the token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
426 Token desatualizado
498 Token expirado

Em caso de sucesso: (status code 200:) e um array como retorno. example:

[
  {
    "userCollectionId": 66,
    "name": "O Senhor dos Anéis: Os Anéis de Poder 1ª Temporada",
    "poster": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ9a7cngBSAOKyqTdaBgbdSrYWceR4w9CqJJOojtaH532M-_8uF",
    "synopsis": "Antes da jornada de Frodo pela Terra-Média, a Segunda Era foi palco de diversas lendas heróicas. O drama épico que se passa milhares de anos antes de A Sociedade do Anel, tem foco em um momento da história em que grandes poderes foram forjados, reinos ascenderam e também ruíram, ao mesmo tempo em que heróis foram testados e tiveram a esperança quase aniquilada pelo grande vilão do universo de Senhor dos Anéis. A série começa em um momento de paz, quando o elenco de novos e antigos personagens precisam enfrentar o ressurgimento do mal, vindo das profundezas mais escuras das Montanhas Sombrias. Os reinos e personagens irão esculpir legados que viverão por muito tempo depois que eles se forem.",
    "category": "Série",
    "status": "Completo",
    "lastSeen": 8
  }
]

Rotas de compartilhamento

Criar um link de compartilhamento

POST /shares

Request:

Headers:

Enviar o token (Bearer token)
Params Type Description
Authorization string required, Starting with Bearer

Response:

Error cases:

Status code Cause
400 Request in wrong format
401 Invalid token
426 Outdated token
498 Expired token

Em caso de sucesso: (status code 201:) e um objeto como retorno. example:

{
  "id": 1,
  "userId": 1,
  "shortUrl": "iMIDBSB9m"
}

Buscar a coleção do usuário e o ranking do dono daquele link

GET /share/:shortUrl

Request:

Params:

Enviar o token (Bearer token)
Params Type Description
shortUrl string required, trim, length(9)

Response:

Error cases:

Status code Cause
400 Requisição no formato incorreto
401 Token inválido
404 link não encontrado
426 Token desatualizado
498 Token expirado

Em caso de sucesso (status code 200:) e um objeto como retorno. example:

{
  "userCollections": [
    {
      "id": 62,
      "lastSeen": 1070,
      "status": {
        "id": 1,
        "name": "Ativo"
      },
      "collection": {
        "id": 15,
        "name": "One Piece",
        "poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
        "synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
        "category": {
          "id": 1,
          "name": "Mangá",
          "createdAt": "2022-09-30T22:29:07.695Z"
        }
      }
    },
    {
      "id": 66,
      "lastSeen": 8,
      "status": {
        "id": 2,
        "name": "Completo"
      },
      "collection": {
        "id": 17,
        "name": "O Senhor dos Anéis: Os Anéis de Poder 1ª Temporada",
        "poster": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ9a7cngBSAOKyqTdaBgbdSrYWceR4w9CqJJOojtaH532M-_8uF",
        "synopsis": "Antes da jornada de Frodo pela Terra-Média, a Segunda Era foi palco de diversas lendas heróicas. O drama épico que se passa milhares de anos antes de A Sociedade do Anel, tem foco em um momento da história em que grandes poderes foram forjados, reinos ascenderam e também ruíram, ao mesmo tempo em que heróis foram testados e tiveram a esperança quase aniquilada pelo grande vilão do universo de Senhor dos Anéis. A série começa em um momento de paz, quando o elenco de novos e antigos personagens precisam enfrentar o ressurgimento do mal, vindo das profundezas mais escuras das Montanhas Sombrias. Os reinos e personagens irão esculpir legados que viverão por muito tempo depois que eles se forem.",
        "category": {
          "id": 6,
          "name": "Série",
          "createdAt": "2022-09-30T22:29:07.695Z"
        }
      }
    },
    {
      "id": 67,
      "lastSeen": 120,
      "status": {
        "id": 1,
        "name": "Ativo"
      },
      "collection": {
        "id": 16,
        "name": "One Punch-Man",
        "poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
        "synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
        "category": {
          "id": 1,
          "name": "Mangá",
          "createdAt": "2022-09-30T22:29:07.695Z"
        }
      }
    }
  ],
  "ranking": [
    {
      "rankingId": null,
      "position": 1,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": 54,
      "position": 2,
      "userCollectionId": 67,
      "name": "One Punch-Man",
      "poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
      "synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
      "category": "Mangá",
      "status": "Ativo",
      "lastSeen": 120
    },
    {
      "rankingId": 52,
      "position": 3,
      "userCollectionId": 62,
      "name": "One Piece",
      "poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
      "synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
      "category": "Mangá",
      "status": "Ativo",
      "lastSeen": 1070
    },
    {
      "rankingId": null,
      "position": 4,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 5,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 6,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 7,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 8,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 9,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    },
    {
      "rankingId": null,
      "position": 10,
      "userCollectionId": null,
      "name": null,
      "poster": null,
      "synopsis": null,
      "category": null,
      "status": null,
      "lastSeen": null
    }
  ],
  "nickname": "pacheco",
  "avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}

Variáveis de ambiente

Para executar este projeto, você precisará adicionar as seguintes variáveis ​​de ambiente ao seu arquivo .env

DATABASE_URL

  • Ex: postgres://UserName:Password@Hostname:5432/DatabaseName

PORT

  • número da porta (recomendado 5000)

JWT_SECRET

  • qualquer string

JWT_SECRET_OAUTH

  • qualquer string

CLIENT_ID

  • número do client_id do github oauth

CLIENT_SECRET=

  • string secreto do github oauth

REDIRECT_URL

  • Deve terminar com /oauth/github/
    • Ex: localhost:5000/oauth/github/

Github OAuth Docs


Rodar localmente

Versão do NodeJS 16.15.0

Clone o projeto

  git clone https://github.com/ThVinicius/geekBook_backEnd.git

Vá para o diretório do projeto

  cd geekBook_backEnd

Instale as dependências

  npm install

Crie o banco de dados

  npx prisma migrate dev

Crie as sementes

  npm run seed

Inicie o servidor

  npm run dev

Acknowledgements


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published