A plataforma gamificada definitiva para desenvolvedores se conectarem, competirem e evoluírem.
O Stacklyst transforma a interação social entre programadores em uma jornada interativa de aprendizado e diversão. Compartilhe suas dúvidas técnicas, ajude a comunidade, dispute duelos de código em tempo real e desbloqueie badges que provam sua senioridade (e senso de humor).
Explore as especificações detalhadas do projeto e guias de infraestrutura:
- Guia de Contribuição: Saiba como reportar bugs, sugerir melhorias e enviar Pull Requests.
- Arquitetura do Sistema: Visão geral da organização de diretórios, escolhas técnicas e fluxo de dados.
- Modelagem de Banco de Dados: Diagramas ER, indexações de Full-Text Search e dicionário de modelos.
- Guia de Implantação e Deploy: Passo a passo detalhado para colocar a plataforma em produção via Vercel e Supabase.
|
|
|
|
A forma mais simples de rodar o Stacklyst em qualquer PC. Você só precisa de Docker instalado.
git clone https://github.com/pedrotescaro/Stacklyst.git
cd Stacklyst
git checkout developcp .env.docker.example .env.dockerEdite o .env.docker e preencha com suas credenciais do Supabase (obrigatório para login/registro). Se quiser apenas ver as páginas públicas, pode pular este passo.
# Modo desenvolvimento (com hot-reload)
docker compose up
# Modo produção (build otimizado)
docker compose -f docker-compose.prod.yml up --build -dAbra http://localhost:3000 🎉
Note
O banco PostgreSQL é criado automaticamente no Docker. No primeiro start, o container instala dependências e roda migrations — pode levar 1-2 minutos.
Tip
Para popular o banco com dados de teste (badges, quizzes, usuários), rode:
docker compose exec web sh -c "npx prisma db seed"Se preferir rodar sem Docker, instale Node.js 20+ e PostgreSQL 15+ na sua máquina:
npm installCrie um arquivo chamado .env.local na raiz (copiando do .env.example) e configure com as conexões do seu banco de dados Supabase:
DATABASE_URL="postgresql://..."
DIRECT_URL="postgresql://..."
NEXT_PUBLIC_SUPABASE_URL="https://..."
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY="sb_publishable_..."
SUPABASE_SECRET_KEY="sb_secret_..."A URL e a chave publishable habilitam o Supabase Auth, mas não substituem a conexão PostgreSQL. Registro, feed e demais dados do app exigem
DIRECT_URLouDATABASE_URL. A secret key é server-only e também é usada pelo seed e pelo fallback REST.
# Gerar o cliente Prisma
npx prisma generate
# Executar as migrations no banco
npx prisma db push
# Inserir badges, trilhas, quizzes iniciais e usuários de teste
npx prisma db seednpm run devAbra seu navegador em http://localhost:3000.
A plataforma possui ferramentas configuradas para garantir a padronização e a qualidade do código:
- Typecheck: Verifica os tipos TypeScript:
npm run typecheck
- Linter: Analisa o código com ESLint para boas práticas:
npm run lint
- Format: Formata o código automaticamente com Prettier (configuração de 2 espaços e aspas simples):
npm run format
- Testes (Vitest + Testing Library):
- Executar todos os testes uma única vez:
npm test - Executar testes no modo watch:
npm run test:watch
- Executar todos os testes uma única vez:
O Husky está configurado junto com o lint-staged para rodar verificações automáticas antes de cada commit. Quando você faz git commit, os arquivos TypeScript e JavaScript modificados serão automaticamente validados pelo ESLint (eslint --fix) e formatados pelo Prettier (prettier --write). Se houver algum erro de sintaxe ou lint impeditivo, o commit será bloqueado até que o problema seja resolvido.
O seed cria três desenvolvedores com diferentes níveis de XP e trilhas de tecnologia. A senha dessas contas é definida por você no momento do seed através da variável de ambiente SEED_DEFAULT_PASSWORD.
Important
Defina SEED_DEFAULT_PASSWORD no seu .env.local antes de rodar npx prisma db seed.
| Nome | Especialidade Principal | |
|---|---|---|
| Pedro | pedro@stacklyst.dev |
TypeScript & JavaScript |
| Ana | ana@stacklyst.dev |
Python & Django |
| Carlos | carlos@stacklyst.dev |
Rust & C++ |
Acesse /login e utilize qualquer uma das contas acima com a senha que você configurou.
Desenvolvido com carinho para a comunidade dev. ☕✨
