Giter Club home page Giter Club logo

to-do-list-challenge-server's Introduction

To-do List em NestJS com PostgreSql

Desafio

Desenvolver um sistema de To-do List com banco relacional, onde o usuário tenha as seguintes característica:

  • Não precisa ter cadastro no sistema
  • Tem acesso a lista de tarefas pendentes
  • Tem acesso a lista de tarefas já concluídas.
  • Pode incluir uma nova tarefa informando os dados:
    • Nome do responsável
    • Email do responsável (deve ser validado conforme descrito abaixo)
    • Descrição da tarefa
  • Pode alterar as tarefas de “pendente” para “concluída”.
  • Pode alterar as tarefa de “concluída” para “pendente”, este procedimento só pode ser realizado duas vezes por tarefa, e precisa informar a senha do supervisor (a senha é fixa e está na variável de ambiente SUPERVISOR_PASSWORD).
  • Pode incluir 3 tarefas randômicas através da opção “Estou sem tarefas

Validação do email

Deverá ser utilizada a API do MailboxLayer (https://mailboxlayer.com/documentation - API KEY será definida na variável de ambiente MAILBOXLAYER_KEY). Será considerado um e-mail correto aquele que tem formato válido e que tenha os registros MX de acordo também. Se o e-mail for inválido deverá sugerir ao usuário o endereço indicado pela API (atributo did_you_mean).

Opção "Estou sem tarefas"

Incluir 3 tarefas automaticamente ao usuário de nome “Eu”, email “[email protected]”. As descrição das tarefas devem conter fatos randômicos sobre Cachorros, consultados na API (https://alexwohlbruck.github.io/cat-facts/).

Instalação

Você precisa instalar o NestJs para executar o projeto:

$   npm i -g @nestjs/cli

Após isso instale as dependências do projeto:

$ npm install

Antes de executar o projeto, precisamos definir as variáveis de ambiente, conforme exemplo no arquivo .env.example presenta na raiz do projeto.

Existem muitas maneira de definir as variáveis de ambiente, a mais simples é criarmos um arquivo chamado .env na raiz do projeto, semelhante ao arquivo .env.example.

Banco de Dados (executando migrations)

Para realização do desafio, utilizei uma instancia de banco de dados gratuito do site https://www.elephantsql.com/, incluindo as informações de acesso da base no arquivo .env.

Após a criação do banco de dados, e definição das variáveis de ambiente, precisamos executar as migrations do projeto, criando assim a estrutura do banco de dados:

$ npm run migrate

Executando o projeto

Você pode inicializar o projeto através dos seguintes comandos:

# development
$ npm run start

# watch mode
$ npm run start:dev

Mas lembre, os comandos acima executam todo o pacato NestJs, o que pode exigir mais de 2GB de memória RAM. Para executar o projeto de uma forma mais eficiente, primeiro vamos gerar um build do mesmo, através do comando:

$ npm run build

Em seguida vamos executar o código gerado na pasta dist, através do comando:

$ npm run start:prod

Swagger (documentação dos endpoints)

Este micro serviço foi implementado utilizando a estratégia de auto-documentação do próprio código. Para acessar a documentação precisamos executar o projeto e em seguida acessar a url http://localhost:3000/swagger/.

Frontend em React Native com Expo e geração de PWA

Acesse o projeto To-Do List Frontend.

to-do-list-challenge-server's People

Contributors

alliterhorst avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.