Simples RESTFul API e SPA (Single Page Application) App para gerenciar incidentes desenvolvido com seguinte stack:
Framework/Lib | _ |
---|---|
ReactJS | UI Interfaces |
Redux | Data Store |
React Router | Routing |
Material UI | UI Framework |
Formik | Data Validation |
Framework/Software | _ |
---|---|
Laravel | REST API |
MySQL | Storage |
Plataforma | _ |
---|---|
Docker | Containerized development workflow |
- Git - https://git-scm.com
- Docker - https://www.docker.com
Por questões de simplicidade, este projeto utiliza um simples Docker setup para execução em ambiente local/desenvolvimento não recomendado para produção.
Clonar este projeto localmente:
git clone git@github.com:adrianorsouza/incident-app.git
Start Docker Compose:
cd incident-app
docker-compose up -d
Após o start completo de todos os containers abra o browser e acesse o seguinte endereço:
Após start up dos containers o MySQL database estará pronto para receber conexões, no entanto,
é necessário efetuar o migration da tabela incidents
para o funcionamento correto
do app, conforme detalhado a seguir.
Execute o comando artisan migration no backend
container:
docker-compose exec api bash -c "php artisan migrate:install"
docker-compose exec api bash -c "php artisan migrate:status"
docker-compose exec api bash -c "php artisan migrate"
O comando abaixo irá popular o database com dados fictícios de incidentes para melhor simular os testes com a interface do frontend:
docker-compose exec api bash -c "php artisan db:incident -n 100"
Remover todos os registros na tabela incidents
:
docker-compose exec api bash -c "php artisan db:incident --wipe"
Incident REST API Docs pode ser acessada via Postman no seguinte endereço:
https://documenter.getpostman.com/view/4934683/Tz5v3avj
docker-compose exec api bash -c "php artisan test"
PASS Tests\Feature\IncidentControllerTest
✓ list incidents
✓ validation create new incident with empty data
✓ validation create incident with invalid data
✓ create incident
✓ casting result type
✓ show incident item
✓ show incident item not found
✓ update incident not found
✓ validation update item
✓ update incident
✓ delete incident item
Tests: 11 passed
Time: 1.28s
Por questões de simplicidade e praticidade frontend não possui unit testes
Não foi considerado alguma regra de negócio para validação de dados, no entanto, user input possuí o mínimo necessário para validação dos dados.
Column | Type | Max Length | Default | Required | Obs |
---|---|---|---|---|---|
title | varchar | 255 | NULL | Sim | -- |
description | text | 500 | NULL | Sim | (suporta ate 4096 bytes). |
level | varchar | 10 | NULL | Sim | high, medium, low |
type | varchar | 10 | NULL | Sim | alarm, incident, others. |
status | tinyint | 1 | 1 | Sim | 0, 1. |
Copyright © 2021, Adriano Rosa info@adrianorosa.com
All rights reserved.
For the full copyright and license information, please view the LICENSE file that was distributed within the source root of this project.