diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ab82e52..174cece 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,21 +1,46 @@ -name: CI +name: Deploy PyDay -on: [push] +on: + push: + branches: + - main jobs: - deploy-prod: - if: github.ref == 'refs/heads/main' - runs-on: [ubuntu-latest] + deploy: + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: Push to server - uses: appleboy/ssh-action@v1.0.3 + - name: Checkout codigo + uses: actions/checkout@v4 + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Instalacion dependencies & build + run: | + npm ci + npm run build + + - name: Copia archivos hacia droplet + uses: appleboy/scp-action@v1 + with: + host: ${{ secrets.PYDAY_SERVER }} + username: ${{ secrets.PYDAY_USER }} + password: ${{ secrets.PYDAY_PASS }} + port: ${{ secrets.PYDAY_PORT }} + source: ".next/,public,next.config.js,package.json,package-lock.json" + target: "/home/pyday" + + - name: Iniciar app con PM2 en el servidor + uses: appleboy/ssh-action@v1 with: host: ${{ secrets.PYDAY_SERVER }} username: ${{ secrets.PYDAY_USER }} password: ${{ secrets.PYDAY_PASS }} port: ${{ secrets.PYDAY_PORT }} script: | - pwd - ls -l - sh deploy.sh + cd /home/pyday + npm install --omit=dev + pm2 delete pyday || true + pm2 start npm --name "pyday" -- start diff --git a/README.md b/README.md index 3137ff3..642fdf6 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,32 @@  -**The official frontend for PyDay Chile** - A community-driven Python conference showcasing Chile's tech talent through talks, workshops, and networking events across multiple cities. +**The official frontend for PyDay Chile** – a community-driven Python conference showcasing Chile’s tech talent through talks, workshops, and networking events across multiple cities. ## ✨ Key Features ### 📍 Multi-City Experience -- Dynamic content routing for different conference locations -- Interactive map showing participating cities -- City-specific schedules and venue information +- Dynamic content routing for different conference locations +- Interactive map showing participating cities +- City-specific schedules and venue details ### 📸 Multimedia Hub -- Responsive image gallery with lazy loading -- Full-screen modal viewer with keyboard navigation -- Organized historical content by year/location -- Embedded video section with responsive players +- Responsive image gallery with lazy loading +- Full-screen modal viewer with keyboard navigation +- Organized historical content by year and location +- Embedded video section with responsive players ### 🚀 Modern Web Practices -- Next.js 13+ App Router implementation -- Optimized WebP image delivery -- Responsive UI with Tailwind CSS -- Accessibility-first components (ARIA labels, keyboard nav) +- Next.js 13+ App Router implementation +- Optimized WebP image delivery +- Responsive UI built with Tailwind CSS +- Accessibility-first components (ARIA labels, keyboard navigation) ### 🎤 Event Features -- Speaker profiles with social links -- Interactive schedule with filtering -- Sponsor showcase with tiered visibility -- Registration form with validation +- Speaker profiles with social links +- Interactive schedule with filtering +- Sponsor showcase with tiered visibility +- Registration form with client-side validation ## 🛠 Tech Stack @@ -64,89 +64,85 @@ pyday-frontend/ └── tailwind.config.js # Custom design system ``` - ## 🖼 Image Optimization -| Feature | Implementation | Benefit | -|------------------------|------------------------------|----------------------------------| -| **Modern Formats** | WebP conversion | 30% smaller than JPEG | -| **Responsive SrcSet** | Next.js Image component | Device-appropriate sizes | -| **Lazy Loading** | Intersection Observer API | Faster initial load | -| **Blur Placeholders** | Dynamic SVG generation | Smooth loading experience | +| Feature | Implementation | Benefit | +|-----------------------|-----------------------------|-------------------------------| +| **Modern Formats** | WebP conversion | 30% smaller than JPEG | +| **Responsive SrcSet** | Next.js Image component | Device-appropriate sizes | +| **Lazy Loading** | Intersection Observer API | Faster initial load | +| **Blur Placeholders** | Dynamic SVG generation | Smooth loading experience | ## ♿ Accessibility Commitment -- WCAG 2.1 AA compliant components -- Semantic HTML structure -- Keyboard-navigable interfaces -- Reduced motion preferences support -- ARIA labels for interactive elements +- WCAG 2.1 AA-compliant components +- Semantic HTML structure +- Keyboard-navigable interfaces +- Reduced-motion preference support +- ARIA labels for interactive elements ## 📌 Core Dependencies -- `next@15.3.1`: React framework for production -- `tailwindcss@4.1`: Utility-first CSS -- `framer-motion@10.16.0`: Smooth animations - +- `next@15.3.1`: React framework for production +- `tailwindcss@4.1`: Utility-first CSS +- `framer-motion@10.16.0`: Smooth animations ## 🚦 Feature Management -Controla la visibilidad de funcionalidades mediante variables de entorno: +Control feature visibility via environment variables: ```env # .env.local -NEXT_PUBLIC_FEATURE_REGISTRATION="false" # Formulario de registro general -NEXT_PUBLIC_FEATURE_SPONSORS="true" # Sección completa de patrocinios -NEXT_PUBLIC_FEATURE_SPONSOR_FORM="false" # Formulario de patrocinio específico +NEXT_PUBLIC_FEATURE_REGISTRATION="false" # Main registration form +NEXT_PUBLIC_FEATURE_SPONSORS="true" # Full sponsors section +NEXT_PUBLIC_FEATURE_SPONSOR_FORM="false" # Individual sponsor inquiry form ``` -### Variables Disponibles -| Variable | Descripción | Valores Válidos | -|-----------------------------------|----------------------------------------------|-----------------| -| `NEXT_PUBLIC_FEATURE_REGISTRATION` | Habilita formulario de registro principal | `true`/`false` | -| `NEXT_PUBLIC_FEATURE_SPONSORS` | Muestra sección completa de patrocinios | `true`/`false` | -| `NEXT_PUBLIC_FEATURE_SPONSOR_FORM` | Activa formulario de contacto para patrocinios | `true`/`false` | - -### Flujo de Trabajo Recomendado -1. **Configurar variables** en `.env.local` (usar `true`/`false`) -2. **Reiniciar servidor** después de cambios -3. **Los CTAs alternativos** se mostrarán automáticamente cuando: - - Una funcionalidad está deshabilitada (`false`) - - Existe un link externo configurado en `cityData.js` - -### Para Links Externos +### Available Variables + +| Variable | Description | Valid Values | +|-----------------------------------|--------------------------------------------|---------------| +| `NEXT_PUBLIC_FEATURE_REGISTRATION` | Enables main registration form | `true`/`false` | +| `NEXT_PUBLIC_FEATURE_SPONSORS` | Shows full sponsors section | `true`/`false` | +| `NEXT_PUBLIC_FEATURE_SPONSOR_FORM` | Activates sponsor inquiry form | `true`/`false` | + +### Recommended Workflow + +1. **Set variables** in `.env.local` using `true`/`false`. +2. **Restart the server** after any changes. +3. **Alternate CTAs** automatically display when: + - A feature is disabled (`false`) + - An external link is provided in `cityData.js` + +### External Link Configuration + ```javascript -// Ejemplo en src/data/cities.js +// Example in src/data/cities.js valparaiso: { - talkProposalLink: "https://..." // URL válida habilita CTA automático + talkProposalLink: "https://..." // Valid URL enables automatic CTA } ``` -**Nota:** Los botones alternativos (CTAs) se muestran solo cuando: -- La variable correspondiente está en `false` -- Existe un link configurado en los datos de la ciudad - -**Cambios realizados:** -1. Sección dedicada a gestión de features -2. Tabla clara de variables -3. Explicación del comportamiento automático -4. Ejemplo práctico de configuración -5. Guía visual para no técnicos +> **Note:** Alternate CTAs appear only when the related feature flag is `false` and a link is configured for that city. +## 🚀 Deployment & Production Setup -**Version final del archivo .env.local:** -```env -# CONFIGURACIÓN DE FUNCIONALIDADES -# Valores permitidos: "true" (activado) | "false" (desactivado) +**Critical Server Configuration:** +For production deployments, follow our [Server Setup Guide](https://docs.google.com/document/d/1NhOyS6ZJwRjL3KeWlyErYBjFYZ47dyMugsyuKcyhJQ0/edit?tab=t.8508vrmeaeq) covering: +- Node.js environment requirements +- PM2 process management +- GitHub Actions integration +- Mandatory environment variables +- Image optimization pipeline -NEXT_PUBLIC_FEATURE_REGISTRATION="false" -NEXT_PUBLIC_FEATURE_SPONSORS="true" -NEXT_PUBLIC_FEATURE_SPONSOR_FORM="false" - -# URL BASE DEL SITIO (no modificar en desarrollo) -NEXT_PUBLIC_SITE_URL="http://localhost:3000" -``` +**Minimum Requirements:** +- Node.js v20+ +- 2GB RAM minimum +- HTTPS configuration +> 📌 **Admin Note:** The `output: 'export' config is prohibited** - breaks dynamic routes and middleware. +> Always use standard Next.js build (`npm run build` + `npm start`). +> ## 🌍 Contributing We welcome community contributions! Please see our [Contribution Guidelines](docs/CONTRIBUTING.md) and review our [Photography Style Guide](docs/guia-fotografia.md) for asset submissions. @@ -155,4 +151,4 @@ We welcome community contributions! Please see our [Contribution Guidelines](doc **License**: Apache 2.0 (See [LICENSE](LICENSE)) **Maintainer**: PyDay Chile Tech Committee -📧 *pyday@pythonchile.cl* \ No newline at end of file +📧 pyday@pythonchile.cl diff --git a/next.config.mjs b/next.config.mjs index 43d866c..fc11db2 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,5 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + output: 'export', transpilePackages: ["framer-motion"], trailingSlash: true, images: { @@ -17,7 +18,7 @@ const nextConfig = { formats: ["image/webp"], deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], minimumCacheTTL: 86400, - unoptimized: false, + unoptimized: true, }, }; diff --git a/out/404.html b/out/404.html index 6431633..cb00f0a 100644 --- a/out/404.html +++ b/out/404.html @@ -1 +1 @@ -
(Este código de conducta es una adaptación del código de conducta de la Python Software Foundation.)
La comunidad Python Chile está formada por miembros que poseen diversas habilidades, personalidades y experiencias. A través de estas diferencias nuestra comunidad experimenta grandes éxitos y un crecimiento continuo. Este Código de Conducta tiene como objetivo mantener un buen ambiente en la comunidad, además de propiciar el crecimiento y éxitos en ella.
Los miembros de la comunidad de Python Chile son considerados, respetuososy tienen buena disposición. Los comportamientos que refuerzan estos valores y que contribuyen a un entorno positivo incluyen:
Todos los integrantes de la comunidad tienen derecho a que se respete su identidad. Nuestra comunidad busca generar experiencias positivas para todos, independientemente de su edad, identidad y expresión de género, orientación sexual, discapacidad, apariencia física, tamaño corporal, etnia, nacionalidad, raza o religión, educación o estatus socioeconómico e ideología política.
Ejemplos de comportamiento inaceptable por parte de los participantes incluyen:
Se espera que los miembros de la comunidad a los que se les solicite detener cualquier comportamiento inapropiado lo hagan inmediatamente.
Si un participante tiene un comportamiento que viola este código de conducta, el equipo del Código de conducta de la comunidad de Python Chile tomará una acción que considere apropiada, incluida la advertencia al delincuente o la expulsión de la comunidad y los eventos comunitarios sin reembolso de las entradas del evento.
Los pasos que el equipo seguirá en caso de un reporte serán:
Gracias por ayudar a que esta sea una comunidad acogedora y amigable para todos.
Para contactar al comité encargado del Código de Conducta en caso de un incumplimiento, preguntas, o comentarios en general, puedes escribirnos un email a coc@pythonchile.cl. La interacción por correo electrónico nunca será publicada, y se mantendrá sólo entre la persona que escribe y el comité.

