Official website for the AWS User Groups community. A modern, responsive platform built to connect AWS enthusiasts, share knowledge, and promote upcoming events and community activities.
Live Site: awsusergroups.com
- ✅ Modern and responsive design
- ✅ Event calendar and upcoming meetups
- ✅ AWS Community Day information
- ✅ Photo gallery from past events
- ✅ Partner and sponsor showcases
- ✅ FAQ section
- ✅ Community involvement opportunities
- ✅ Modular component architecture
- ✅ TypeScript/JavaScript support
- ✅ Optimized performance with Vite
| Technology | Description |
|---|---|
| React 19 | Modern UI framework |
| TypeScript/JavaScript | Static typing support |
| Tailwind CSS v4 | Utility-first CSS framework |
| Vite | Next generation build tool |
| Lucide React | Beautiful icon library |
# Clone the repository
git clone https://github.com/CanadianCloud/awsusergroups.github.io.git
# Navigate to project directory
cd awsusergroups.github.io
# Install dependencies
npm install# Start development server (opens at http://localhost:5173)
npm run dev
# Build for production
npm run build
# Preview production build locally (opens at http://localhost:4173)
npm run preview
# Run linter
npm run lint| Command | Purpose | When to Use |
|---|---|---|
npm run dev |
Hot-reloading development server | Active development, sees changes instantly |
npm run preview |
Test production build locally | Before deployment, verify build works correctly |
npm run deploy |
Deploy to production | When ready to publish to awsusergroups.com |
⚠️ Important: Never opendist/index.htmldirectly in a browser! The built files use absolute paths and won't work with thefile://protocol. Always usenpm run previewto test production builds locally.
This project is configured to deploy automatically to GitHub Pages using the gh-pages package.
The deployment process uses an isolated gh-pages branch that contains only the built production files, keeping your source code separate in the main branch.
# Deploy to GitHub Pages (one command does it all)
npm run deployThis command will:
- ✅ Compile TypeScript files
- ✅ Build the production bundle (creates
dist/folder) - ✅ Copy the CNAME file for custom domain
- ✅ Push the
dist/folder to thegh-pagesbranch - ✅ Your site goes live automatically at awsusergroups.com
| Branch | Purpose |
|---|---|
main |
Source code (development) |
draft |
Backup branch |
gh-pages |
Production build (auto-generated, do not edit manually) |
If this is a fresh clone, make sure GitHub Pages is configured:
- Go to your repository settings on GitHub
- Navigate to Pages section
- Set source to
gh-pagesbranch - Set folder to
/(root) - Save changes
The site will be available at your custom domain or https://username.github.io/repository-name/
Problem: "Local website is working bad" or blank page after opening dist/index.html
Solution:
- ❌ DON'T: Open
dist/index.htmldirectly in browser (double-click) - ✅ DO: Use
npm run previewto test the production build - ✅ DO: Use
npm run devfor development
Why? Production builds use absolute paths (
/assets/...) that only work with a proper server, not thefile://protocol.
- Clear browser cache (
Ctrl+Shift+RorCmd+Shift+R) - Check GitHub Actions completed successfully
- Verify
gh-pagesbranch has latest build - Wait 1-2 minutes for CDN propagation
If npm run dev fails because port 5173 is in use:
# Kill the process using the port (macOS/Linux)
lsof -ti:5173 | xargs kill -9
# Or use a different port
npm run dev -- --port 3000src/
├── components/
│ ├── layout/
│ │ ├── Header.jsx # Main navigation with scroll spy
│ │ └── Footer.jsx # Footer component
│ ├── sections/
│ │ ├── HeroBanner.jsx # Hero banner with CTA buttons
│ │ ├── DiscoverSection.jsx# AWS User Groups world map section
│ │ ├── FeaturedUserGroup.jsx # Featured user group showcase
│ │ ├── BuildGenie.jsx # Build Genie section
│ │ ├── FAQs.jsx # FAQ section (Leaders Insights)
│ │ ├── Resources.jsx # Resources for Leaders section
│ │ ├── InstagramFeed.jsx # Instagram feed
│ │ └── Testimonials.jsx # Testimonials
│ └── shared/
│ ├── AnimatedButton.jsx # Reusable animated button
│ ├── ScrollingBanner.jsx# Scrolling banner with keywords
│ ├── SectionHeading.jsx # Section heading component
│ ├── ScrollToTop.jsx # Scroll to top button
│ ├── WorldMap.jsx # Interactive world map
│ └── index.js # Shared component exports
├── assets/ # Images and media files
├── data/
│ └── userGroups.json # User groups data for map
├── App.jsx # Main app component
├── main.jsx # App entry point
└── index.css # Global styles with Tailwind
scripts/
├── scrapeUserGroups.cjs # Scrapes user groups from AWS
├── enhanceUserGroups.cjs # Enhances data with geocoding
├── manual-corrections.json # Manual data corrections
├── geocode-cache.json # Forward geocoding cache
├── reverse-geocode-cache.json # Reverse geocoding cache
└── url-search-cache.json # URL search cache
| Nav Link | Section ID | Component |
|---|---|---|
| Home | #hero |
HeroBanner.jsx |
| AWS User Groups | #user-groups |
DiscoverSection.jsx |
| Featured AWS UG | #featured |
FeaturedUserGroup.jsx |
| Build Genie | #build |
BuildGenie.jsx |
| Leaders Insights | #insights |
FAQs.jsx |
| Resources for Leaders | #resources |
Resources.jsx |
The interactive world map is powered by a data pipeline that scrapes, geocodes, and enhances AWS User Groups data.
| Script | Purpose | Usage |
|---|---|---|
scrapeUserGroups.cjs |
Scrapes user groups from builder.aws.com, geocodes locations | node scripts/scrapeUserGroups.cjs |
enhanceUserGroups.cjs |
Adds countries via reverse geocoding, finds missing URLs | node scripts/enhanceUserGroups.cjs |
| File | Purpose |
|---|---|
src/data/userGroups.json |
Main data file with user groups |
scripts/manual-corrections.json |
Manual URL overrides, city corrections, exclusions |
scripts/geocode-cache.json |
Cache for forward geocoding (city → coordinates) |
scripts/reverse-geocode-cache.json |
Cache for reverse geocoding (coordinates → country) |
scripts/url-search-cache.json |
Cache for Meetup URL searches |
# 1. Full scrape from AWS (takes ~15-20 minutes)
node scripts/scrapeUserGroups.cjs
# 2. Enhance existing data (add countries, find URLs)
node scripts/enhanceUserGroups.cjsEdit scripts/manual-corrections.json to:
- urlOverrides: Add known URLs for groups
- cityCorrections: Fix city/country names
- excludeGroups: Remove invalid/duplicate groups
This project is maintained by our amazing volunteers:
- Daniela Perez - Community Organizer & Developer
- Xaca Rana - Developer & Project Lead
We welcome contributions! If you'd like to help improve the website:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available for the AWS community.
For questions or suggestions, reach out through:
- Our community meetups
- GitHub issues
- Visit awsusergroups.com
Sitio web oficial para la comunidad de AWS User Groups. Una plataforma moderna y responsiva construida para conectar entusiastas de AWS, compartir conocimiento y promover eventos y actividades comunitarias.
Sitio en vivo: awsusergroups.com
- ✅ Diseño moderno y responsivo
- ✅ Calendario de eventos y próximos meetups
- ✅ Información de AWS Community Day
- ✅ Galería de fotos de eventos pasados
- ✅ Exhibición de partners y sponsors
- ✅ Sección de preguntas frecuentes
- ✅ Oportunidades de participación comunitaria
- ✅ Arquitectura modular de componentes
- ✅ Soporte para TypeScript/JavaScript
- ✅ Rendimiento optimizado con Vite
| Tecnología | Descripción |
|---|---|
| React 19 | Framework moderno de UI |
| TypeScript/JavaScript | Soporte de tipado estático |
| Tailwind CSS v4 | Framework CSS utility-first |
| Vite | Build tool de próxima generación |
| Lucide React | Librería de iconos |
# Clonar el repositorio
git clone https://github.com/CanadianCloud/awsusergroups.github.io.git
# Navegar al directorio del proyecto
cd awsusergroups.github.io
# Instalar dependencias
npm install# Iniciar servidor de desarrollo
npm run dev
# Compilar para producción
npm run build
# Previsualizar build de producción
npm run preview
# Ejecutar linter
npm run lintEste proyecto está configurado para desplegarse automáticamente en GitHub Pages usando el paquete gh-pages.
El proceso de despliegue utiliza una rama aislada gh-pages que contiene solo los archivos de producción compilados, manteniendo tu código fuente separado en la rama main.
# Desplegar a GitHub Pages (un solo comando lo hace todo)
npm run deployEste comando hará:
- ✅ Compilar archivos TypeScript
- ✅ Construir el bundle de producción (crea la carpeta
dist/) - ✅ Copiar el archivo CNAME para el dominio personalizado
- ✅ Enviar la carpeta
dist/a la ramagh-pages - ✅ Tu sitio se publica automáticamente en awsusergroups.com
| Rama | Propósito |
|---|---|
main |
Código fuente (desarrollo) |
draft |
Rama de respaldo |
gh-pages |
Build de producción (auto-generado, no editar manualmente) |
Si es un clon nuevo, asegúrate de que GitHub Pages esté configurado:
- Ve a la configuración de tu repositorio en GitHub
- Navega a la sección Pages
- Establece la fuente como rama
gh-pages - Establece la carpeta como
/(root) - Guarda los cambios
El sitio estará disponible en tu dominio personalizado o https://username.github.io/nombre-repositorio/
src/
├── components/
│ ├── layout/
│ │ ├── Header.jsx # Navegación principal
│ │ ├── Footer.jsx # Componente pie de página
│ │ └── Footer.tsx # Componente pie de página (TypeScript)
│ ├── sections/
│ │ ├── Hero.jsx # Banner principal
│ │ ├── Features.jsx # Contenido destacado
│ │ ├── FAQs.jsx # Preguntas frecuentes
│ │ ├── InstagramFeed.jsx # Feed de Instagram
│ │ ├── Resources.jsx # Sección de recursos
│ │ ├── Testimonials.jsx # Testimonios
│ │ └── index.ts # Exports de secciones
│ └── shared/
│ ├── AnimatedButton.jsx # Componente de botón reutilizable
│ ├── ScrollingBanner.jsx# Banner con scroll
│ ├── SectionHeading.jsx # Encabezado de sección
│ └── index.js # Exports compartidos
├── assets/ # Imágenes y archivos multimedia
├── App.jsx # Componente principal
├── main.jsx # Punto de entrada
└── index.css # Estilos globales con Tailwind
Este proyecto es mantenido por nuestros increíbles voluntarios:
- Daniela Perez - Organizadora de Comunidad & Desarrolladora
- Xaca Rana - Desarrollador & Líder del Proyecto
¡Damos la bienvenida a contribuciones! Si te gustaría ayudar a mejorar el sitio web:
- Haz fork del repositorio
- Crea tu rama de feature (
git checkout -b feature/CaracteristicaIncreible) - Haz commit de tus cambios (
git commit -m 'Agregar CaracteristicaIncreible') - Haz push a la rama (
git push origin feature/CaracteristicaIncreible) - Abre un Pull Request
Este proyecto es de código abierto y está disponible para la comunidad AWS.
Para preguntas o sugerencias, contáctanos a través de:
- Nuestros meetups comunitarios
- GitHub issues
- Visita awsusergroups.com
Made with ❤️ by the AWS User Groups Community