Skip to content

About

Um simulador interativo de entrevistas técnicas focado em identificar e depurar erros comuns de programação durante etapas de *Live Coding* de frontend. Desenvolvido com Next.js, TypeScript e Zustand.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🐛 Live Coding Bug Quiz · Technical Simulator

Next.js TypeScript Zustand Tests CI

Um simulador interativo de Code Review e testes técnicos focado na identificação e depuração de erros clássicos (bugs) em aplicações React e Next.js. O projeto foi arquitetado sob os princípios de Clean Architecture e projetado para treinar engenheiros de software para etapas de Live Coding de processos seletivos.

🔗 Demonstração em Tempo Real / Live Demo

👉 Acesse o simulador no ar: Live Coding Bug Quiz

🚀 Como Executar o Projeto Localmente

Siga os passos abaixo para clonar e rodar o simulador em sua máquina de desenvolvimento:

  1. Clone o repositório:
git clone https://github.com/franferrazdev/live-coding-bug-quiz.git
cd live-coding-bug-quiz
  1. Instale as dependências:
pnpm install
  1. Inicie o servidor de desenvolvimento:
pnpm dev

Abra http://localhost:3000 no seu navegador para ver o resultado.

  1. Execução de Testes:
  • Testes Unitários (Jest): pnpm test ou pnpm test:watch
  • Testes End-to-End (Playwright): npx playwright test

📸 Demonstração Visual / Visual Presentation

1. Tela Inicial (Regras e Ambientação) / Welcome Screen

Apresentação das diretrizes do simulado: quantidade de questões, imutabilidade e o funcionamento do botão de pular.

Tela Inicial do Simulador Técnico

2. Interface do Quiz (Simulador de IDEs) / Quiz Environment

Componentização mobile-first estruturada em tons de ardósia e estilo VS Code (Night Owl), rodando com cronômetro atômico e estados via Zustand.

Interface de Jogo Ativo

3. Tela Final (Diagnóstico de Performance) / Final Evaluation Analytics

Mapeamento de acertos e diagnóstico de senioridade baseado no aproveitamento total do candidato.

Resultado Final


🛠️ Tecnologias e Arquitetura do Sistema

  • Framework & Linguagem: Next.js 14 (App Router) + React 18.3 + TypeScript 5
  • Gerenciamento de Estado: Zustand v5 (Máquina de estados atômica controlando o progresso e o timer)
  • Estilização & Componentes: Tailwind CSS v3 + Base UI React + Shadcn Core + Lucide Icons
  • Esteira de Testes: Jest (Unitários) + React Testing Library (Integração) + Playwright (End-to-End)

🛑 Regras de Negócio e Requisitos de Governança (RN)

1. Curva de Dificuldade Balanceada Crescente

O simulado gerencia estritamente 15 questões estruturadas, divididas igualmente e distribuídas obrigatoriamente em uma ordem cronológica crescente de aprendizado:

  • Questões 01 a 05: Nível Fácil (Foco em desenvolvedores Júnior).
  • Questões 06 a 10: Nível Médio (Foco em desenvolvedores Pleno).
  • Questões 11 a 15: Nível Difícil (Foco em desenvolvedores Sênior).

2. Randomização Isolada por Bloco

A cada nova inicialização ou reinício do simulado, o Zustand executa um algoritmo de embaralhação (shuffle) isolado estritamente dentro das fronteiras de cada nível de senioridade. As perguntas mudam de sequência de forma dinâmica, mas a curva crescente de aprendizado nunca é quebrada.

3. Imutabilidade de Resposta e Fluxo Procedural

  • Trava de Clique: Assim que o usuário seleciona uma alternativa, o estado é congelado imediatamente (RN-01), impossibilitando cliques adicionais ou alterações de escolha.
  • Feedback & Explicação: A interface sinaliza o veredito visual (Verde para correto / Vermelho para incorreto) e injeta na tela o painel de explicação técnica analítica detalhando o motivo do bug.
  • Gestão de Pulos: O botão "Pular Questão" fica disponível apenas enquanto a pergunta atual não for respondida. Questões puladas avançam o estado imediatamente e não contabilizam pontos, sem gerar penalidades.

🧠 O Que Aprendi com Este Projeto

