Olá, bem vindo ao repositório do site da Diocodes. Aqui você encontrará o código fonte do site, bem como instruções para rodar o projeto localmente.
Este projeto tem como objetivo ser um sistema de gerenciamento de mentorias, onde é possível cadastrar mentorias, avaliações, pessoas e usuários.
Além disse serve como um repositório de estudos, onde é possível usar como exemplo as implementações realizadas aqui para a construção de um sistema completo utilizando algumas das tecnologias mais utilizadas no mercado.
Neste projeto utilizou-se as seguintes tecnologias:
- NextJS;
- ReactJS;
- TypeScript;
- Shadcn;
- Prisma;
- MongoDB;
- TailwindCSS;
- Axios;
- Zod;
- NextAuth;
- Cal.com - É o sistema utilizado para realizar os agendamentos de mentorias;
- Stripe - É o sistema utilizado para a realização de pagamentos;
- Resend.io - É o sistema utilizado para o envio de e-mails;
Todas as variáveis de ambiente utilizadas neste projeto estão no arquivo .env.example
. Para rodar o projeto localmente é necessário criar um arquivo .env
e adicionar as variáveis de ambiente necessárias.
O sistema de e-emails utilizado neste projeto utiliza o Resend.io. Para configurar o envio de e-mails é necessário criar uma conta no Resend.io e adicionar as variáveis de ambiente necessárias.
A pasta emails
contém os templates de e-mails utilizados no projeto.
Nesta pasta também é possível executar um projeto no ambiente de desenvolvimento que mostra uma preview de como os templates de e-mails ficarão.
Para rodar o projeto de e-mails basta utilizar o comando pnpm dev
na pasta emails
.
O Prisma é o ORM utilizado neste projeto. Para rodar o projeto localmente é necessário rodar o comando pnpm prisma:generate
para gerar os arquivos necessários para o Prisma.
O arquivo de seed do Prisma está na pasta prisma/seed.ts
. Para rodar o seed basta utilizar o comando pnpm prisma:seed
.
Caso queira enviar a estrutura do banco de dados para o MongoDB é necessário rodar o comando pnpm prisma:push
.
Caso queira analisar os dados com o Prisma Studio é necessário rodar o comando pnpm prisma:studio
.
Este projeto utiliza a Vercel para a realização de seu deploy.
Adicionalmente, configura-se o Dockerfile e o Github actions para uma possível subida no Google Cloud Run.
Este projeto utiliza o Atlas MongoDB para o armazenamento de seus dados.
Caso precise realizar um backup do seu banco de dados:
mongodump --uri "mongodb://mongodb0.example.com:27017" --gzip -d nomedobanco
mongorestore --uri "mongodb://mongodb0.example.com:27017" --gzip ./dump/
mongorestore --uri "mongodb://mongodb0.example.com:27017" --gzip ./dump/nomedobanco -d nomedobanco
Caso queira gerar um script para realizar o backup do banco de dados, basta utilizar o seguinte script:
mongodump --uri "mongodb://mongodb0.example.com:27017" --gzip
D=$(date '+%Y-%m-%d-%H')
zip -r $D.zip ./dump/
aws s3 cp $D.zip s3://<s3-bucket-name>/$D --profile michels
rm -rf ./dump/
rm -f $D.zip
Para a autenticação deste projeto, utiliza-se o NextAuth. Para configurar a autenticação é necessário adicionar as variáveis de ambiente necessárias.
Neste projeto estão configuradas as seguintes autenticações:
- GitHub;
- Google;
Para a realização de pagamentos, utiliza-se o Stripe.
Este sistema expõe um webhook para que quando um pagamento seja efetuado, um email seja enviado para o administrador.
Sempre que um agendamento é realizado, um webhook é enviado para o sistema que realiza a sincronização de pessoas e agendamentos.
O dashboard é a página inicial do sistema. Nela é possível visualizar as as estatísticas das mentorias, bem como um calendário com as mentorias agendadas.
Nesta página é possível visualizar todas as mentorias cadastradas no sistema.
Nesta página é possível visualizar todas as avaliações cadastradas no sistema.
Nesta página é possível visualizar todos os convites cadastrados no sistema.
Nesta página é possível visualizar todas as tags cadastradas no sistema.
Nesta página é possível visualizar todas as pessoas cadastradas no sistema.
Nesta página é possível visualizar todos os usuários cadastrados no sistema.
https://time.openstatus.dev/ https://craft.mxkaske.dev/post/fancy-multi-select https://dev.to/marcelomichels/criando-e-restaurando-backup-no-mongodb-5f41 https://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming
Para instalar basta utilizar o pnpm para instalar as dependências do projeto.
pnpm install
Para rodar o projeto localmente basta utilizar o comando pnpm dev
.
pnpm dev