尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Un simulador interactivo en dark mode para analizar escenarios hipotéticos de homicidios en México (2000-2026). Dualidad visual: Realidad histórica vs Simulación What-If查看完整 README ↗
Un simulador interactivo en dark mode para analizar escenarios hipotéticos de homicidios en México (2000-2026).
Dualidad visual: Realidad histórica vs Simulación What-If
El simulador permite responder preguntas "What-If" sobre homicidios en México:
El motor usa una lógica de cascada acumulativa:
Slot 0 (Fijo): Fox → 10,452 homicidios
Slot 1: [Presidente seleccionado]
Valor = 10,452 × Multiplicador₁
Slot 2: [Presidente seleccionado]
Valor = Valor₁ × Multiplicador₂
Slot 3: [Presidente seleccionado]
Valor = Valor₂ × Multiplicador₃
Slot 4: [Presidente seleccionado]
Valor = Valor₃ × Multiplicador₄
| Presidente | Tasa de Crecimiento | Multiplicador | Cierre Oficial |
|---|---|---|---|
| V. Fox | +1.6% | 1.016 | 10,452 |
| F. Calderón | +148.4% | 2.484 | 25,967 |
| E. Peña Nieto | +41.3% | 1.413 | 36,685 |
| AMLO | -18.9% | 0.811 | 29,741 |
| C. Sheinbaum* | -53.0% | 0.470 | 13,978 |
*Datos proyectados con base en tendencia observada hasta agosto 2026
pre-push (Husky) corre primero un escaneo Trivy fail-closed en cada push y aborta si trivy no está instalado; ver .claude/skills/trivy-scan/setup.md# Clonar repositorio
git clone https://github.com/username/mx-security-dark-sim.git
cd mx-security-dark-sim
# Instalar dependencias
pnpm install
# Iniciar servidor de desarrollo
pnpm dev
La aplicación estará disponible en http://localhost:5173/
| Script | Descripción |
|---|---|
pnpm dev | Inicia servidor de desarrollo en http://localhost:5173 |
pnpm start:dev | Inicia servidor de desarrollo y abre navegador automáticamente |
pnpm preview | Previsualiza el build de producción localmente |
| Script | Descripción |
|---|---|
pnpm build | Compila TypeScript y construye para producción |
pnpm typecheck | Verifica tipos de TypeScript sin generar archivos |
pnpm lint | Ejecuta linter de TypeScript |
pnpm validate | Ejecuta todas las validaciones (typecheck + tests + build) |
| Script | Descripción |
|---|---|
pnpm test | Ejecuta pruebas en modo watch (reinicia al cambiar archivos) |
pnpm test:run | Ejecuta pruebas una sola vez (para CI/CD) |
pnpm test:watch | Alias de pnpm test (modo watch explícito) |
pnpm test:coverage | Ejecuta pruebas y genera reporte de cobertura |
pnpm test:ui | Abre interfaz gráfica de Vitest en el navegador |
| Script | Descripción |
|---|---|
pnpm clean | Limpia build artifacts (dist/, cache de Vite) |
pnpm clean:all | Limpia todo incluyendo node_modules y pnpm store |
# Desarrollo diario
pnpm start:dev # Inicia dev server con navegador
# Antes de commit
pnpm validate # Valida typecheck + tests + build
# Testing con coverage
pnpm test:coverage # Ver cobertura de tests
pnpm test:ui # Debuggear tests visualmente
# Limpieza y reinstalación
pnpm clean:all && pnpm install # Reinstalación completa
# Verificar build de producción
pnpm build && pnpm preview # Build + preview local
src/
├── components/
│ ├── DualChart/ # Componentes de gráficas
│ │ ├── DualChart.tsx # Contenedor principal
│ │ └── ComparisonChart.tsx # Gráfica de comparación (Real vs What-If)
│ ├── SimulationControls/ # Controles de simulación
│ │ ├── SimulationControls.tsx
│ │ └── PresidentSlot.tsx # Selector individual
│ ├── MetricsPanel/ # Panel de métricas
│ │ └── MetricsPanel.tsx
│ └── DataSourceFooter/ # Footer con fuentes
│ └── DataSourceFooter.tsx
├── data/
│ ├── presidentes.data.ts # Datos de presidentes
│ ├── historico.data.ts # Datos históricos reales
│ └── types.ts # TypeScript interfaces
├── engine/
│ ├── SimulationEngine.ts # Motor de simulación
│ └── SimulationEngine.test.ts
├── store/
│ └── useSimulationStore.ts # Zustand store (estado global)
├── hooks/
│ └── useChartColors.ts # Hook de colores dark mode
└── App.tsx # Componente principal
# Tests unitarios
pnpm test:run
# Tests con coverage
pnpm test:coverage
# Tests en modo watch
pnpm test
Coverage Gate (enforced in vite.config.ts — pnpm test:coverage fails below these):
src/engine/** (lógica de negocio pura, ej. SimulationEngine): 100% statements / functions / linesLos umbrales globales se fijaron unos puntos por debajo del baseline medido (90.36% stmts / 80.71% branches / 89.62% funcs / 92.59% lines al 2026-07-18) para dejar margen sin volverse aspiracionales. src/engine/ lleva un umbral más alto que el resto por ser lógica de negocio pura sin dependencias de UI — ya está en 100% hoy y debe mantenerse así.
#121212#1E1E1E#E0E0E0#EF4444#10B981#3B82F6Los datos provienen de fuentes oficiales:
Nota sobre Proyecciones: Los datos de la administración de Claudia Sheinbaum (2024-2030) están proyectados con base en la tendencia de reducción del -53% observada hasta agosto de 2026 (SESNSP). Estos valores son estimaciones sujetas a cambios.
# Build
pnpm build
# El contenido de dist/ es servido como sitio estático
Railway detecta automáticamente el proyecto Vite y lo despliega.
Compatible con: Vercel, Netlify, GitHub Pages, Cloudflare Pages
main tiene branch protection: un PR no es mergeable si lint, test, typecheck, lock-check, license-check o trivy-fs fallan en CI (.github/workflows/ci.yml). enforce_admins está deliberadamente en false — el owner del repo puede saltarse el gate en un push/merge directo si hace falta, en vez de quedar bloqueado igual que cualquier otro colaborador.
git checkout -b feature/amazing-feature)pnpm test:run)pnpm typecheck)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Este proyecto está disponible bajo la licencia MIT. Ver LICENSE para más detalles.
Hecho con ❤️ y datos oficiales | Dark Mode 🌑