Loading repository data…
Loading repository data…
knnv-ar / repository
<la-piscine> es una galería de arte digital que exhibe los trabajos realizados por los estudiantes que cursaron las asignaturas Artes Multimediales 1, cátedra Lacabanne, pertenecientes a la Licenciatura en Artes Multimediales del DAMyE. de la Universidad Nacional de las Artes.
<la-piscine> galería de arteTercera versión de la galería en línea de sketches de p5.js realizados por estudiantes de Artes Multimediales 1, cátedra Lacabanne — Universidad Nacional de las Artes (UNA).
| Sitio | URL |
|---|---|
| Galería (GitHub Pages) | https://knnv-ar.github.io/la-piscine/ |
| Cátedra | https://am1-lacabanne.atamvirtual.com.ar |
_projects/ hacia public/projects/ vía script de pre-build.statement.html) para compatibilidad con URLs históricas.main → deploy a GitHub Pages.| Herramienta | Versión mínima |
|---|---|
| Node.js | 24 |
| npm | 10 |
| Git | 2.x |
# 1. Clonar el repositorio
git clone https://github.com/knnv-ar/la-piscine.git
cd la-piscine
# 2. Instalar dependencias
npm install
npm run dev
El servidor de desarrollo se inicia en http://localhost:4321/la-piscine/ con recarga en vivo (HMR).
| Comando | Descripción |
|---|---|
npm run dev | Servidor de desarrollo con HMR |
npm run build | Build de producción estático (salida en dist/) |
npm run preview | Previsualización del build de producción |
npm run sync-assets | Sincroniza assets de _projects/ → public/projects/ |
Nota:
sync-assetsse ejecuta automáticamente antes dedevybuildgracias a los scriptspredevyprebuild.
la-piscine/
├── _projects/ # Obras de estudiantes (fuente de verdad)
│ └── <año>-tp<n>-<nombre>/
│ ├── statement.mdx # Frontmatter + contenido bilingüe
│ ├── sketch.js # Sketch de p5.js
│ └── thumbnail.webp # Miniatura cuadrada
├── src/
│ ├── components/ # Componentes Astro reutilizables
│ │ ├── Header.astro
│ │ ├── Footer.astro
│ │ ├── ProjectCard.astro
│ │ ├── SearchBar.astro
│ │ ├── Language.astro
│ │ └── UnderConstruction.astro
│ ├── config.ts # Configuración global (modo mantenimiento)
│ ├── content/
│ │ └── config.ts # Schema de colecciones (Zod)
│ ├── layouts/
│ │ ├── BaseLayout.astro # Layout base del sitio
│ │ └── ProjectLayout.astro # Layout de página de obra
│ ├── pages/
│ │ ├── index.astro # Página principal (ES)
│ │ ├── archivo.astro # Archivo completo (ES)
│ │ ├── acerca-de.astro # Acerca de (ES)
│ │ ├── 404.astro # Página de error
│ │ ├── search-index.json.ts
│ │ ├── projects/ # Rutas dinámicas de obras
│ │ └── en/ # Páginas en inglés
│ └── utils/
│ ├── dependencies.ts # Mapa de dependencias CDN
│ ├── selected-projects.ts
│ └── translations.ts # Diccionario i18n
├── public/
│ └── assets/ # Favicon, fotos, etc.
├── scripts/
│ ├── sync-assets.mjs # Sincronización de assets al build
│ └── rename-projects.mjs # Utilidad para renombrar carpetas
├── astro.config.mjs # Configuración de Astro
├── package.json
├── tsconfig.json
└── .github/
└── workflows/
└── deploy.yml # CI/CD: build & deploy a GitHub Pages
Crear la carpeta del proyecto dentro de _projects/ siguiendo la convención de nombres:
_projects/<año>-tp<n>-<apellido>-<nombre>/
Ejemplo: _projects/2026-tp1-garcia-maria/
Agregar sketch.js con el código de p5.js. El canvas debe vincularse al div contenedor:
function setup() {
let canvas = createCanvas(400, 400);
canvas.parent('div-sketch');
}
Agregar statement.mdx con el frontmatter y el contenido bilingüe:
---
layout: post
author: María García
title: Mi obra
date: 2026-05-15
year: 2026
cuatrimestre: primer cuatrimestre
thumbnail: thumbnail.webp
dependencies:
- p5
- p5.sound
---
Debajo del frontmatter, incluir el sketch y los bloques <Language>:
<div id="div-sketch">
<script type="text/javascript" src="sketch.js"></script>
</div>
<Language code="es">
Descripción en español...
</Language>
<Language code="en">
Description in English...
</Language>
Agregar una miniatura cuadrada (thumbnail.webp o thumbnail.png) en la carpeta del proyecto.
Verificar localmente con npm run dev y navegar al proyecto.
Las dependencias externas se declaran en el frontmatter del statement.mdx y se resuelven automáticamente desde CDN. Las disponibles están definidas en src/utils/dependencies.ts:
| Clave | Librería |
|---|---|
p5 | p5.js 1.10.0 |
p5.sound | p5.sound 1.10.0 |
p5.v150 | p5.js 1.5.0 (legacy) |
p5.v180 | p5.js 1.8.0 (legacy) |
p5.sound.v150 | p5.sound 1.5.0 (legacy) |
p5.sound.v180 | p5.sound 1.8.0 (legacy) |
ml5 | ml5.js 1.x |
face-api | face-api.js |
flexbox | Flexbox Grid |
Si no se declara ninguna dependencia
p5*, el sistema incluyep5automáticamente.
Para activar la página "En construcción", editar src/config.ts:
export const SITE_CONFIG = {
maintenanceMode: true, // Cambiar a false para publicar el sitio
};
Hacer commit, push, y el sitio mostrará automáticamente la pantalla de mantenimiento.
El deploy se gestiona automáticamente mediante GitHub Actions. El workflow (.github/workflows/deploy.yml) se activa con cada push a la rama main:
npm run build.dist/ a la rama gh-pages.No se requiere intervención manual. Para desplegar cambios, simplemente:
git add .
git commit -m "Agrega nueva obra"
git push origin main