Skip to content

Plann.er é uma aplicação para gestação de viagens com funcionalidade de compartilhamento entre participantes.

License

Notifications You must be signed in to change notification settings

Dedo-Finger2/nlw-journey-node

Repository files navigation

Plann.er - NLW Journey

project-banner

💫 Organização de Viagens com Facilidade 💫


Minimum node.js version GitHub license GitHub latest commit GitHub forks Github all releases

O Plann.er é uma API desenvolvida durante o evento NLW Journey, um evento 100% prático da Rocketseat em 2024.

Com o Plann.er, os usuários encontram uma maneira prática e simples de organizar e gerenciar suas viagens, sejam elas solo ou em grupo! Tornando o gerenciamento das viagens fácil e livrando os usuários de estresse.


📋 Funcionalidades da API

  • Crie roteiros detalhados: Organize as etapas da sua viagem, incluindo destinos, atividades, datas e horários.
  • Gerencie links importantes: Armazene links para reservas, voos, hotéis, restaurantes e outras informações relevantes em um só lugar.
  • Compartilhe com amigos e/ou familiares: Compartilhe seu roteiro e links com outros membros da sua viagem usando apenas o endereço de email.

🌟 Benefícios do Uso da API

  • Planeje viagens perfeitas: Organize seus roteiros com antecedência para aproveitar ao máximo o seu tempo e evitar imprevistos.
  • Centralize informações importantes: Tenha todas as informações da sua viagem em um só lugar, acessíveis a qualquer momento e em qualquer dispositivo.
  • Colabore com seus participantes: Planeje e organize a viagem em conjunto com seus amigos e familiares, compartilhando responsabilidades e informações.
  • Tenha uma viagem tranquila: Minimize o estresse e maximize a diversão com um planejamento completo e organizado.

🛠️ Tecnologias Utilizadas

Biblioteca Motivação do Uso
Fastify Criação do servidor web.
Zod Validação de dados para TypeScript.
PrismaORM ORM para trabalhar com bancos de dados em ambientes TypeScript de forma nativa.
Nodemailer Envio de emails.
ESLint Formatação e padronização do código.
Prettier Embelezamento e padronização do código.
Lint-Staged Aplicação de scripts específicos em apenas arquivos "staged".
Husky Automação de tarefas e execução de scripts em situações específicas (antes de um commit, por exemplo).
Jest & Supertest Testes end-to-end.

🚀 Requisitos para Uso

  1. NodeJS instalado;
  2. Gerenciador de pacotes instalado (npm, yarn ou pnpm);

📦 Como Usar

Clone o repositório do projeto

git clone https://github.com/Dedo-Finger2/nlw-journey-node.git

Acesse a pasta do projeto e instale as dependências

cd nlw-journey-node/
yarn install

Faça o seed do banco de dados

yarn db:seed

Inicie o servidor de desenvolvimento

yarn start:dev

Execute os testes end-to-end

yarn test:e2e

Tenha acesso a uma visualização do banco de dados

yarn db:studio

Crie e execute a build do projeto

yarn build
yarn start

🏗️ Arquitetura

Requisitos Funcionais (RFs)

  • O usuário deve poder criar uma nova viagem
  • O usuário deve poder criar uma atividade para uma viagem
  • O usuário deve poder criar links para as viagens
  • O usuário deve poder atualizar dados de uma viagem
  • O usuário deve poder criar um link de convite mesmo depois de ter criado a viagem
  • O participante deve poder confirmar sua presença em uma viagem
  • O usuário deve poder visualizar detalhes de uma viagem
  • O usuário deve poder visualizar uma lista dos participantes de uma viagem
  • O usuário deve poder visualizar as atividades marcadas para uma viagem
  • O usuário deve poder visualizar os links de uma viagem
  • O usuário deve poder visualizar detalhes de um participante específico
  • O usuário deve poder confirmar sua viagem

Regras de Negócio (RNs)

  • Não deve ser possível criar uma viagem com dados inválidos
  • Não deve ser possível confirmar presença em uma viagem que não exista
  • Não deve ser possível criar um convite, link ou atividade para viagens que não existem
  • Não deve ser possível editar dados de viagens que não existem
  • Não deve ser possível confirmar uma viagem que não exista
  • Ao criar uma viagem o usuário deve poder fornecer um conjunto de emails para adicionar como participantes na criação da viagem

Requisitos Não Funcionais (RNFs)

  • O convite de participantes deve ser feito através de envio de e-mail
  • A plataforma deve usar banco de dados PostgreSQL
  • Deve haver testes end to end para todas as rotas e suas ramificações / possíveis caminhos
  • Deve ser usado um banco de dados dedicado a testes usando SQLite
  • Antes de executar os testes uma factory deve ser acionada para adicionar dados de teste iniciais

🔮 Implementações Futuras

  • Front-End com Vue.JS
  • Sistema de autenticação baseado em JWT
  • Refatoração seguindo princípios de SOLID e Clean Arch
  • Deploy completo da API
  • Deploy completo do Front-End
  • Criar um script de Build

🔗 Links Úteis

About

Plann.er é uma aplicação para gestação de viagens com funcionalidade de compartilhamento entre participantes.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages