Skip to content

Repository files navigation

Ivochote Community Web

Portal web de la Municipalidad del Centro Poblado de Ivochote — Echarati, La Convención, Cusco, Perú.

Astro React TypeScript Tailwind CSS Node Netlify


Tabla de contenidos


Descripción

Sitio institucional estático generado con Astro (SSG + Islands Architecture). Incluye secciones de noticias, eventos, turismo, servicios y autoridades. Los datos de contenido viven en src/data/*.json, lo que permite desarrollo completamente offline sin necesidad de un backend.


Stack tecnológico

Herramienta Rol
Astro 5 Framework SSG / Islands
React 18 Componentes interactivos (Islands)
TypeScript 5 Tipado estático
Tailwind CSS 3 Sistema de estilos utilitario
PostCSS Transformaciones CSS
@astrojs/sitemap Generación de sitemap.xml
Netlify Plataforma de despliegue

Estructura del proyecto

.
├── astro.config.mjs          # Integraciones: React, Tailwind, Sitemap
├── tailwind.config.mjs       # Configuración de Tailwind CSS
├── postcss.config.cjs        # PostCSS (autoprefixer, etc.)
├── tsconfig.json             # Configuración TypeScript
├── netlify.toml              # Build y headers de seguridad para Netlify
│
├── public/                   # Estáticos servidos en / (assets, manifest, robots, favicon)
│   ├── manifest.json
│   ├── robots.txt
│   └── assets/               # Imágenes y descargas públicas
│
└── src/
    ├── config/               # Configuración interna (navegación, SEO, copys)
    │   ├── navigation.ts     # Definición de menú y rutas del sitio
    │   └── site.config.ts    # Metadatos globales (nombre, URL, SEO)
    │
    ├── pages/                # Rutas del sitio (archivo = URL)
    │   ├── index.astro
    │   ├── noticias/         # /noticias  /noticias/[slug]
    │   ├── eventos/          # /eventos   /eventos/[evento]
    │   ├── turismo/          # /turismo   /turismo/[lugar]
    │   ├── servicios/        # /servicios /servicios/[servicio]
    │   ├── autoridades/      # /autoridades /autoridades/[autoridad]
    │   ├── contacto/
    │   └── 404.astro
    │
    ├── layouts/
    │   ├── BaseLayout.astro    # Layout raíz (Head, Navbar, Footer)
    │   ├── HomeLayout.astro    # Layout para la página de inicio
    │   └── ArticleLayout.astro # Layout para páginas de detalle
    │
    ├── components/
    │   ├── authorities/        # AuthorityCard
    │   ├── events/             # EventCard
    │   ├── news/               # NewsCard, NewsSearch
    │   ├── services/           # ServiceCard
    │   ├── tourism/            # PlaceCard
    │   ├── layout/             # Navbar, Footer
    │   ├── seo/                # Head, JsonLd
    │   └── ui/                 # Button y primitivos reutilizables
    │
    ├── api/                    # Consumo de APIs (contenido mock + APIs reales)
    │   ├── contentClient.ts
    │   ├── firebaseConfig.ts
    │   └── reniecClient.ts
    │
    ├── services/               # Lógica de dominio (usa src/api)
    │   ├── newsService.ts
    │   ├── eventsService.ts
    │   ├── authoritiesService.ts
    │   ├── servicesService.ts
    │   └── tourismService.ts
    │
    ├── types/                  # Interfaces y tipos de dominio
    │   ├── news.ts
    │   ├── events.ts
    │   ├── authorities.ts
    │   ├── services.ts
    │   └── tourism.ts
    │
    ├── data/                   # Mock data JSON (desarrollo sin backend)
    │   ├── noticias.json
    │   ├── events.json
    │   ├── authorities.json
    │   ├── services.json
    │   └── turismo.json
    │
    ├── styles/
    │   ├── globals.css         # Variables CSS y reset global
    │   └── tailwind.css        # Entrypoint de Tailwind (@tailwind directives)
    │
    └── utils/
        ├── formatters.ts       # Formateo de fechas, moneda y texto
        ├── helpers.ts          # Funciones de soporte general
        └── validators.ts       # Validaciones de datos

Inicio rápido

Requisitos previos: Node.js >= 18 y npm >= 9.

# 1. Clonar el repositorio
git clone https://github.com/EzerZuniga/Ivochote-Community-Web.git
cd Ivochote-Community-Web

# 2. Instalar dependencias
npm install

# 3. Levantar servidor de desarrollo en http://localhost:4321
npm run dev

Scripts disponibles

Comando Descripción
npm run dev Servidor de desarrollo con HMR en localhost:4321
npm run build Genera la build de producción en dist/
npm run preview Previsualiza la build de producción localmente
npm run typecheck Verifica tipos con tsc --noEmit sin emitir archivos

Despliegue

El proyecto está configurado para desplegarse en Netlify vía netlify.toml:

  • Comando de build: npm run build
  • Directorio publicado: dist/
  • Node.js: 18
  • Incluye headers de seguridad (CSP, X-Frame-Options, etc.) y redirección 404 personalizada.

URL de producción: https://municipalidad-de-ivochote.netlify.app

Para otras plataformas (Vercel, Cloudflare Pages), apunta el directorio de salida a dist/.


Contribuir

  1. Haz un fork y crea una rama desde main:
    git checkout -b feature/nombre-del-cambio
  2. Implementa el cambio con commits pequeños y descriptivos.
  3. Verifica que no haya errores de tipos:
    npm run typecheck
  4. Abre un Pull Request describiendo el problema que resuelve y la solución aplicada.

Para agregar una nueva sección: crea la página en src/pages/, el tipo en src/types/, el cliente de datos en src/api/, el servicio en src/services/, los datos mock en src/data/ y registra la ruta en src/config/navigation.ts.


Licencia

Distribuido bajo los términos del archivo LICENSE.


Mantenido por @EzerZuniga.

About

Ivochote Community Web is a modern web platform built for the Centro Poblado de Ivochote, developed with Astro, React, TypeScript and TailwindCSS, focused on performance, accessibility and professional deployment.

Topics

Resources

Stars

12 stars

Watchers

9 watching

Forks

Releases

Packages

Contributors

Languages