Skip to content
 
 

Latest commit

 

History

488 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TryCatch For Match — Plataforma de Organização de Projetos Colaborativos


🌐 Idiomas / Languages: Português | English


All Contributors


🚀 Sobre o projeto

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.


🔥 Objetivo

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.

🏗️ Stack do projeto

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

❤️ Construção coletiva

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.


🙌 Como contribuir?

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.


⚙️ Como rodar localmente

🧾 1. Pré-requisitos

  • Node.js 24 (mesma versão do CI e da produção)
  • Docker + Docker Compose — apenas se quiser rodar o banco em container

📦 2. Faça o fork e clone

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.

📥 3. Instale as dependências

npm run setup

⚠️ Não use npm install para configurar o ambiente. Use npm run setup, que roda npm ci e instala exatamente o que está no package-lock.json. O porquê está no guia de contribuição.

O Prisma Client é gerado automaticamente pelo postinstall.

🔐 4. Configure o arquivo .env

cp .env.example .env

Cada 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 .env nunca vai para o repositório — já está no .gitignore. Nunca compartilhe credenciais em issue, PR ou mensagem.

🗄️ 5. Escolha como rodar o banco

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 deploy

Opção 2 — Docker local

docker-compose up -d

Sobe um PostgreSQL em localhost:5555. Ajuste a DATABASE_URL e rode:

npx prisma migrate dev

Opçã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 studio para visualizar o banco numa interface web.

▶️ 6. Inicie o servidor

npm run dev

Abra http://localhost:3000.

✅ 7. Verifique que está tudo certo

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.


📸 Upload de avatar com Cloudinary

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:

  1. Crie uma conta gratuita em cloudinary.com — o plano free é suficiente.
  2. No painel, vá em Dashboard → API Keys e copie o Cloud name, a API Key e a API Secret.
  3. Preencha no seu .env:
CLOUDINARY_CLOUD_NAME=seu_cloud_name
CLOUDINARY_API_KEY=sua_api_key
CLOUDINARY_API_SECRET=sua_api_secret

👤 Usuário admin para testes

Para facilitar os testes, há um script que cria um usuário administrador:

npm run seed

Ele 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.


🤖 Está desenvolvendo? Use o nosso Code Reviewer

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.


🧹 Lint e formatação

npm run lint        # verifica
npm run lint:fix    # corrige o que der
npm run format      # formata com Prettier

🗄️ Banco de dados

O 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) ou prisma migrate dev (local).

🧠 Outras informações

  • As validações de entrada usam Zod, sempre na borda das rotas.
  • As permissões são controladas por papel (role) e centralizadas em src/lib/check-auth.ts. Os papéis são ADMIN, USER e MENTOR.
  • A autenticação usa NextAuth com estratégia JWT.
  • A documentação técnica, de produto e de processo está em docs/.

✨ Contribuidores

Este projeto existe graças a todas as pessoas que contribuem. A lista completa está em CONTRIBUTORS.md.


📮 Contato

Sinta-se à vontade para abrir uma issue ou PR. Toda ajuda é bem-vinda! 💜

About

Plataforma colaborativa para conectar membros da nossa comunidade a projetos reais, facilitar a organização de tarefas e divulgar os portfólios individuais. Tudo isso com foco em experiência prática, visibilidade e crescimento conjunto.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages