尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Buscador De Resoluciones Sobre Protección De Datos Personales En Costa Rica
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗PrivataSearch es un buscador de texto completo e inteligente de resoluciones emitidas por la Agencia de Protección de Datos de los Habitantes (PRODHAB) de Costa Rica. Permite realizar búsquedas rápidas sobre el contenido de las resoluciones despersonalizadas disponibles públicamente. El proyecto opera sin conexión a base de datos: se construye sobre un índice JSON generado a partir del conjunto de resoluciones públicas, siguiendo principios de datos abiertos según la legislación costarricense.
.json. Todo ocurre en el navegador: las respuestas no se envían a ningún servidor y solo se conservan en sessionStorage si el usuario activa "mantener mi progreso" (se borran al cerrar la pestaña).Requisitos: Node.js 20 o superior (la versión que usa el despliegue). Python 3 solo si vas a correr el pipeline de limpieza del dataset.
git clone https://github.com/Euquimides/privatasearch.git
cd privatasearch
npm install
npm run dev
npm test
e2e/):
npx playwright install chromium # solo la primera vez
npm run test:e2e
El proyecto está configurado para exportar el sitio como estático y desplegarlo automáticamente en GitHub Pages usando GitHub Actions.
npm run build
npx serve out
Los archivos estáticos se generan en la carpeta out. npm run build ejecuta antes el prebuild, que regenera public/estadisticas.json.
Importante: el workflow de GitHub Actions corre
next builddirectamente, sin elprebuild, así que en producción se usa elpublic/estadisticas.jsonque esté versionado. Si cambias el dataset, correnpm run buildlocalmente y haz commit delestadisticas.jsonactualizado.
El script de limpieza solo usa la biblioteca estándar de Python:
python scripts/clean_prodhab_dataset.py
Lee y sobrescribe public/indice-resoluciones-prodhab.json con el dataset limpio, y escribe scripts/reporte_de_cambios.json con la trazabilidad de los cambios (duplicados resueltos, citas agregadas, etc.). Después regenera las estadísticas con npm run build (ver arriba).
src/
├── app/
│ ├── page.tsx — Página principal (buscador)
│ ├── layout.tsx — Layout raíz y metadatos
│ ├── globals.css — Estilos globales y animaciones
│ ├── estadisticas/page.tsx — Página de estadísticas y gráficas
│ ├── grafo/page.tsx — Grafo interactivo 3D de citas
│ ├── disclaimer/page.tsx — Descargo de responsabilidad
│ └── formularios/
│ ├── page.tsx — Índice de formularios de inscripción
│ ├── personas-fisicas/page.tsx — Formulario para personas físicas
│ ├── personas-juridicas/page.tsx — Formulario para personas jurídicas
│ └── organismos-publicos/page.tsx — Formulario para organismos públicos
├── components/
│ ├── SearchClient.tsx — Lógica de búsqueda del lado cliente
│ ├── SearchResults.tsx — Presentación de resultados
│ ├── SearchConfigPanel.tsx — Panel de filtros y configuración
│ ├── ReaderOverlay.tsx — Panel lateral de lectura y resoluciones relacionadas (MMR)
│ ├── CitationGraph.tsx — Grafo 3D de red de citas (WebGL)
│ ├── SiteHeader.tsx — Encabezado del sitio
│ ├── Tour.tsx — Tour guiado por pantalla (react-joyride)
│ ├── DarkModeToggle.tsx — Toggle de modo oscuro
│ ├── ErrorBoundary.tsx — Captura de errores en componentes
│ ├── Footer.tsx — Pie de página
│ └── formularios/
│ ├── FormWizard.tsx — Asistente por secciones: validación, progreso, importación/exportación
│ ├── FormRenderer.tsx — Renderiza los campos a partir del schema
│ └── PrivacyNotice.tsx — Aviso de privacidad del formulario
├── context/
│ └── SearchContext.tsx — Contexto de búsqueda e índice FlexSearch
├── schemas/
│ ├── form-schema.types.ts — Tipos del schema de formularios
│ ├── personas-fisicas.schema.ts — Schema del formulario de personas físicas
│ ├── personas-juridicas.schema.ts — Schema del formulario de personas jurídicas
│ ├── organismos-publicos.schema.ts — Schema del formulario de organismos públicos
│ └── shared/baseDatosSections.ts — Secciones compartidas sobre la base de datos
├── types/
│ └── three-bloom.d.ts — Tipos para efecto bloom de Three.js
└── utils/
├── semanticSimilarity.ts — Similitud coseno y algoritmo MMR (resoluciones relacionadas, usado en ReaderOverlay)
├── statisticsCalculator.ts — Cálculo de estadísticas del dataset
├── formatters.ts — Parseo de secciones legales y formato de citas
├── hooks.ts — Hooks personalizados (debounce, tema oscuro)
├── highlightText.tsx — Resaltado de términos en resultados
├── validateForm.ts — Validación de formularios contra su schema
├── coerceImportedValues.ts — Filtra el .json de progreso importado contra el schema
├── formDocumentModel.ts — Modelo común de documento para las exportaciones
├── exportToPdf.ts — Exportación a PDF (pdf-lib)
├── exportToDocx.ts — Exportación a Word (docx)
├── exportToMarkdown.ts — Exportación a Markdown
└── downloadBlob.ts — Descarga de archivos generados en el navegador
scripts/
├── generate-stats.mjs — Precomputa public/estadisticas.json en el prebuild
├── clean_prodhab_dataset.py — Pipeline de limpieza del dataset de resoluciones
└── reporte_de_cambios.json — Reporte generado por el pipeline de limpieza
public/
├── indice-resoluciones-prodhab.json — Índice de resoluciones
└── estadisticas.json — Estadísticas precomputadas (generado, no editar a mano)
Puedes abrir issues o enviar pull requests (PR) para mejorar el buscador o la interfaz. Para ello haz antes un fork, prueba los cambios respectivos (npm test y npm run test:e2e) y envía tu PR.
Este proyecto está bajo la licencia MIT.