TryCatch For Match é uma plataforma colaborativa desenvolvida para organizar projetos, conectar pessoas, gerar portfólios reais e criar um ambiente que simula o mercado de trabalho. Aqui praticamos comprometimento, disciplina e colaboração.
Mais do que apenas código, este projeto é um laboratório de aprendizado coletivo, onde evoluímos juntos tanto em habilidades técnicas quanto comportamentais — e onde quem está começando encontra espaço para aprender a contribuir em open source de verdade.
Construir uma plataforma web onde:
- membros possam criar e gerenciar projetos internos;
- as tarefas sejam divididas com base em habilidades técnicas;
- o sistema faça "match" entre tarefas e membros com perfis compatíveis;
- um histórico de colaboração seja gerado para portfólios reais.
| Camada | Tecnologias |
|---|---|
| Frontend | Next.js 16 (App Router) · React 19 · TypeScript · TailwindCSS 4 |
| Backend | API Routes do Next.js · TypeScript · Zod |
| Banco de dados | PostgreSQL · Prisma 7 (ORM) |
| Autenticação | NextAuth 4 (JWT) |
| Testes | Jest · Testing Library |
| Imagens | Cloudinary |
| E-mails | Resend · React Email |
| Ambiente | Docker + Docker Compose (opcional) |
| Qualidade | ESLint · Prettier · Husky · SonarCloud |
| Design | Figma |
| Gestão | GitHub Projects |
Nosso foco é o desenvolvimento real de habilidades: trabalho em equipe, responsabilidade e entrega. Todos os participantes são incentivados a colaborar de forma ativa e comprometida, simulando uma equipe de desenvolvimento profissional.
Leia o Guia de Contribuição — ele cobre o fluxo completo, do primeiro fork até o pull request aprovado.
🤖 Usa IA no editor? O projeto tem instruções próprias para assistentes de IA, que se adaptam ao seu nível de experiência e conversam no seu idioma. Basta abrir o projeto com a ferramenta instalada — ela encontra as instruções sozinha. Detalhes na seção de IA do guia.
🌍 Don't speak Portuguese? Read the Contributing Guide in English. You don't need to speak Portuguese to contribute.
- Node.js 24 (mesma versão do CI e da produção)
- Docker + Docker Compose — apenas se quiser rodar o banco em container
Contribuições são feitas a partir do seu próprio fork. Clique em Fork no GitHub e depois:
git clone https://github.com/SEU-USUARIO/trycatch.git
cd trycatch
git remote add upstream https://github.com/TryCatch-ForMatch/trycatch.git
⚠️ No Windows: não coloque o projeto dentro de pastas sincronizadas (OneDrive, Google Drive, Dropbox). A sincronização trava arquivos e o git falha ao trocar de branch.
npm run setup
⚠️ Não usenpm installpara configurar o ambiente. Usenpm run setup, que rodanpm cie instala exatamente o que está nopackage-lock.json. O porquê está no guia de contribuição.
O Prisma Client é gerado automaticamente pelo postinstall.
cp .env.example .envCada variável está documentada dentro do arquivo. As mínimas para subir o
projeto são DATABASE_URL, NEXTAUTH_SECRET e JWT_SECRET.
Gere os segredos com:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"🔒 O
.envnunca vai para o repositório — já está no.gitignore. Nunca compartilhe credenciais em issue, PR ou mensagem.
Você tem três opções:
Opção 1 — Banco compartilhado no Neon (peça o acesso no Discord)
Não precisa instalar nada. Configure a DATABASE_URL no .env e aplique as
migrations:
npx prisma migrate deployOpção 2 — Docker local
docker-compose up -dSobe um PostgreSQL em localhost:5555. Ajuste a DATABASE_URL e rode:
npx prisma migrate devOpção 3 — PostgreSQL instalado na máquina
Ajuste a DATABASE_URL para a porta padrão 5432 e rode npx prisma migrate dev.
💡 Use
npx prisma studiopara visualizar o banco numa interface web.
npm run devAbra http://localhost:3000.
npm test # testes
npm run lint # padrões de código
npx tsc --noEmit # checagem de tiposℹ️ O projeto tem erros de tipo já conhecidos, sendo corrigidos aos poucos. Se aparecerem erros em arquivos que você não tocou, não são seus.
O projeto usa o Cloudinary para armazenar e otimizar os avatares. A imagem é enviada para lá e só a URL fica no banco.
Para funcionar localmente:
- Crie uma conta gratuita em cloudinary.com — o plano free é suficiente.
- No painel, vá em Dashboard → API Keys e copie o Cloud name, a API Key e a API Secret.
- Preencha no seu
.env:
CLOUDINARY_CLOUD_NAME=seu_cloud_name
CLOUDINARY_API_KEY=sua_api_key
CLOUDINARY_API_SECRET=sua_api_secretPara facilitar os testes, há um script que cria um usuário administrador:
npm run seedEle cria uma conta com papel ADMIN, usando as credenciais definidas no
script scripts/createTestUser.ts.
🔴 Use apenas em banco local. Esse usuário tem senha conhecida e papel de administrador. Nunca rode este script apontando para o banco compartilhado ou para produção — confirme que sua
DATABASE_URLé local antes de executar.
O projeto tem um agente de code review integrado ao Gemini, que roda no seu terminal e gera relatórios de melhorias antes de você abrir o Pull Request.
👉 Veja como configurar sua chave gratuita e rodar npm run review na
seção correspondente do guia de contribuição.
npm run lint # verifica
npm run lint:fix # corrige o que der
npm run format # formata com PrettierO projeto usa Prisma para modelar o PostgreSQL.
- Os IDs são do tipo
CUID, adequados para sistemas distribuídos. - Os relacionamentos — usuário, projeto, habilidades, stacks, feedbacks — estão
mapeados em
prisma/schema.prisma. - As migrations são versionadas e aplicadas com
prisma migrate deploy(ambientes remotos) ouprisma migrate dev(local).
- As validações de entrada usam Zod, sempre na borda das rotas.
- As permissões são controladas por papel (
role) e centralizadas emsrc/lib/check-auth.ts. Os papéis sãoADMIN,USEReMENTOR. - A autenticação usa NextAuth com estratégia JWT.
- A documentação técnica, de produto e de processo está em
docs/.
Este projeto existe graças a todas as pessoas que contribuem. A lista completa está em CONTRIBUTORS.md.
Sinta-se à vontade para abrir uma issue ou PR. Toda ajuda é bem-vinda! 💜