A construção deste simulador trouxe aprendizados profundos de arquitetura e confiabilidade de código:

  • Gerenciamento Avançado de Estados Dinâmicos: A modelagem da máquina de estados com o Zustand v5 permitiu criar um fluxo de execução linear rígido (curva de aprendizado crescente), lidando de forma reativa com travas de clique assíncronas e temporizadores sem sofrer com re-renderizações desnecessárias.
  • Estratégias Avançadas de Testes Automatizados: Unificar testes de integração usando React Testing Library com fluxos completos de reprodução de bugs com Playwright E2E expandiu significamente minha visão sobre como blindar interfaces comerciais contra quebras visuais regressivas.
  • Estruturação de Regras de Negócio Isoladas: Implementar algoritmos de embaralhamento (shuffling) aplicados exclusivamente dentro de bloco de senioridade isolados consolidou práticas sólidas de programação funcional no ecossistema React.

🤝 Contribuições são Bem-Vindas!

Contribuições fazem a comunidade open source um lugar incrível para aprender, inspirar e criar. Qualquer contribuição que você fizer será muito valorizada.

  1. Faça um Fork do projeto.
  2. Crie uma branch para sua Feature (git checkout -b feature/name-feature-branch).
  3. Faça o commit de suas alterações (git commit -m "feat: add...").
  4. Envia para a branch remota (git push origin feature/name-feature-branch).
  5. Abra um Pull Request.

🐛 Live Coding Bug Quiz · English Version

A high-performance interactive tech-test simulator designed to train and evaluate software engineers' capabilities in identifying and fixing common programming errors (bugs) during real-time Live Coding interviews.

🔗 Demonstração em Tempo Real / Live Demo

👉 Acesse o simulador no ar: Live Coding Bug Quiz

🚀 How to Run Locally

Follow these steps to clone and run the technical simulator on your local workspace:

  1. Clone the repository:

    git clone https://github.com/franferrazdev/live-coding-bug-quiz.git
    cd live-coding-bug-quiz
  2. Install dependencies:

    pnpm install
  3. Run the development environment:

    pnpm dev

    Open http://localhost:3000 inside your browser.

  4. Executing Tests:

    • Unit Tests (Jest): pnpm test
    • End-to-End Tests (Playwright): npx playwright test

📸 Visual Presentation

1. Welcome Screen (Rules & Onboarding)

Welcome Screen

2. Quiz Environment (IDE Simulator)

Quiz Play Screen

3. Final Evaluation Analytics (Seniority Diagnosis)

Game Over Screen


🛠️ Tech Stack and Architecture

  • Core Engine: Next.js 14 (App Router) + React 18.3 + TypeScript 5
  • State Management: Zustand v5 (Decoupled Global State Store)
  • Styling & Components: Tailwind CSS v3 + Base UI + Shadcn Core
  • Test Suite: Jest + React Testing Library + Playwright E2E

🛑 Critical Business Rules and Requirements Implemented

  1. Progressive Curve Balance: The simulator runs exactly 15 structured questions, sequentially distributed across balanced difficulty layers: Questions 1-5 (Junior), 6-10 (Mid/Pleno), and 11-15 (Senior).
  2. Isolated Block Shuffling: Whenever a new quiz session triggers, the Zustand store runs an isolated random shuffle algorithms strictly inside each difficulty tier boundaries. The question sequence changes dynamically while maintaining the architectural learning curve stable.
  3. Answer Immutability Lock: Once an alternative is chosen, the engine blocks additional selection events (RN-01). The interface color states immediately compute success (Green) or failure (Red), rendering a detailed code-review block explaining the bug's root cause.

🧠 What I Learned

Building this environment provided meaningful engineering insights:

  • Dynamic State Architectures: Modeling structural constraints with Zustand v5 streamlined handling async component locks and atomic interval timers without triggering unexpected UI lagging or layout updates.
  • Comprehensive Verification Strategies: Intertwining React Testing Library with multi-browser validation via Playwright enhanced my technical awareness for isolating real-world edge case bug patterns.
  • Functional Boundary Implementation: Writing tailored shuffling routines isolated inside algorithmic seniority structures strengthened my logical mastery of core functional programming paradigms.

🤝 Contributions are Welcome!

Contributions make the open-source community an amazing place to learn, inspire, and create. Any contribution you make is greatly appreciated.

  1. Fork the Project.
  2. Create your Feature Branch (git checkout -b feature/name-feature-branch).
  3. Commit your Changes (git commit -m 'feat: add...').
  4. Push to the Branch (git push origin feature/name-feature-branch).
  5. Open a Pull Request.

About

Um simulador interativo de entrevistas técnicas focado em identificar e depurar erros comuns de programação durante etapas de *Live Coding* de frontend. Desenvolvido com Next.js, TypeScript e Zustand.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages