- Instruções para devs (geral)
- Instruções para devs (backend)
- Instruções para devs (database)
- Instruções para devs (frontend)
Deixo como recomendação a utilização do VSCode para todo o projeto.
Para manter o projeto por inteiro rodando, será necessário manter os três servidores rodando (banco de dados, backend e frontend).
Fique atento ao momento de gerar os commits, faça isso com frequência. Atenção, segue abaixo as tags padrões de nomeação de commits:
[feat]
-> Implementação parcial ou completa de uma determinada funcionalidade;[merge]
-> União de duas branchs;[fix]
-> Correção de um erro antigo;[docs]
-> Alterações envolvendo documentação ou comentários;[style]
-> Formatação de código;[refactor]
-> Refatoração de código, melhorias que não alteram a funcionalidade;[test]
-> Testes de qualquer tipo;[init]
-> Código inicial do projeto, normalmente gerado por alguma ferramenta;[chore]
-> Vamos definir aqui como tudo que não se encaixar nas definições anteriores.
Meu conselho é inverter a lógica. Geralmente, pensamos no nome na hora de realizar o commit (eu faço assim). Agora, vamos pensar no nome antes (não por completo, apenas a tag).
Estou entrando para começar a implementação de uma nova funcionalidade, que envolve criar uma sala.
O commit: [feat] Iniciando implementação de criação de salas
.
O nome já sugere que não terminei. Vamos supor que seja porque eu encontrei um bug no caminho. Então agora tenho que resolver esse bug.
O commit: [fix] Corrigindo erro de salas duplicadas
.
Agora estou indo terminar a funcionalidade.
O commit: [feat] Implementando criação de salas
.
Agora todos sabemos que a funcionalidade foi implementada.
É chato manter esse padrão, mas assim conseguimos manter o histórico do código organizado, bem definido e separado.
Crie uma branch sempre que for inicializar uma nova funcionalidade. O nome dela tem que ser sugestivo, de modo que possamos identificar a funcionalidade. Assim que terminar, abra um Pull Request
para a branch main e aguarde avaliação.
Estou indo implementar a criação de canais. Logo criarei a branch criação-canais
.
Certifique-se de ter o Java (v21 - LTS) instalado. Além disso, é bom ter o Maven também.
Para executar a aplicação Java
, estou utilizando o pacote de extensões Extension Pack for Java. Com ela, basta abrir o arquivo backend/src/main/java/app/netbooks/backend/BackendApplication.java
e você verá um botão de play no canto superior esquerdo.
Estaremos utilizando estritamente o MySQL Workbench, para aproveitar nossos modelos conceituais e relacionais desenvolvidos nele, que se encontram na pasta database/model
. Também estamos armazenando as principais queries dentro da pasta database/queries
, assim todos nós conseguiremos utilizar.
Também certifique-se de ter o Docker. Pode ser meio complicado, deixo esse manual como recomendação.
Também deixo como recomendação instalar a extensão MySQL
. Para operações que não envolvem sincronizações/alterações no modelo relacional, como consultas, você pode acabar preferindo ela ao invés do MySQL Workbench
. E vale destacar que é possível linkar nossos arquivos de query nele.
Para inicializar o banco de dados MySQL
através do Docker
, execute:
cd backend
docker-compose up -d
Uma vez inicializado o container, você pode se conectar ao servidor pelo MySQL Workbench
utilizando os dados abaixos:
username: root
password: admin
port: 3307
hostname: 127.0.0.1
Assim que se conectar, crie dois schemas: netbooks
e tests
. Feito isto, importe no MySQL Workbench
o arquivo do nosso modelo relacional database/models/relational.mwb
e aplique o database -> forward engineer
no schema netbooks
.
Para que possa realizar os testes, aplique o database -> synchronize model
do mesmo arquivo de modelo no schema tests
.
Atenção: ele vai tentar aplicar no schema
netbooks
, para alterar paratests
você terá que selecionar esse schema em uma etapa especifica da operação de sincronização que te dá a opção de sobrescrever o schema alvo de sincronização.
Observação: repare que nosso modelo relacional já acompanha as restrições desejadas e não é composto apenas pelas relações (tabelas).
O gerenciador de pacotes utilizado no frontend é o pnpm. Portanto, o instale. Talvez seja necessário instalar o node (v22.14.0 - LTS) antes também.
Deixo como recomendação de extensões: SCSS Intellisense e Tailwind CSS Intellisense.
Um vez que tenha instalado tudo, execute os seguintes comandos dentro da raíz do projeto clonado:
cd frontend
pnpm install
Para executar, uma vez dentro da pasta frontend
, basta:
pnpm dev