🏫 CodeRoom
Colaboração de código Python em tempo real na rede da escola.
Sem internet. Sem Git. Sem instalação extra para os alunos.
O que é
CodeRoom é uma extensão para VSCode que permite que professor e alunos editem o mesmo arquivo Python simultaneamente, com sincronização em tempo real via Operational Transformation (OT) — a mesma técnica usada pelo Google Docs. Diferente de soluções baseadas em polling, o OT garante que duas pessoas digitando ao mesmo tempo nunca percam o trabalho uma da outra.
Instalação
Pré-requisitos
- VSCode instalado
- Node.js 18+ instalado (necessário para rodar o servidor)
- Python instalado (para executar os arquivos .py)
Instalar a extensão
Pelo terminal:
code --install-extension coderoom-2.0.0.vsix
Pela interface:
Ctrl+Shift+X → Extensões
- Clique no
... (canto superior direito)
- Instalar do VSIX... → selecione
coderoom-2.0.0.vsix
Após instalar, o ícone do CodeRoom aparece na barra lateral esquerda (Activity Bar).
Como usar em sala de aula
Professor
Clique no ícone do CodeRoom na Activity Bar
Clique em 🏫 Abrir CodeRoom
Acesse ⚙ Professor → senha: 12345
No painel do professor:
- Escolha o IP da rede da escola (Ethernet ou Wi-Fi — evite Radmin/VPN)
- Copie o endereço e passe para os alunos (quadro, chat, etc.)
- Veja todas as sessões ativas com preview do código em tempo real
- Encerre sessões quando necessário
Para criar uma sessão:
- Clique em Criar sessão
- Defina o nome do grupo e seu nome
- Opcionalmente, clique em 📂 Abrir para carregar um arquivo
.py existente
- O arquivo é salvo automaticamente na pasta aberta no VSCode
Alunos
- Abra o CodeRoom
- Clique em Entrar em sessão
- Digite o endereço do servidor (que o professor passou)
- Clique em Buscar para ver as sessões disponíveis
- Digite seu nome e clique em Entrar
- Edite o código — as alterações aparecem para todos em tempo real
- Clique em ▶ Executar para rodar o Python na própria máquina
Funcionalidades
| Funcionalidade |
Descrição |
| ⚡ OT (Operational Transformation) |
Edição simultânea sem conflitos — cada tecla é uma operação, não o texto inteiro |
| 🔒 Painel do professor com senha |
Configurações e visão geral protegidas por senha |
| 📂 Abrir arquivo .py existente |
Carrega um arquivo do disco como conteúdo inicial da sessão |
| 💾 Salvo em disco automaticamente |
O arquivo .py é atualizado a cada edição na pasta do workspace |
| ▶ Executar Python |
Abre terminal integrado e roda o arquivo na máquina de cada aluno |
| 💬 Chat por grupo |
Comunicação dentro de cada sessão |
| 🎓 Visão do professor |
Preview do código de todos os grupos em tempo real |
| 🌐 Seletor de IP |
Escolha a interface de rede correta (evita Radmin/VPN) |
Arquitetura técnica
O CodeRoom roda dois servidores locais na máquina do professor:
| Servidor |
Porta |
Função |
| HTTP |
7890 |
Metadados: sessões, chat, membros, snapshots |
| WebSocket |
7891 |
ShareDB OT: sincronização de código em tempo real |
Como o OT funciona:
Em vez de sincronizar o texto completo a cada mudança, o CodeRoom sincroniza operações mínimas: inseriu 'a' na posição 42 ou deletou 3 caracteres a partir da posição 17. Quando dois usuários editam simultaneamente, o servidor transforma as operações para que coexistam sem conflito — exatamente como o Google Docs e o VS Code LiveShare fazem.
Histórico de versões
v2.0.0
- ⚡ Implementação de OT (Operational Transformation) via ShareDB
- 🔌 WebSocket em tempo real substitui o polling de 1,5s
- Edição simultânea sem conflitos e sem apagar o trabalho de ninguém
- Dois servidores paralelos: HTTP (metadados) + WebSocket (OT)
- Preview do código dos grupos via snapshot do ShareDB
v1.1.1
- Correção: grace period de 2s para não sobrescrever o texto do usuário enquanto digita
v1.1.0
- Ícone na Activity Bar (painel lateral) para abrir o CodeRoom sem Ctrl+Shift+P
v1.0.0
- Lançamento inicial
- Criar/entrar em sessões sem senha
- Editor colaborativo com polling
- Chat por grupo
- Painel do professor com senha
- Seletor de IP (corrige problema com Radmin/VPN)
- Abrir arquivo .py existente para a sessão
- Executar Python no terminal integrado
- Salvar arquivo em disco automaticamente
Firewall (Windows)
Se os alunos não conseguirem conectar, libere as portas no Windows Firewall da máquina do professor:
netsh advfirewall firewall add rule name="CodeRoom HTTP" dir=in action=allow protocol=TCP localport=7890
netsh advfirewall firewall add rule name="CodeRoom WS" dir=in action=allow protocol=TCP localport=7891
Licença
MIT