Skip to content

polijrorg/projetos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Template base de Front (web/mobile) e Back

Sumário

  1. Introdução
  2. Setup e InĂ­cio de Projeto
  3. Tecnologias Usadas
  4. Specs e Padrões de Projeto
  5. Atualizando o monorepo

Introdução

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

Setup e InĂ­cio de Projeto

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 install

InĂ­cio de projeto

O 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).

Tecnologias Usadas

Web

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)

Mobile

Expo (React Native), @better-auth/expo, NativeWind (mesma brisa do tailwind)

Tests

Vitest (integração), Playwright (e2e)

Specs e Padrões de Projeto

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

Atualizando o monorepo

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?

Sobre PRs

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?

About

đź‘€

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages