Skip to content

Latest commit

 

History

363 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stacklyst Logo

Stacklyst

A plataforma gamificada definitiva para desenvolvedores se conectarem, competirem e evoluírem.

Next.js TypeScript Tailwind Prisma Supabase License: MIT


⚡ Conecte-se. Codifique. Conquiste.

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


📖 Documentação do Projeto

Explore as especificações detalhadas do projeto e guias de infraestrutura:


📌 Experiência do Usuário (Destaques)

🎨 Design Twitter/X OLED Black & Electric Blue

  • Interface super fluida com a identidade visual Electric Blue (#0083fe) e navegação focada em Feed, Trilhas, Notificações, Mensagens e Perfil.
  • Tema escuro nativo (OLED) para sessões de codificação noturnas saudáveis, configurável nas opções de Aparência.
  • Visual mobile minimalista com bottom navigation bar.

⚔️ Duelos de Código 1v1

  • Matchmaking dinâmico para disputas de algoritmo.
  • Editor de código integrado alimentado por CodeMirror.
  • Votação aberta para a comunidade escolher a melhor solução de forma justa.

🎮 Motor de Gamificação

  • Trilhas de XP independentes para linguagens (TypeScript, Rust, Python, Go, C++, etc.).
  • Contadores de ofensiva (Streaks) para incentivar a consistência diária.
  • Quiz Diário selecionado de uma biblioteca de questões técnicas revisadas.

🎖️ Badges Exclusivos

  • Insígnias meméticas com designs geométricos sofisticados (Hexágonos, Escudos, Anéis concêntricos) inspirados no Credly.
  • Conquistas como Sobrevivente do Segfault, Mago do TypeScript e Git Push --force.

🐳 Rodar com Docker (Recomendado)

A forma mais simples de rodar o Stacklyst em qualquer PC. Você só precisa de Docker instalado.

1. Clone o repositório

git clone https://github.com/pedrotescaro/Stacklyst.git
cd Stacklyst
git checkout develop

2. Configure o ambiente

cp .env.docker.example .env.docker

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

3. Suba os containers

# Modo desenvolvimento (com hot-reload)
docker compose up

# Modo produção (build otimizado)
docker compose -f docker-compose.prod.yml up --build -d

Abra 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"

🛠️ Primeiros Passos (Instalação Manual)

Se preferir rodar sem Docker, instale Node.js 20+ e PostgreSQL 15+ na sua máquina:

1. Instalar as dependências do projeto

npm install

2. Configurar o arquivo .env.local

Crie 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_URL ou DATABASE_URL. A secret key é server-only e também é usada pelo seed e pelo fallback REST.

3. Sincronizar o Prisma e Popular o Banco (Seed)

# 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 seed

4. Executar o Servidor Local

npm run dev

Abra seu navegador em http://localhost:3000.


🛠️ Desenvolvimento e Qualidade de Código

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

⚓ Hooks de Pré-commit (Husky + lint-staged)

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.


👥 Contas para Testes Rápidos

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 E-mail 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. ☕✨

About

A developer-first social network to share projects and ideas, master new skills through AI-powered quizzes and language paths, earn XP, and grow with the community.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages