diff --git a/README.md b/README.md index 91ef60a..98ed5c9 100644 --- a/README.md +++ b/README.md @@ -1 +1,82 @@ -# pyschool +# PySchool + +Sitio web oficial de **PySchool**, una iniciativa educativa de [Python Chile](https://www.pythonchile.cl) para enseñar programación Python a la comunidad hispanohablante. + +## ¿Qué es PySchool? + +PySchool es un espacio de aprendizaje donde cualquier persona puede dar sus primeros pasos en Python directamente desde el navegador, sin necesidad de instalar nada. El sitio incluye un intérprete de Python interactivo potenciado por [Pyodide](https://pyodide.org/) y recursos de las ediciones anteriores del evento. + +## Tecnologías + +- **[Pelican](https://getpelican.com/)** - Generador de sitios estáticos en Python +- **Jinja2** - Motor de plantillas HTML +- **Pyodide** - Python compilado a WebAssembly para ejecutarse en el navegador +- **CSS puro** - Diseño brutalista personalizado sin frameworks externos + +## Estructura del proyecto + +``` +pyschool/ +├── content/ # Contenido estático (imágenes, etc.) +│ └── img/ # Imágenes del sitio +├── theme/ # Tema personalizado de Pelican +│ ├── templates/ # Plantillas Jinja2 +│ │ ├── base.html +│ │ ├── navbar.html +│ │ ├── welcome.html +│ │ ├── python_interpreter.html +│ │ ├── projects.html +│ │ └── footer.html +│ └── static/ +│ └── css/ +│ └── styles.css +├── pelicanconf.py # Configuración de Pelican (desarrollo) +├── publishconf.py # Configuración de Pelican (producción) +└── requirements.txt # Dependencias Python +``` + +## Instalación y uso local + +### Requisitos + +- Python 3.9+ + +### Pasos + +1. **Clonar el repositorio** + + ```bash + git clone https://github.com/python-chile/pyschool.git + cd pyschool + ``` + +2. **Crear un entorno virtual e instalar dependencias** + + ```bash + python3 -m venv .venv + source .venv/bin/activate + pip install -r requirements.txt + ``` + +3. **Levantar el servidor de desarrollo** + + ```bash + pelican --listen + ``` + + El sitio estará disponible en [http://localhost:8000](http://localhost:8000). + +4. **Reconstruir automáticamente al guardar cambios** + + ```bash + pelican --autoreload --listen + ``` + +## Comunidad + +- Sitio web: [www.pythonchile.cl](https://www.pythonchile.cl) +- Contacto: [contacto@pythonchile.com](mailto:contacto@pythonchile.com) + +## Licencia + +Este proyecto es parte de la comunidad Python Chile. Consulta el repositorio para más detalles sobre la licencia. diff --git a/theme/static/css/styles.css b/theme/static/css/styles.css index 8254141..4bbe1d6 100644 --- a/theme/static/css/styles.css +++ b/theme/static/css/styles.css @@ -340,10 +340,54 @@ section h1 { nav { padding: 1rem 2rem; + position: sticky; + top: 0; + z-index: 1000; + background-color: var(--color-white); } .nav-content { padding: 0.5rem 0; + position: relative; +} + +/* ========================================= + HAMBURGER BUTTON + ========================================= */ +.nav-hamburger { + display: none; + flex-direction: column; + justify-content: space-between; + width: 36px; + height: 26px; + background: transparent; + border: none; + cursor: pointer; + padding: 0; + z-index: 1100; +} + +.nav-hamburger span { + display: block; + width: 100%; + height: 3px; + background-color: var(--color-black); + border-radius: 2px; + transition: transform 0.25s ease, opacity 0.25s ease; + transform-origin: center; +} + +.nav-hamburger.is-active span:nth-child(1) { + transform: translateY(11.5px) rotate(45deg); +} + +.nav-hamburger.is-active span:nth-child(2) { + opacity: 0; + transform: scaleX(0); +} + +.nav-hamburger.is-active span:nth-child(3) { + transform: translateY(-11.5px) rotate(-45deg); } .logo-container { @@ -467,6 +511,43 @@ footer#contacto { ========================================= */ @media (max-width: 768px) { + /* --- Navbar móvil --- */ + .nav-hamburger { + display: flex; + } + + .nav-links { + display: none; + flex-direction: column; + position: absolute; + top: calc(100% + 0.75rem); + right: 0; + background-color: var(--color-white); + border: 2px solid var(--color-black); + border-radius: 16px; + box-shadow: 6px 6px 0 var(--color-black); + padding: 1rem; + gap: 0.75rem; + min-width: 200px; + z-index: 1000; + } + + .nav-links.nav-open { + display: flex; + } + + .nav-links li { + width: 100%; + } + + .nav-links a { + display: block; + width: 100%; + box-sizing: border-box; + text-align: center; + } + + /* --- Secciones --- */ .hero, .interpreter-section, #recursos.section { diff --git a/theme/templates/base.html b/theme/templates/base.html index 6dc3736..f65c4d0 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -1,5 +1,5 @@ - + diff --git a/theme/templates/navbar.html b/theme/templates/navbar.html index d335aff..a33720b 100644 --- a/theme/templates/navbar.html +++ b/theme/templates/navbar.html @@ -2,13 +2,40 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/theme/templates/projects.html b/theme/templates/projects.html index 8ab4213..66a41bc 100644 --- a/theme/templates/projects.html +++ b/theme/templates/projects.html @@ -4,7 +4,7 @@

Recursos de eventos anteriores

En esta sección se encuentran los enlaces directos a los - repositorios utilizados en eversiones anterioes. + repositorios utilizados en versiones anteriores.