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.
- 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.
- Frontend: Next.js + TypeScript + TailwindCSS
- Backend: API Routes do Next.js + TypeScript + Prisma
- Banco de Dados: PostgreSQL
- ORM: Prisma
- Ambiente de desenvolvimento: Docker + Docker Compose ou Neon (PostgreSQL na nuvem)
- Design: Figma
- Controle de versão: Git + GitHub
- Kanban: 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 para entender o fluxo de trabalho, boas práticas, padrões e combinados da equipe.
Confira também nosso arquivo CONTRIBUTORS.md para conhecer todos os colaboradores incríveis que ajudaram a construir este projeto. 🚀
- Node.js (versão recomendada: LTS)
- Docker + Docker Compose (caso queira rodar o banco via container)
git clone https://github.com/TryCatch-ForMatch/trycatch.git
cd trycatch
git checkout developnpm installCrie um arquivo .env na raiz do projeto com base no exemplo abaixo:
# 👉 Opção 1: Banco compartilhado (Neon - recomendado para o time)
DATABASE_URL="postgresql://neondb_owner:SUA_SENHA_AQUI@ep-autumn-surf-acr8iv80-pooler.sa-east-1.aws.neon.tech/neondb?sslmode=require&channel_binding=require"
# 👉 Opção 2: Banco rodando via Docker local
# DATABASE_URL="postgresql://trycatch_user:trycatch_pass@localhost:5555/trycatch_db"
# 👉 Opção 3: Banco rodando localmente sem Docker
# DATABASE_URL="postgresql://postgres:postgres@localhost:5432/trycatch_db"
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=um-segredo-seguro
JWT_SECRET=um-outro-segredoVocê tem 3 opções para usar o banco PostgreSQL no ambiente de desenvolvimento:
✅ Opção 1 – Usar o banco compartilhado no Neon (recomendado)
Não precisa instalar ou subir Docker. Basta configurar o .env com a URL do Neon e rodar as migrations normalmente:
npx prisma migrate deploy
npm run seed # opcional, para criar usuário admin de testes✅ Opção 2 – Usar Docker localmente
Caso prefira rodar seu próprio container PostgreSQL localmente:
docker-compose up -dIsso cria um banco PostgreSQL acessível em localhost:5555.
Depois, aplique as migrations:
npx prisma migrate dev
npm run seed✅ Opção 3 – Usar PostgreSQL local instalado na máquina
Se você já tem o PostgreSQL instalado, basta ajustar a DATABASE_URL para usar a porta padrão 5432 e rodar as migrations normalmente.
Independente da opção escolhida, aplique as migrations do Prisma para criar as tabelas:
npx prisma generate
npx prisma migrate deploy # se estiver usando Neon
# ou
npx prisma migrate dev # se estiver usando Docker/local💡 Dica: Utilize npx prisma studio para visualizar o banco de dados em uma interface web.
Este projeto utiliza o Cloudinary para armazenar e otimizar os avatares dos usuários.
O upload é feito automaticamente para o Cloudinary, e a URL da imagem é salva no banco de dados.
- Acesse https://cloudinary.com
- Clique em Sign Up Free e crie uma conta (plano gratuito já é suficiente).
- No painel do Cloudinary, vá em Dashboard → API Keys e copie:
- Cloud name
- API Key
- API Secret
No ambiente local, adicione essas variáveis no arquivo .env (que já está no .gitignore):
CLOUDINARY_CLOUD_NAME=seu_cloud_name
CLOUDINARY_API_KEY=sua_api_key
CLOUDINARY_API_SECRET=sua_api_secretnpm run devAbra o navegador em: http://localhost:3000
Para facilitar os testes da API, incluímos um script que cria um usuário administrador no banco de dados.
📥 Como rodar
Após configurar o .env corretamente e rodar as migrations do Prisma, execute:
npm run seedEsse comando executa o script que cria um usuário admin com os seguintes dados:
- Email: admin@admin.com
- Senha: teste123
- Função: ADMIN
Esse usuário pode ser usado para autenticação via API ou interface, de acordo com as permissões definidas no projeto.
Para verificar erros e manter o padrão de código:
npm run lintPara formatar automaticamente com Prettier:
npm run formatO projeto utiliza o Prisma para modelar o banco de dados PostgreSQL.
- Os IDs são do tipo
CUID, ideais para sistemas distribuídos; - Todos os relacionamentos (usuário, projeto, habilidades, stacks, feedbacks) estão devidamente mapeados;
- As migrations estão versionadas e podem ser aplicadas com
prisma migrate devouprisma migrate deploy.
- O backend utiliza validações com Zod;
- As permissões são controladas por função (
role) e centralizadas emlib/check-auth.ts; - O frontend está estruturado com autenticação via NextAuth e integração com a API.
Sinta-se à vontade para abrir uma issue ou PR. 💜
Confira nosso arquivo CONTRIBUTORS.md para conhecer todos os colaboradores incríveis que ajudaram a construir este projeto.
Este projeto segue a especificação do all-contributors. Contribuições de qualquer tipo são bem-vindas!