Giter Club home page Giter Club logo

desafionative's Introduction

Desafio Native IP Full-stack

O desafio consiste em desenvolver uma aplicação Full-stack para salvar clientes em um banco de dados relacional MySQL e ler/editá-los em um dashboard Front-end React ou Angular.js. Além de outros requisitos técnicos como o uso de Websocket, SOLID, DRY, jsonwebtoken, Pipeline CI, Linter e Testes.

🚀 Deploy 🚀

O Deploy da aplicação foi feito no Heroku utilizando de um Pipeline no GitHub Actions do repositório. Seguem os links de acesso da aplicação:

Testar Rotas do Back-end

Run in Postman

💻 Rodar a aplicação na sua máquina 💻

Você vai precisar ter instalado

🐋 Rodar com Docker 🐋

Instruções

Clonar o repositório

Primeiramente você vai precisar clonar este repositório para qualquer diretório em sua máquina local.

Para isso você vai executar o seguinte comando no seu terminal:

git clone https://github.com/RafaelAugustScherer/desafioNative.git

Setup

Antes de inicializar o projeto, é importante configurar algumas variáveis de ambiente e instalar as dependências do projeto.

Configurar o ambiente (.env)

  • Back-end
    • Acesse o diretório ./back-end
    • Altere o arquivo .env.example com as variáveis de ambiente indicadas:
    PORT=3001 // Porta onde a aplicação vai ouvir requisições
    DATABASE_URL="mysql://root:root@esafio-native-db:3306/desafio_native" // URL onde o banco MySQL está rodando (Padrão Docker)
    JWT_SECRET=MySecretJWTSecret // Segredo usado para gerar tokens JWT (qualquer string)
    

    Apague os comentários indicados // ... ao lado do valor da variável

    • Renomeie o arquivo para .env
  • Front-end
    • Acesse o diretório ./front-end
    • Altere o arquivo .env.example com as variáveis de ambiente indicadas:
    REACT_APP_SERVER=http://localhost:3001 // URL de acesso à API (back-end)
    REACT_APP_WS_SERVER=ws://localhost:3001 // URL de acesso ao WebSocket (mesmo da API)
    

    Apague os comentários indicados // ... ao lado do valor da variável

    • Renomeie o arquivo para .env

Instalar dependências

  • Na pasta./front-end rode o comando npm install

Inicializar a Aplicação

Inicialize o back-end e o front-end em terminais separados

Por padrão o back-end inicializa na porta 3001 Por padrão o front-end inicializa na porta 3000

  • Back-end
    • Acesse o diretório ./back-end
    • Rode o comando npm run compose:up para iniciar o banco MySQL e a API Dockerizados
  • Front-end
    • Acesse o diretório ./front-end
    • Rode o comando npm start para iniciar a aplicação React

Acessar a Aplicação

  • Back-end:
    • Você pode testar a aplicação via Postman ou Insomnia - URL: http://localhost:3001
  • Front-end:
    • No seu navegador, use a URL (padrão): http://localhost:3000

🐬 Rodar com MySQL 🐬

Instruções

Clonar o repositório

Primeiramente você vai precisar clonar este repositório para qualquer diretório em sua máquina local.

Para isso você vai executar o seguinte comando no seu terminal:

git clone https://github.com/RafaelAugustScherer/desafioNative.git

Setup

Antes de inicializar o projeto, é importante configurar algumas variáveis de ambiente e instalar as dependências do projeto.

Configurar o ambiente (.env)

  • Back-end
    • Acesse o diretório ./back-end
    • Altere o arquivo .env.example com as variáveis de ambiente indicadas:
    PORT=3001 // Porta onde a aplicação vai ouvir requisições
    DATABASE_URL="mysql://<USERNAME>:<PASSWORD>@localhost:<PORT>/desafio_native" // URL onde o banco MySQL está rodando
    JWT_SECRET=MySecretJWTSecret // Segredo usado para gerar tokens JWT (qualquer string)
    

    Apague os comentários indicados // ... ao lado do valor da variável

    • Renomeie o arquivo para .env
  • Front-end
    • Acesse o diretório ./front-end
    • Altere o arquivo .env.example com as variáveis de ambiente indicadas:
    REACT_APP_SERVER=http://localhost:<PORT> // URL de acesso à API (back-end)
    REACT_APP_WS_SERVER=ws://localhost:<PORT> // URL de acesso ao WebSocket (mesmo da API)
    

    Apague os comentários indicados // ... ao lado do valor da variável

    • Renomeie o arquivo para .env

Instalar dependências

  • Nas pastas ./back-end e ./front-end rode o comando npm install

Inicializar a Aplicação

Inicialize o back-end e o front-end em terminais separados

Por padrão o back-end inicializa na porta 3001 Por padrão o front-end inicializa na porta 3000

  • Back-end
    • Acesse o diretório ./back-end
    • Rode o comando npm run dev para iniciar a API
  • Front-end
    • Acesse o diretório ./front-end
    • Rode o comando npm start para iniciar a aplicação React

Acessar a Aplicação

  • Back-end:
    • Você pode testar a aplicação via Postman ou Insomnia
  • Front-end:
    • No seu navegador, use a URL (padrão): http://localhost:3000

🚧 Testes 🚧

Os testes foram desenvolvidos exclusivamente para a API (back-end)

Os testes necessitam que as dependências do projeto estejam instaladas (npm install)

Testes Unitários

  • Rode o comando npm run test:unit

Testes de Integração

Configure a variável de ambiente em .env.test.example e renomeie o arquivo para .env.test

DATABASE_URL="mysql://<USERNAME>:<PASSWORD>@localhost:<PORT>/desafio_native_test" // URL onde o banco MySQL de testes vai rodar
  • MySQL: Rode o comando npm run test:integration
  • Docker: Rode o comando npm run test:integration:docker

Tecnologias Usadas

Banco de Dados 💾

Back-end ⚙️

Front-end 💻

Geral 🧾

💡 Referências a outros projetos 💡

Neste projeto foram utilizados recursos e sintaxe de código inspirados em outros projetos pessoais que já fiz:

desafionative's People

Contributors

rafaelaugustscherer 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.