Desafio proposto por IGOR (Tech Lead do projeto) e Luiz, sócio do neǵocio. NDM é uma empresa cujo foco é assesoria Juridica para novos empreendimentos e Startups. O desafio esta na área de TI. Criar um servidor usando Node e que serve um frontend para o client usando REACTJS. O banco de dado é POSTGRESQL.
Durante o desenvolvimento, por questões de treinamento, imutabilidade, versionamento e requisitos de instalação, utilizei a ferramenta DOCKER (meu sistema operacional base é o LINUX UBUNTU).
Entretando, na pasta, todos os códigos estão a mostra. As imagens do docker rodam o mesmo código ali exposto, logo, caso seja preferido, simplesmente rode usando os comando na aba Orientações sem DOCKER.
- Dentro da pasta do arquivo abra um terminal de comandos e rode:
docker build -t backendgsa:1.0.0 ./backend/
docker build -t frontgsa:1.0.0 ./frontend/page/
docker compose -f app.yaml up
Naturalmente as credenciais ficam em variaveis de ambientes e não devem ser mostradas. Vale enfatizar que este exercicio é demonstrativo e por isso as variaveis de ambiente estão abertas.
Para configurar o banco de dados:
- Postgresql
- user: admin
- senha: password
Ao entrar clique no banco de dados 'esport', em seguida em 'Comando SQL' e execute os comandos que estão nos arquivos DDL.sql e DML-examples.sql.
Os comandos DML-examples serve apenas para demonstrações posteriores.
Aguarde os servidores estabilizar e entre na página WEB (dev)
docker compose -f app.yaml down
docker rmi frontgsa:1.0.0
docker rmi backendgsa:1.0.0
Tanto o logo tanto a imagem da pagina home foi criada usando uma API do unsplash (para ganhar tempo).
A aplicação é responsiva.
A regra de negócio: cada time pode ter somente 5 jogadores foi implementado no servidor backend:
A regra de cada jogador poder fazer parte de um único time foi resolvido pela forma com que o schema do banco de dados foi criado.
O front não deixa o usuario digitar valores invalidos, e ele não envia ao backend formularios que não possuam dados.
Ao registrar um time, este aparece dinamicamente na barra de seleção de times no cadastro de jogadores.
Ao registrar um jogador em um time, este aparece dinamicamente na pagina de overview.