20 de Junio, 2025
Universidad de Atacama
Cargando mapa...
Av. Copayapu 485, Copiapó, Chile
Estamos finalizando el programa. ¡Vuelve pronto para ver las charlas confirmadas!
Proponer una charlaNo es necesario para asistir. Tenemos charlas y talleres para todos los niveles, desde principiantes hasta avanzados.
Sí, para los talleres prácticos recomendamos traer tu laptop con Python instalado. Enviaremos instrucciones detalladas por correo a los participantes inscritos.
El PyDay es gratuito, pero requerimos registro previo para organizar mejor el espacio y los materiales.
Aprende, comparte y conecta con desarrolladores y entusiastas de Python de toda la región y de Chile.
Registrarme ahora
El evento anual gratuito para la comunidad Python en Chile
Estamos preparando un programa lleno de contenido interesante para la comunidad Python. ¡Mantente atento a las actualizaciones!
Proponer una charlaPyDay Chile es un evento anual gratuito y emocionante que se celebra en diversas locaciones del país durante un día, con el objetivo de promover y fomentar el lenguaje de programación Python. Impulsado por la comunidad de Python en Chile, entusiastas, desarrolladores, empresas, científicos e investigadores académicos se reúnen en universidades e institutos y organizan distintas actividades, como charlas inspiradoras, talleres prácticos y hackatones, éste día es para colaborar y disfrutar de un ambiente lleno de entusiasmo.
Conecta tu marca con la comunidad Python de Chile y contribuye al crecimiento de la tecnología en nuestro país. Existen diferentes niveles de patrocinio adaptados a tus necesidades.
































