Web product · September 2026 Live
intenta.cl
An HTML, CSS, JavaScript and Python playground in Spanish for teaching programming: challenges with tests, live classrooms in stages and a collaborative whiteboard.
function saludar(n) { return `Hola, ${n}`;}saludar('mundo');
What it is
A whiteboard for coding in class: students write, run and share with a link; teachers build challenges with automatic tests and follow the class’s progress live.
Python runs in the browser with WebAssembly, infinite loops stop on their own and nobody needs to create an account.
What I built
- CodeMirror 6 editor with colors taken from the site’s CSS variables
- Python with Pyodide in a dedicated Worker that restarts after 5 seconds
- A testing engine in Spanish: prueba(), esperar(), escribir(), clic()
- Live classrooms over WebSocket with a teacher dashboard and CSV export for Excel
- Challenge library, a printable guide with a QR code and a share image generated with Satori
- Real-time collaborative whiteboard: pages, images, pasted code, flowcharts and PDF
- Classrooms in stages with quick or anonymous questions, raised hands, live code and a class report
- Python with turtle and matplotlib, input() in the console and errors marked in the editor
- An installable editor that works offline, and a WCAG 2.1 AA audit with zero issues across the site
The hard parts
Infinite loops
Before running, the JS is parsed with Lezer and every for/while gets a guard on the same line: line numbers don’t change and the loop is cut off after 1.5 s.
Tests that leave no trace
The preview runs only the student’s code; a hidden iframe runs the same code plus the tests and replies via postMessage with an ID per run.
Classrooms without accounts
One Durable Object per classroom stores only the SHA-256 of the teacher’s key and deletes itself after 24 hours.
One whiteboard for the whole class
Each whiteboard is a Durable Object; the rules that validate every stroke are the same in the browser and on the server, and an end-to-end test drives it with two browsers at once.