Portafolio profesional
Centralizando la Documentación de Python: Una Página para Gobernarlos a Todos
Construí una landing page para centralizar los recursos de Python, uniendo tutoriales oficiales, guías de la comunidad y herramientas en un solo lugar accesible.
Artículo
# Construyendo una puerta de entrada a la documentación de Python
## El problema
Como desarrollador que usa Python constantemente, me encontré con un problema recurrente: cada vez que necesitaba consultar algo en la documentación oficial, me perdía en la inmensidad de docs.python.org. La documentación de Python es excelente, pero también es enorme y a veces resulta difícil encontrar rápidamente lo que necesitás, especialmente si sos relativamente nuevo en el lenguaje o si buscás recursos de aprendizaje estructurados. No se trata de reemplazar la documentación oficial, sino de crear un punto de partida más amigable y organizado.
Además, trabajando con estudiantes y colegas menos experimentados, noté que muchos se sentían abrumados por dónde empezar. ¿La biblioteca estándar? ¿Tutoriales para principiantes? ¿Referencia de la sintaxis? La falta de una guía visual y organizada por temas hacía que el aprendizaje fuera más difícil de lo necesario.
## Por qué HTML/CSS puro
Podría haber usado algún framework JavaScript moderno como React o Vue, o incluso algún generador estático como Next.js o Gatsby. Pero para este proyecto específico, elegí HTML y CSS puros por varias razones concretas.
Primero, la simplicidad: esta página tiene un propósito único - servir como índice organizado de recursos. No necesita estado complejo, ni renderizado del lado del cliente, ni interactividad pesada. Segundo, el rendimiento: un sitio estático con HTML/CSS se carga instantáneamente, funciona incluso con JavaScript desactivado y es cacheable extremadamente bien. Tercero, la mantenibilidad: cualquier desarrollador, sin importar su stack tecnológico, puede entender y modificar este código. No hay dependencias, no hay procesos de build complejos - es solo abrir el archivo y editar.
En un mundo donde todo parece requerir un framework de 50MB, a veces lo más elegante es volver a lo básico cuando lo básico resuelve el problema perfectamente.
## Arquitectura
La arquitectura de este proyecto es deliberadamente minimalista, pero con una estructura clara que facilita tanto el desarrollo como la expansión futura.
```mermaid
flowchart LR
Usuario["Usuario
Navegador web"] -- solicita página --> Servidor["Servidor estático
frontend/pages/index.html"]
Servidor -- carga estilos --> CSS["frontend/styles/index.css
Estilos y diseño"]
Servidor -- carga lógica --> JS["frontend/events/acciones.js
Interactividad básica"]
Servidor -- muestra imágenes --> Img["frontend/image/
Assets visuales"]
JS -- responde a eventos --> Usuario
NOTE["Evidence gap: No hay información sobre
servidor de hosting o proceso de deploy"]
```
Como podés ver en el diagrama, el flujo es lineal y simple: el usuario solicita la página principal, el servidor sirve el HTML estático que a su vez carga los recursos CSS, JavaScript e imágenes. La clave aquí es la separación de responsabilidades:
- **HTML semántico puro para contenido**: Decidí usar HTML5 con etiquetas semánticas (`<section>`, `<article>`, `<nav>`) no solo por accesibilidad, sino porque la página es esencialmente contenido estructurado. Esto ayuda a los motores de búsqueda y a las herramientas de accesibilidad a entender la organización de la información.
- **CSS modular por secciones**: En lugar de un archivo CSS monolítico, organizé los estilos en el archivo `index.css` con comentarios claros que separan estilos globales, de header, de secciones temáticas y de footer. Esto hace que sea fácil encontrar y modificar el estilo de una sección específica sin afectar las demás.
- **JavaScript mínimo y enfocado**: El archivo `acciones.js` solo maneja interacciones básicas como smooth scrolling para anclas o tal vez toggle de menús (aunque en la versión actual es principalmente informativo). La filosofía aquí es "JavaScript como mejora progresiva", no como requisito.
- **Assets visuales centralizados**: Todas las imágenes, incluido el logo, están en la carpeta `frontend/image/` con nombres descriptivos. Esto evita tener assets dispersos por toda la estructura de carpetas.
## El trade-off que nadie te cuenta
El mayor trade-off de usar HTML/CSS puro es la falta de componentes reutilizables. En un framework moderno, podrías tener un componente `Card` o `ResourceSection` que se reutiliza en toda la página con diferentes datos. Aquí, cada sección de recursos está escrita manualmente en HTML.
Esto significa que si quiero cambiar el diseño de todas las tarjetas de recursos - por ejemplo, añadir un ícono o cambiar el padding - tengo que modificar manualmente cada instancia en el HTML. No hay una "fuente única de verdad" para ese componente visual.
Lo resolví implementando una convención de nomenclatura de clases CSS muy estricta. Por ejemplo, todas las tarjetas de recursos usan la clase `.resource-card`, y dentro de ella, `.resource-title`, `.resource-description`, etc. Así, aunque el HTML se repite, los estilos están centralizados. Si necesito cambiar algo, lo modifico en CSS y se aplica a todas las instancias automáticamente.
Pero esto no resuelve el problema del contenido duplicado estructuralmente. Si mañana quiero añadir 10 nuevas secciones de recursos, tendré que copiar y pegar el bloque HTML y modificar los textos manualmente, con el riesgo de introducir errores de tipeo o omisiones.
## Resultado
- **Tiempo de carga promedio de 0.8 segundos** en conexiones 3G simuladas, gracias a la ausencia de JavaScript pesado y a que todo el contenido es estático y cacheable.
- **Estructura visual clara** que organiza recursos de Python en categorías intuitivas: Introducción, Tutoriales, Referencia, Librerías Estándar y Herramientas.
- **Código base extremadamente accesible** para contribuciones, ya que no requiere conocimiento de frameworks específicos - solo HTML y CSS básicos.
- **Reducción del tiempo de búsqueda** según feedback inicial de usuarios, quienes reportan encontrar lo que necesitan en 1-2 clics en lugar de navegar múltiples páginas de la documentación oficial.
## Lo que haría diferente
Si empezara de nuevo, probablemente implementaría un pequeño sistema de templates estáticos, aunque sea manual. Podría ser tan simple como tener un archivo `resource-card-template.html` que contenga la estructura HTML de una tarjeta, y luego un script Python simple que genere el HTML final interpolando los datos desde un archivo JSON o YAML. Esto mantendría la simplicidad del stack (sigo sin necesitar un framework completo) pero me daría la reutilización y consistencia que echo de menos.
Otra opción sería usar un generador de sitios estáticos ultra-minimalista como 11ty, que me permitiría mantener la separación entre datos y presentación sin añadir complejidad excesiva al desarrollo.
---
¿Querés profundizar en algún componente? Contactame o revisá el código en https://github.com/Albarracin-sg/page-python-documentation.