🇺🇸 English | 🇯🇵 日本語 | 🇨🇳 简体中文 | 🇪🇸 Español | 🇧🇷 Português (Brasil) | 🇰🇷 한국어 | 🇩🇪 Deutsch | 🇫🇷 Français
Un playground de Python del lado del cliente y basado en el navegador.
Client Side Python es un playground de Python basado en el navegador e impulsado por Pyodide.
Todo el código Python se ejecuta por completo dentro de tu pestaña del navegador (WebAssembly, sin backend), por lo que tu código nunca sale de tu máquina.
Esto lo hace útil para:
- Probar rápidamente pequeños fragmentos de código Python
- Demostrar conceptos básicos de Python en una clase o taller
- Experimentar con tareas numéricas o de scripting sencillas en un entorno aislado y seguro
- Mostrar cómo WebAssembly + Pyodide pueden llevar Python “real” al navegador
-
Ejecución totalmente del lado del cliente
- Usa Pyodide para ejecutar CPython en WebAssembly.
- No requiere servidor, base de datos ni autenticación por defecto.
-
Editor de código simple + consola
- Área de texto para código Python.
- Área de consola que muestra
stdoutystderr. - Botones: Run, Stop, Clear, Load Sample, Copy Output.
-
Mecanismo de “Stop” suave
- La ejecución está envuelta en un token de cancelación suave.
- Cuando pulsas Stop, la ejecución actual se cancela lógicamente para que los resultados tardíos se ignoren en lugar de romper la interfaz.
-
Interfaz web responsive
- Construida con Expo / React Native Web y componentes de Material UI.
- El diseño se adapta a distintos tamaños de viewport (escritorio / tablet).
-
CI determinista con Docker
- Las pruebas de Jest se ejecutan dentro de un contenedor Docker usando
docker-compose.test.yml. - Se incluyen workflows de GitHub Actions para CI y pruebas basadas en Docker.
- Las pruebas de Jest se ejecutan dentro de un contenedor Docker usando
-
Despliegue automático en GitHub Pages
- Un workflow de GitHub Actions compila el bundle web de Expo y lo publica en GitHub Pages para la rama
main.
- Un workflow de GitHub Actions compila el bundle web de Expo y lo publica en GitHub Pages para la rama
En la primera carga, la aplicación:
- Obtiene Pyodide desde una CDN.
- Inicializa el runtime de Pyodide y expone
runPythonAsync. - Adjunta handlers personalizados para
stdoutystderrpara que la salida de Python se envíe en streaming a la consola integrada. - Usa un token de ejecución simple para implementar un soft Stop:
- Cada ejecución incrementa un
execIdinterno. - Si una ejecución finaliza con un
execIddesactualizado, su salida se descarta. - Esto evita que resultados obsoletos de ejecuciones anteriores contaminen la consola.
- Cada ejecución incrementa un
Todo esto sucede en el navegador, sin llamadas a ninguna API backend.
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose updocker compose -f docker-compose.test.yml up --build --exit-code-from frontend_test - Apache License 2.0