11 de junio de 2024
27 de junio de 2024
15 de junio de 2023
12 de junio de 2023
16 de junio de 2023
17 de junio de 2023
15 de julio de 2022
6 de octubre de 2020
Revive los momentos más destacados de las ediciones anteriores de PyDay Chile. Desde su fundación, este evento ha sido punto de encuentro para la comunidad Python en Chile.

Copiapó • Valparaíso
En la edición 2024 de PyDay Chile, la comunidad organizó con éxito un evento en Copiapó en conjunto con Inacap. Con actividades presenciales y participación online, el PyDay Copiapó 2024 reforzó el compromiso de Python Chile de expandir el alcance del lenguaje a más regiones del país.

Valparaíso • Puerto Montt • Santiago
PyDay 2023 introdujo por primera vez una Hackatón en Santiago con más de 100 participantes, enfocada en IA generativa. Las charlas sobre ciencia de datos y desarrollo web fueron las más populares, y se estableció una mesa redonda sobre la comunidad Python en Chile.

Valparaíso • La Serena
La primera edición presencial después de la pandemia reunió a entusiastas de Python de todo el país. Se celebraron talleres prácticos de Django, Data Science y automatización. El networking post-evento estableció colaboraciones entre empresas y desarrolladores.

Online
La primera edición nacional de PyDay Chile, realizada de manera online debido a la pandemia, fue el inicio de un sueño hecho realidad para la comunidad. Transmitido en YouTube, con participación activa en Discord y la presencia de speakers nacionales e internacionales, este evento marcó un hito para Python Chile, consolidándose como un espacio de encuentro, aprendizaje y colaboración para entusiastas de Python en el país.

6 de Junio, 2025
DUOC UC, Sede San Joaquín
Cargando mapa...
Av. Vicuña Mackenna 4917, San Joaquín, Chile
Estamos finalizando el programa. ¡Vuelve pronto para ver las charlas confirmadas!
Proponer una charlaNo es necesario para asistir. Tenemos charlas y talleres para todos los niveles, desde principiantes hasta avanzados.
Sí, para los talleres prácticos recomendamos traer tu laptop con Python instalado. Enviaremos instrucciones detalladas por correo a los participantes inscritos.
El PyDay es gratuito, pero requerimos registro previo para organizar mejor el espacio y los materiales.
Aprende, comparte y conecta con desarrolladores y entusiastas de Python de toda la región y de Chile.
Registrarme ahoraConecta tu marca con la comunidad Python líder en Latinoamérica
Python Chile es una organización sin fines de lucro dedicada a impulsar el crecimiento y la cohesión de la comunidad Python en Chile. Mediante eventos, talleres y conferencias, fomentamos el intercambio de conocimientos y la creación de redes entre entusiastas y profesionales del lenguaje Python en todo el país, sin distinciones de ninguna clase. Al convertirse en patrocinador anual de Python Chile para 2025, su organización no solo contribuye activamente al desarrollo de la comunidad tecnológica en Chile, sino que también reforzará su imagen como líder en innovación y compromiso social.¡Sé parte de la revolución Python 2025!
Logo de su organización en la página oficial de Python Chile durante todo 2025.
Logo y agradecimientos en transmisiones y posibilidad de participar en PyDay y PyCon Chile 2025, y meetups mensuales.
Logo en pendones, folletos, videos y espacio para video promocional de 20 segundos.
Charla técnica, stands promocionales y participación en actividades temáticas.
Acceso prioritario a colaboraciones con universidades y apoyo técnico para hackatones o workshops.
Nuestra comunidad en números
11,500+
2,700+
youtube
1,800+
Redes Sociales
5,000+
2,200+
meetup
3,500
Vistas en vivo
100
Asistentes presenciales
Locales e internacionales
Ponentes expertos
Personaliza tu participación según tus objetivos
Para garantizar la inclusión de tu logo en todos los materiales impresos, recomendamos confirmar el patrocinio al menos 30 días antes del evento. Sin embargo, aceptamos patrocinadores hasta 2 semanas antes del evento.
¡Absolutamente! Estamos abiertos a discutir opciones personalizadas para satisfacer las necesidades específicas de tu empresa. Selecciona la opción 'Otro (personalizado)' en el formulario de contacto.
Los paquetes de patrocinio estándar cubren visibilidad en todas las sedes de PyDay Chile. Si estás interesado en patrocinar una sede específica, podemos discutir opciones a medida.
Una vez confirmado el patrocinio, emitiremos una factura con los detalles para realizar la transferencia bancaria. Requerimos el pago completo antes del evento para garantizar la inclusión en los materiales promocionales.
Explora todas las charlas programadas para los eventos de PyDay Chile 2025. Desde principiantes hasta expertos, tenemos contenido para todos los niveles y áreas de interés.
Estamos finalizando el programa. ¡Vuelve pronto para ver las charlas confirmadas!
Proponer una charla
13 de Junio, 2025, 10:00 AM - 17:00 PM
Casa Central, Universidad Técnica Federico Santa María
Únete a la cuarta edición de este emocionante evento en la Casa Central de la Universidad Técnica Federico Santa María. Disfruta de talleres interactivos y charlas inspiradoras en un ambiente creativo y colaborativo. PyDay Valparaíso 2025 es tu oportunidad para conectar con otros entusiastas, expandir conocimientos y explorar las posibilidades de este poderoso lenguaje de programación.
Participar te permitirá: adquirir nuevas habilidades, conectar con la comunidad tecnológica y descubrir cómo Python puede transformar tu futuro. ¡No te lo pierdas!
Fecha: 13 de Junio, 2025, 10:00 AM - 17:00 PM
Puedes participar, sin costo.

Cargando mapa...
Avenida España 1680, Valparaíso, Chile
Estamos finalizando el programa. ¡Vuelve pronto para ver las charlas confirmadas!
Proponer una charlaNo es necesario para asistir. Tenemos charlas y talleres para todos los niveles, desde principiantes hasta avanzados.
Sí, para los talleres prácticos recomendamos traer tu laptop con Python instalado. Enviaremos instrucciones detalladas por correo a los participantes inscritos.
El PyDay es gratuito, pero requerimos registro previo para organizar mejor el espacio y los materiales.
Aprende, comparte y conecta con desarrolladores y entusiastas de Python de toda la región y de Chile.
Registrarme ahora