Voting.pool é um app de votação 🗳️ com o front e o back sendo desenvoldido com ferramentas da linguagem JavaScript. Para ver o código do backend e frontend você pode acessar seus repos separados ou entrar nas pastas de /server
e /web
.
Esse repo é um monorepo dos outros dois repos citados. O projeto em questão teve seu deploy feito na aws(EC2) usando NGINX e Docker.
Algumas das funções do app:
- O app deve ser capaz de criar novos usuários.
- usuários podem logar e permanecer logados até efetivarem log out.
- Todo usuário pode criar pool e adicionar qualquer pessoa na pool, sendo o dono automaticamente adicionado.
- Todos os integrantes da pool podem votar entre si, porém não em si mesmo.
- Participantes de uma pool podem visualizar os resultados da pool após ela ser fechada
- Somente o dono da pool pode fechar a mesma.
Para rodar o projeto localmente é necessário rodar tanto o front quanto o back, então é necessário baixar ambos os repositórios na sua máquina ou baixar o monorepo - para isso use git clone ou baixe manualmente.
> git clone https://github.com/LuigiVanin/voting.pool-monorepo.git
Antes de mais nada, é importante lembrar-se que esse projeto necessita do uso de um banco de dados postgres. Por isso, antes mesmo de iniciar o backend é preciso realizar a configuração deste. Após ter feito isto, basta executar as devidas configurações Após setar seu banco postgres, basta configurar o projeto - para isso basta seguir o exemplo de .env, o arquivo .env.example
.
Para rodar o front basta entrar na pasta do mesmo e instalar as dependências:
> npm i
Agora, precisamos setar o banco de dados:
npx prisma migrate dev
Para rodar em desenvolvimento basta usar o seguinte script:
npm run start:dev
Para rodar o front basta entrar na pasta do mesmo e instalar as dependências:
> npm i
Agora, para rodar a versão de desenvolvimento rodamos o seguinte script:
> npm run dev
Na raiz do projeto rode:
> docker-compose -f docker-compose.test.yml up --build
Isso irá rodar a aplicação na sua porta 3000!
OBS.: Vale salientar que tanto o back quanto o front tem suas aplicações dockerizadas, então é possível roda-las separadamente. O arquivo docker-compose.test.yml
já dockeriza ambas aplicações e as junta em um porta usando nginx.
Os testes desses repo utilizam das libs do Jest(back) e Cypress(front) - para rodar os respectivos testes basta rodar os scripts corretos!
No backend é necessário utilizar o docker para subir o banco de testes e rodar o script:
npm run test:e2e
ou, usando docker compose da pasta server/
(lembre de setar env file .env.prod
):
> docker-compose -f docker-compose.ci.yml up --build --exit-code-from node_app
No frontend
WIP 🚧🚧🚧
Essas features serão desenvolvidas conforme o dev(eu) estiver com tempo livre...
- Adicionar um ReadMe
- Adicionar compatibilidade com docekr
- Criar um monorepo
- Mudar restante das notificações para toasts
- Corrigir bug da tela de resultado.
- Habilitar CI
- Finalizar testes de backend.
- Finalizar testes de Frontend
- Migrar toda a aplicação para aws EC2.
-> Mais pacotes podem ser vistos nos package.json de cada repo.