diff --git a/.gitignore b/.gitignore index 90015d4..ebb9588 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ -# Dependencies +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies /node_modules /.pnp .pnp.* @@ -8,37 +10,37 @@ !.yarn/releases !.yarn/versions -# Testing +# testing /coverage -# Next.js build files +# next.js /.next/ -./out/ +/out/ -# Production build +# production /build -# Miscellaneous +# misc .DS_Store *.pem -# Debug logs +# debug npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# Environment files (opt-in for committing if needed) -/.env* +# env files (can opt-in for committing if needed) +.env* -# Vercel deployment settings -/.vercel +# vercel +.vercel -# TypeScript cache +# typescript *.tsbuildinfo next-env.d.ts -# Firebase configuration -/.firebase -/.firebaserc -firebase-config.js +# firebase +.firebase/ +.firebaserc +firebase-config.js \ No newline at end of file diff --git a/README.md b/README.md index e2f388a..3137ff3 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,65 @@ pyday-frontend/ - `tailwindcss@4.1`: Utility-first CSS - `framer-motion@10.16.0`: Smooth animations + +## 🚦 Feature Management + +Controla la visibilidad de funcionalidades mediante variables de entorno: + +```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 +``` + +### 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 +```javascript +// Ejemplo en src/data/cities.js +valparaiso: { + talkProposalLink: "https://..." // URL válida habilita CTA automático +} +``` + +**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 + + +**Version final del archivo .env.local:** +```env +# CONFIGURACIÓN DE FUNCIONALIDADES +# Valores permitidos: "true" (activado) | "false" (desactivado) + +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" +``` + ## 🌍 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. @@ -96,4 +155,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* +📧 *pyday@pythonchile.cl* \ No newline at end of file diff --git a/env.local.txt b/env.local.txt new file mode 100644 index 0000000..c7ef4a7 --- /dev/null +++ b/env.local.txt @@ -0,0 +1,5 @@ +#Crear un .env.local con la data necesaria. +NEXT_PUBLIC_SITE_URL= +NEXT_PUBLIC_FEATURE_REGISTRATION= +NEXT_PUBLIC_FEATURE_SPONSOR_FORM= +NEXT_PUBLIC_FEATURE_SPONSORS= \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index fc11db2..43d866c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,5 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - output: 'export', transpilePackages: ["framer-motion"], trailingSlash: true, images: { @@ -18,7 +17,7 @@ const nextConfig = { formats: ["image/webp"], deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], minimumCacheTTL: 86400, - unoptimized: true, + unoptimized: false, }, }; diff --git a/package.json b/package.json index 266498a..766bb97 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,35 @@ { - "name": "pyday2-2025", - "version": "0.1.0", + "name": "pydaydotcl", + "version": "1.0.0", + "description": "PyDay Chile 2025 - Evento anual gratuito que reúne a la comunidad Python en distintas ciudades de Chile.", "private": true, + "author": "María-Fernanda marifer.villalobos@pythonchile.cl", + "contributors": [ + "Liliana Garmendia liliana.garmendia@pythonchile.cl" + ], + "keywords": [ + "Python", + "Chile", + "PyDay", + "evento", + "comunidad", + "talleres", + "charlas", + "networking" + ], + "homepage": "https://pyday.cl", + "repository": { + "type": "git", + "url": "git+https://github.com/python-chile/PyDay" + }, + "bugs": { + "url": "https://github.com/python-chile/PyDay/issues" + }, + "license": "MIT", "scripts": { "dev": "next dev --turbopack", "build": "next build", - "export": "next output", + "export": "next export", "start": "next start", "lint": "next lint", "clean-build": "rd /s /q .next && npm run build && xcopy /E /I public\\images .next\\static\\images" diff --git a/public/images/404status_transp.svg b/public/images/404status_transp.svg new file mode 100644 index 0000000..f05d2fb --- /dev/null +++ b/public/images/404status_transp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/campus/Inacap_Copiapo.webp b/public/images/campus/Inacap_Copiapo.webp new file mode 100644 index 0000000..5b38f92 Binary files /dev/null and b/public/images/campus/Inacap_Copiapo.webp differ diff --git a/src/app/[city]/page.js b/src/app/[city]/page.js index d816b35..d2821d9 100644 --- a/src/app/[city]/page.js +++ b/src/app/[city]/page.js @@ -1,10 +1,14 @@ import Link from "next/link"; import Image from "next/image"; +import { notFound } from "next/navigation"; import TalkCard from "@/components/TalkCard"; import MapSection from "@/components/Maps"; import HeroSection from "@/components/HeroSection"; import FAQSection from "@/components/FAQSection"; import CTAFinal from "@/components/CTAFinal"; +import EmptyState from "@/components/EmptyState"; +import RegistrationForm from "@/components/RegistrationForm"; +import { FeatureGuard } from "@/components/FeatureManagement/FeatureGuard"; import cityData from "@/data/cities"; import { generalFAQs } from "@/data/faqs"; @@ -31,15 +35,7 @@ export default async function CityPage({ params }) { const data = await getCityData(params.city); if (!data) { - return ( -
La sede que buscas no está disponible.
- - Volver al inicio - -{data.introduction.description}
- +{data.introduction.participationInfo}
- -- Fecha: {data.date} -
- -- Puedes participar, sin costo. -
- -Fecha: {data.date}
+ +Puedes participar, sin costo.
- + {/* Columna de imagen */} {data.introduction.campusImage && (- Estamos finalizando el programa. ¡Vuelve pronto para ver las - charlas confirmadas! -
- - Proponer una charla - - -+ Adaptación del código de conducta de la Python Software Foundation + para la comunidad Python Chile +
++ Formada por miembros con diversas habilidades y experiencias, nos + regimos por: +
++ Respeto a todas las identidades independientemente de: +
+- Estamos preparando un programa lleno de contenido interesante para - la comunidad Python. ¡Mantente atento a las actualizaciones! -
- - Proponer una charla - - -+ 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. +
++ {event.cities.join(" • ")} +
+{event.highlights}
+{b.description}
++ {b.description} +
+
+{value.toLocaleString()} +
@@ -119,10 +124,16 @@ export default function DynamicContent() {PyDay 2024
+- {stat.value.toLocaleString()} -
-- {stat.label} -
+ {/* Efecto de fondo dinámico */} + + ++ {stat.value.toLocaleString()} +
+ + {/* Label ajustado */} ++ {stat.label} +
+2024
++
Personaliza tu participación según tus objetivos
- Estamos finalizando el programa. ¡Vuelve pronto para ver las charlas - confirmadas! -
- - Proponer una charla - - -+ {parts.map((part, i) => { + if (part.match(urlRegex)) { + return ( + + {part.replace(/(https?:\/\/)/, "")} + + ); + } + return part; + })} +
+ ); + }; + return ({subtitle}
} - + {subtitle && renderSubtitle()} + {buttonText}