尚未偵測到更新。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 🌑