Ir al contenido

🚀 Bienvenido a Web GDG Sucre

Este documento te guiará en el proceso de configuración, estructura del proyecto y mejores prácticas para contribuir a este repositorio.


El proyecto está construido con las siguientes tecnologías:

  • Bun - Gestor de paquetes rápido y eficiente.
  • Astro - Framework ligero para sitios estáticos y optimizados.
  • Tailwind CSS - Framework de CSS orientado a clases utilizarias.
  • shadcn/ui - Biblioteca de componentes UI personalizables con Tailwind.
  • Supabase - Backend como servicio para autenticación, base de datos y almacenamiento de archivos estáticos.
  • Starlight - Framework de documentación escrito en Astro.
  • Vercel - Plataforma de despliegue y hosting.

Está divida en tres capas: Frontend, Backend y Supabase.

flowchart TD
    User(["Usuario"])
    AdminUser(["Usuario admin"])

    subgraph Vercel ["Vercel"]
        subgraph Frontend ["Frontend (Astro + React + Tailwind)"]
            Landing["Landing Pages <br> /pages/eventos/*"]
            Admin["Admin <br> /admin"]
            Registro["Registro <br>/{eventSlug}/registro"]
        end

        subgraph Backend ["Backend (Astro SSR + Node.js)"]
            API_Auth["Endpoints Auth<br/>/api/auth/*"]
            API_Events["Endpoints Registro + Admin <br/>/api/register <br> /api/events"]
            Services["Services <br> /lib/services/*.ts"]
        end
    end

    subgraph SupabaseDB ["Supabase"]
        Auth["Supabase Auth<br/>Google OAuth"]
        DB[("PostgreSQL<br> Tablas y relaciones")]
        Storage[(Storage <br> Archivos estáticos)]
    end

    User -->|"Visita"| Landing
    User -->|"Accede"| Registro
    AdminUser -->|"Gestiona"| Admin

    Frontend <-->|"Fetching"| API_Events
    Frontend <-->|"Autenticación"| API_Auth

    API_Auth <-->|"OAuth "| Auth
    API_Events --- Services
    Services <-->|Query / Update| DB
    Services <-->|Query / Update| Storage

El repositorio se encuentra en GitHub y está organizado de la siguiente manera:

  • Directoriopublic/ Archivos estáticos públicos: favicon, og, etc.
  • Directoriosrc
    • Directorioassets/ Archivos estáticos internos: Tipos de letra, imágenes
    • Directoriocomponents Componentes UI
      • Directorioevents Componentes específicos para eventos
        • Directorioio-extended-25
          • Hero.astro Componente de un evento
      • Directorioui/ Componentes base shadcn/ui
      • Header.astro Componente global
    • Directoriolayout Estructura de las páginas
      • BaseLayout.astro
    • Directoriolib Código compartido por componentes, páginas y endpoints
      • Directorioservices/ Servicios para conectar a supabase
      • Directoriotemplates/ Plantillas de emails
      • Directoriovalidators/ Schemas de zod para validación de datos
    • Directoriopages Páginas y Endpoints
      • Directorioapi Endpoints
        • register.ts
      • Directorioeventos
        • devfest-25.astro Página de un evento
      • Directorioregistro
        • [eventSlug].astro Página de registro según el evento
      • index.astro Página principal
    • Directoriostyles
      • global.css Estilos globales, fuente, colores, etc.
  • .env Variables de entorno
  • .gitignore
  • README.md

Para empezar a trabajar en el proyecto, sigue estos pasos:

Ventana de terminal
git clone https://github.com/jesulim/web-gdgsucre
cd web-gdgsucre

Usamos Bun para manejar las dependencias:

Ventana de terminal
bun install

Para correr la versión en desarrollo:

Ventana de terminal
bun dev

El sitio estará disponible en http://localhost:4321 🎉

Solicita el archivo .env con las credenciales.


Cada rama se despliega automáticamente en Vercel.

  • La rama main se despliega a www.gdgsucre.com
  • Las demás ramas se despliegan a un subdominio de Vercel. Cuando subas tu Pull Request a GitHub, tendrás un comentario del bot Vercel con el link.

Si deseas contribuir al proyecto:

  1. Crea una nueva rama siguiendo las convenciones.
  2. Confirma tus cambios y sube un Pull Request (PR).
  3. Solicita la revisión y aprobación para hacer el merge a main.

No sé mucho sobre Astro, ¿puedo contribuir?
Sí, el proyecto busca que cualquier persona pueda aprender y aportar. Puedes empezar con documentación, corrección de errores o mejora del código existente.

¿Cómo puedo sugerir una nueva funcionalidad?
Contacta al equipo o crea un issue en GitHub explicando tu idea.


🎉 ¡Gracias por tu interés en contribuir en la Web del GDG Sucre! 🚀