Skip to content

dscarv27/nlw-journey-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo NLW Journey NLW Journey (Node)

Capa do projeto

🚀 Aplicação finalizada 🚀

About | Routes | Setup | Technologies | License

💻 About

Esta é a API da aplicação de nome Plann.er, a qual consiste em um sistema de planejamento de viagens, na qual você pode montar planos de viagens com amigos, registrar atividades, adicionar links úteis sobre a viagem e outras funcionalidades.

Essa aplicação foi desenvolvida durante o evento NLW Journey da Rocketseat utilizando principalmente tecnologias como Node, TypeScript, Fastify e Prisma.

⛕ Routes

Trips Routes

POST /trips

Cria uma nova viagem.

Request body
{
  "destination": "Costa Rica",
  "starts_at": "2024-08-01 18:00:00",
  "ends_at": "2024-08-04 18:00:0",
  "owner_name": "John Doe",
  "owner_email": "[email protected]",
  "emails_to_invite": [
    "[email protected]",
    "[email protected]",
    "[email protected]"
  ]
}
Response body
{
  "tripId": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
}

GET /trips/:tripId

Retorna os detalhes de uma viagem.

Response body
{
  "trip": {
    "id": "f944daf7-e7e6-47a2-b050-1556d6a9e963",
    "destination": "Cabo Verde",
    "starts_at": "2024-08-01T21:00:00.000Z",
    "ends_at": "2024-08-04T21:00:00.000Z",
    "is_confirmed": true
  }
}

PUT /trips/:tripId

Altera uma viagem.

Request body
{
  "destination": "Rio de Janeiro",
  "starts_at": "2024-08-01 18:00:00",
  "ends_at": "2024-08-04 18:00:0"
}
Response body
{
  "tripId": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
}

GET /trips/:tripId/confirm

Confirma uma viagem.

Participants Routes

POST /trips/:tripId/invites

Envia um convite a um participante para uma viagem.

Request body
{
  "email": "[email protected]"
}
Response body
{
  "participantId": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
}

GET /trips/:tripId/participants

Retorna os participantes de uma viagem.

Response body
{
  "participants": [
    {
      "id": "a91c91e1-8cca-4649-88e8-91cdf143df22",
      "name": "John Doe",
      "email": "[email protected]",
      "is_confirmed": true
    },
    {
      "id": "dce0de32-421a-4512-9580-21c75648350d",
      "name": null,
      "email": "[email protected]",
      "is_confirmed": false
    },
    {
      "id": "d673c4eb-f39a-4de4-8617-ef23b3707693",
      "name": null,
      "email": "[email protected]",
      "is_confirmed": true
    }
  ]
}

GET /participants/:participantId

Retorna os detalhes de um participante.

Response body
{
  "participant": {
    "id": "a91c91e1-8cca-4649-88e8-91cdf143df22",
    "name": "John Doe",
    "email": "[email protected]",
    "is_confirmed": true
  }
}

GET /participants/:participantId/confirm

Confirma um participante na viagem.

Activities Routes

POST /trips/:tripId/activities

Cria uma atividade em uma viagem.

Request body
{
  "title": "Play",
  "occurs_at": "2024-08-01 18:00:00"
}
Response body
{
  "activityId": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
}

GET /trips/:tripId/activities

Retorna as atividades de uma viagem.

Response body
{
  "activities": [
    {
      "date": "2024-08-01T21:00:00.000Z",
      "activities": [
        {
          "id": "6e444c9e-11b8-4b95-b5ff-73288f3c0b5e",
          "title": "Play",
          "occurs_at": "2024-08-01T22:00:00.000Z",
          "trip_id": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
        }
      ]
    },
    {
      "date": "2024-08-02T21:00:00.000Z",
      "activities": [
        {
          "id": "6e444c9e-11b8-4b95-b5ff-73288f3c0b5e",
          "title": "Play",
          "occurs_at": "2024-08-02T22:00:00.000Z",
          "trip_id": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
        }
      ]
    }
  ]
}

Links Routes

POST /trips/:tripId/links

Cria um link em uma viagem.

Request body
{
  "title": "Website",
  "url": "https://www.airbnb.com.br"
}
Response body
{
  "linkId": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
}

GET /trips/:tripId/links

Retorna os links de uma viagem.

Response body
{
  "links": [
    {
      "id": "f944daf7-e7e6-47a2-b050-1556d6a9e963",
      "title": "Website",
      "url": "https://www.rocketseat.com.br",
      "trip_id": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
    },
    {
      "id": "f944daf7-e7e6-47a2-b050-1556d6a9e963",
      "title": "Website 2",
      "url": "https://www.rocketseat2.com.br",
      "trip_id": "f944daf7-e7e6-47a2-b050-1556d6a9e963"
    }
  ]
}

⚙ Setup

📝 Requisites

Antes de baixar o projeto você vai precisar ter instalado na sua máquina as seguintes ferramentas:

Além disto é bom ter um editor para trabalhar com o código como VSCode

Para testar as rotas da aplicação você pode usar o cliente HTTP Insomnia

Cloning and Running

Passo a passo para clonar e executar a aplicação na sua máquina:

# Clone este repositório
$ https://github.com/dscarv27/nlw-journey-nodejs.git

# Acesse a pasta do projeto no terminal
$ cd backend

# Instale as dependências
$ npm install

# Crie o arquivo '.env' e preencha as variáveis conforme o arquivo '.env.example' 

# Execute as migrations para criar as tabelas necessários no banco
$ npx prisma migrate-dev

# Execute a aplicação em modo de desenvolvimento
$ npm run dev

# Para verificar as informações testadas no banco de dados:
$ npx prisma studio

# A aplicação inciará na porta que você configurou no arquivo '.env' 

# Para conectar com o frontend (opcional), acessar e seguir o readme em:
[frontend-react](https://github.com/dscarv27/nlw-journey-react)

🛠 Technologies

As principais ferramentas foram usadas na construção do projeto:

Para mais detalhes das dependências gerais da aplicação veja o arquivo package.json

📝 License

Este projeto está sob a licença MIT. Consulte o arquivo LICENSE para mais informações

Feito com 💜 por Daniel Carvalho 👋🏽 Entre em contato!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published