- Introdução
- Setup e InĂcio de Projeto
- Tecnologias Usadas
- Specs e Padrões de Projeto
- Atualizando o monorepo
Esse Ă© o repositĂłrio principal do NTec e engloba todo nosso escopo de dev/delivery. Nele temos algumas pastas que correspondem a uma funcionalidade no geral:
- /.github -> relacionada ao readme, workflows e mais em relação ao Github e o Github Actions
- /husky -> usado pra validações/scripts com o Git, por exemplo os lints antes de dar Push
- /bruno -> Ă© nosso documentador de APIs, usado pra mandar requests, documentar o back e facilitar a vida do front!
- /mobile -> contém nosso front mobile que usa expo e nativewind atualmente
- /web -> contém o next, prisma e nossas tecnologias de Front web e Back!
- /.vscode -> configs do seu editor, sinta-se Ă vontade pra customizar
Para começar um projeto novo a ser executado, clique em usar template e marque o owner como polijr (se não for um projeto de treinamento). Após criado, clique em code > pegue o link do git > entre na pasta desejada no seu terminal e digite:
git clone <link>Depois disso, entre na pasta criada e instale as dependĂŞncias
pnpm installO monorepo já vem com alguns modelos, telas, libs e componentes instalados por padrão. A primeira coisa a fazer é excluir ou modificar essa base pra atender às necessidades do seu projeto. Por exemplo, temos o Resend para enviar emails e ele está sendo usado por padrão para rota de 'forgot password'. Então é necessário configurar o resend ou apagar essa rota e seus derivados.
Antes de rodar, também é necessário criar o arquivo .env com as variáveis relacionadas ao seu projeto, como o URL do Mongodb Atlas e alguns outros encontrados no .env.example (arquivo que não deve ser modificado pois é realmente só de exemplo).
Geral: Next.js
- Back: Prisma (ORM para lidar com o banco de dados), Zod (validação de tipos/api), MongoDB (db no-sql)
- Front: Tailwindcss, shadcn/ui (lib de componentes), lucide-react (lib de icons), react-hot-toast (alertas personalizados)
Expo (React Native), @better-auth/expo, NativeWind (mesma brisa do tailwind)
Vitest (integração), Playwright (e2e)
Existem especificações ou diretrizes que regem os nosso projetos aqui e sĂŁo determinadas pelas tecnologias que usamos e os padrões de mercado impostos. É extremamente importante mantermos esses padrões, principalmente se vocĂŞ for analista ou mais novo aqui no nĂşcleo, mas tambĂ©m pra evitar redundâncias e cĂłdigo duplicado. É possĂvel entender por meio do template base esses padrões, porĂ©m tambĂ©m criamos arquivos markdown para facilitar isso, podendo ser encontrados nas pastas /web/docs ou /mobile/docs, sobre better-auth e specs de api por exemplo.
Exemplos de especificações:
- uso de Ăcones do lucide-react e fontes do next/font
- uso de alertas com toast.success/toast.error
- uso de funções utilitárias como blockForbiddenRequests, toErrorMessage, getUserFromRequest
- params sendo do tipo Promise E outras boas práticas de clean code no geral
Se você é liderança técnica, coord ou só busca ajudar a atualizar o monorepo, parabéns!!! Existem alguns passos que devem ser seguidos e alguns pensamentos de arquitetura que devemos ter em mente antes de damros merge nesse repo ou de fazer seu PR (sim, não é pra commitar na main!!!!!!). Considerações e dicas:
- Essa nova lib vai mudar os padrões de código atual? Como podemos contornar isso (docs, workshop, etc.)?
- Isso vai facilitar ou atrapalhar quem for começar um projeto novo? Qual o tamanho desse impacto?
- O quĂŁo flexĂvel Ă© essa lib/solução?
- O quão escalável é essa lib/solução?
- Essa novidade é fácil de entender?
- Por quanto tempo essa lib será mantida? Ela tem um time de suporte ativo?
- Quanto cĂłdigo duplicado isso gera?
Lembre-se de fazer bons nomes e descrições no PR, além de bons commits. Sinta-se à vontade pra juntar essas mudanças de um mesmo tema, fazer seus commits e mandar um PR?