Leer en Español | Read in English
Web moderna para informar sobre los distintos candidatos, sus posiciones políticas, propuestas, y trajectorias.
🗳️ Protocolo de Hechos: Este proyecto sigue un protocolo riguroso de hechos verificables. Cada dato es rastreable hasta fuentes primarias y se presenta con marcas de tiempo, contexto y procedimientos de verificación.
⚖️ Descargo de Responsabilidad: Esta es una plataforma de información independiente y no partidista. Nos esforzamos por la precisión y neutralidad, presentando hechos verificables de fuentes públicas. Toda la información debe ser verificada de forma independiente. No estamos afiliados a ningún partido político ni candidato.
- 🗳️ Comparación: Compara posturas de candidatos lado a lado con evidencia respaldada por fuentes
- 🧭 Brújula Política: Visualización interactiva que posiciona candidatos en los ejes económico y social
- 👤 Perfiles Detallados: Información completa de cada candidato con biografía, trayectoria y creencias
- 🔍 Filtros Dinámicos: Filtra y personaliza las comparaciones por candidatos de interés
- 📱 Diseño Responsivo: Interfaz optimizada para móviles y escritorio con tema de videojuegos de los 90s
- ♿ Accesibilidad: Construido con principios de diseño centrados en accesibilidad
Tratamos esta herramienta cívica como un videojuego de pelea. Para mantener el "Game Feel", nos adherimos a contratos estrictos de rendimiento:
- 🥊 "The Punch" (Feedback Inmediato): Respuesta <100ms. Votar se siente visceral e instantáneo.
- 🌊 "The Flow" (Ritmo Sostenido): Transiciones <1.0s. Los usuarios permanecen en la zona sin interrupciones.
- 📡 "The Reach" (Inclusión Digital): Optimizado para todo el Perú (3G/Alta Latencia). La democracia es para todos.
- Framework: React 18 con Vite + TypeScript
- Componentes UI: shadcn/ui + Tailwind CSS
- Estado: Zustand + TanStack Query
- Navegación: React Router con carga lazy
- Iconos: Lucide React + React Icons
- Tema: Estética de videojuegos de lucha de los 90s
# Clonar e instalar
git clone https://github.com/SanGoku95/presidential-punch-peru.git
cd presidential-punch-peru
npm install
# Iniciar servidor de desarrollo
npm run dev
# → http://localhost:8080npm run dev- Servidor de desarrollo con HMRnpm run build- Compilación para producciónnpm run preview- Previsualizar build de producciónnpm run lint- Análisis de código con ESLintnpm run loadtest:smoke- Prueba rápida de humo (5 usuarios, 1 min)npm run loadtest:baseline- Prueba de rendimiento base (10-50 usuarios, 5 min)
- Guía de Desarrollo - Documentación técnica completa
- Arquitectura de Componentes - Organización de componentes UI
- Sistema de Diseño - Detalles del tema gaming de los 90s
- Plan de Pruebas de Carga - Estrategia y procedimientos de pruebas de carga
¡Damos la bienvenida a contribuciones de la comunidad! Este es un proyecto de código abierto que se beneficia de perspectivas y experiencia diversas.
Inicio Rápido para Contribuidores:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-caracteristica) - Commit tus cambios (
git commit -m 'Añade nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abre un Pull Request
Pautas Importantes:
- 📋 Lee nuestra Guía de Contribución para instrucciones detalladas
- 🛡️ Sigue nuestro Código de Conducta
- 🗳️ Sigue el Protocolo de Hechos para todas las contribuciones de datos
- 📚 Todos los datos deben ser rastreables hasta fuentes primarias
- ✅ Prueba tus cambios localmente antes de enviar
Formas de Contribuir:
- 🐛 Reportar bugs o sugerir características vía Issues
- 📊 Ayudar a verificar y actualizar datos de candidatos
- 🌐 Mejorar traducciones (Español/Inglés)
- 💻 Contribuir mejoras de código
- 📖 Mejorar documentación
Construido por @SanGoku95, @ditodamaster, @Daphini-UPT, y @crafter-station/maintainers
Este proyecto está bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.
- Gracias a todos los contribuidores que han ayudado a hacer este proyecto posible
- Información de candidatos basada en fuentes públicas y verificables
- Inspirado en la necesidad de transparencia democrática en el Perú
- 🐛 Issues: GitHub Issues
- 💬 Discusiones: GitHub Discussions
Toda la información de candidatos en este proyecto proviene de fuentes verificables y públicas. Mantenemos:
- Precisión factual con atribución adecuada de fuentes
- Protocolo de hechos siguiendo estándares rigurosos de verificabilidad
- Transparencia en nuestros métodos de recolección de datos
- Actualizaciones regulares para mantener la información actualizada
Si encuentras información inexacta, por favor abre un issue de datos con fuentes apropiadas.
¿Tienes preguntas? ¡No dudes en abrir un issue o iniciar una discusión! Estamos aquí para ayudar a hacer la democracia más accesible y transparente. 🇵🇪
Capibarismo provides an interactive platform for comparing political candidates using modern visualization tools and detailed analysis. Built with React and TypeScript, it features a unique retro gaming aesthetic while delivering serious political insights.
🇵🇪 Open Source Community Project: This project is developed by volunteers committed to promoting democratic transparency in Peru through technology. All contributions are welcome!
🗳️ Facts Protocol: This project follows a secure fact protocol to verify truthfulness. Every fact can be traced back to their original source with time stamps.
⚖️ Disclaimer: This is an independent, non-partisan information platform. We strive for accuracy and neutrality, presenting verifiable facts from public sources. All information should be independently verified. We are not affiliated with any political party or candidate.
- 🔄 Candidate Comparison: Side-by-side analysis of political positions with evidence-backed sources
- 🧭 Political Compass: Interactive visualization positioning candidates on economic and social axes
- 👤 Detailed Profiles: Comprehensive candidate information including biography, trajectory, and beliefs
- 🎯 Smart Filtering: Dynamic filtering and personalized comparisons
- 📱 Responsive Design: Optimized for mobile and desktop with 90s gaming theme
- ♿ Accessibility: Built with accessibility-first design principles
We treat this civic tool like a fighting game. To maintain "Game Feel", we adhere to strict performance contracts:
- 🥊 "The Punch" (Immediate Feedback): <100ms response. Voting feels visceral and instant.
- 🌊 "The Flow" (Sustained Rhythm): <1.0s transitions. Users stay in a "voting trance" without interruption.
- 📡 "The Reach" (Digital Inclusion): Optimized for all Peru (3G/High Latency). Democracy is for all.
- Framework: React 18 + Vite + TypeScript
- UI Components: shadcn/ui + Tailwind CSS
- State Management: Zustand + TanStack Query
- Routing: React Router + Lazy Loading
- Icons: Lucide React + React Icons
- Theme: 90s Fighting Game Aesthetic
# Clone and install
git clone https://github.com/SanGoku95/presidential-punch-peru.git
cd presidential-punch-peru
npm install
# Set up environment variables (optional for basic development)
cp .env.example .env.local
# Edit .env.local with your values (see ENVIRONMENT.md for details)
# Start development server
npm run dev
# → http://localhost:8080First time setup? See ENVIRONMENT.md for detailed configuration guide.
npm run dev- Development server with HMRnpm run build- Production buildnpm run preview- Preview production buildnpm run lint- Code lintingnpm run loadtest:smoke- Quick smoke test (5 users, 1 min)npm run loadtest:baseline- Baseline performance test (10-50 users, 5 min)
Build fails or dependencies won't install:
# Clear npm cache and reinstall
rm -rf node_modules package-lock.json
npm cache clean --force
npm installEnvironment variable issues:
- See ENVIRONMENT.md for detailed setup
- Make sure
.env.localexists (copy from.env.example) - Restart dev server after changing
VITE_*variables
API routes not working:
- Check that
BLOB_READ_WRITE_TOKENis set in.env.local - API routes require Vercel Blob Storage in production
Analytics not tracking:
- PostHog requires
VITE_POSTHOG_KEYin environment - Analytics are optional and will gracefully disable if not configured
Port already in use:
# Use a different port
npm run dev -- --port 3000For more help, check existing issues or open a new one.
- Developer Guide - Comprehensive technical documentation
- Environment Setup - Environment variables configuration guide
- Component Architecture - UI component organization
- Design System - 90s gaming theme details
- Load Testing Plan - Load testing strategy and procedures
- Security Policy - Vulnerability reporting and security guidelines
- License & Attributions - Third-party licenses and acknowledgments
We welcome contributions from the community! This is an open source project that benefits from diverse perspectives and expertise.
Quick Start for Contributors:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Important Guidelines:
- 📋 Read our Contributing Guide for detailed instructions
- 🛡️ Follow our Code of Conduct
- 🗳️ Follow the Facts Protocol for all data contributions
- 📚 All data must be traceable to primary sources
- ✅ Test your changes locally before submitting
Ways to Contribute:
- 🐛 Report bugs or suggest features via Issues
- 📊 Help verify and update candidate data
- 🌐 Improve translations (Spanish/English)
- 💻 Contribute code improvements
- 📖 Enhance documentation
Built by @SanGoku95, @ditodamaster, and @crafter-station/maintainers
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Candidate information based on publicly available, verifiable sources
- Inspired by the need for democratic transparency in Peru
Questions? Don't hesitate to open an issue or start a discussion! We're here to help make democracy more accessible and transparent. 🇵🇪
Web moderna para informar sobre los distintos candidatos, sus posiciones políticas, propuestas, y trajectorias.
🗳️ Protocolo de Hechos: Este proyecto sigue un protocolo riguroso de hechos verificables. Cada dato es rastreable hasta fuentes primarias y se presenta con marcas de tiempo, contexto y procedimientos de verificación.
⚖️ Descargo de Responsabilidad: Esta es una plataforma de información independiente y no partidista. Nos esforzamos por la precisión y neutralidad, presentando hechos verificables de fuentes públicas. Toda la información debe ser verificada de forma independiente. No estamos afiliados a ningún partido político ni candidato.
- 🗳️ Comparación: Compara posturas de candidatos lado a lado con evidencia respaldada por fuentes
- 🧭 Brújula Política: Visualización interactiva que posiciona candidatos en los ejes económico y social
- 👤 Perfiles Detallados: Información completa de cada candidato con biografía, trayectoria y creencias
- 🔍 Filtros Dinámicos: Filtra y personaliza las comparaciones por candidatos de interés
- 📱 Diseño Responsivo: Interfaz optimizada para móviles y escritorio con tema de videojuegos de los 90s
- ♿ Accesibilidad: Construido con principios de diseño centrados en accesibilidad
Tratamos esta herramienta cívica como un videojuego de pelea. Para mantener el "Game Feel", nos adherimos a contratos estrictos de rendimiento:
- 🥊 "The Punch" (Feedback Inmediato): Respuesta <100ms. Votar se siente visceral e instantáneo.
- 🌊 "The Flow" (Ritmo Sostenido): Transiciones <1.0s. Los usuarios permanecen en la zona sin interrupciones.
- 📡 "The Reach" (Inclusión Digital): Optimizado para el Perú Rural (3G/Alta Latencia). La democracia es para todos.
- Framework: React 18 con Vite + TypeScript
- Componentes UI: shadcn/ui + Tailwind CSS
- Estado: Zustand + TanStack Query
- Navegación: React Router con carga lazy
- Iconos: Lucide React + React Icons
- Tema: Estética de videojuegos de lucha de los 90s
# Clonar e instalar
git clone https://github.com/SanGoku95/presidential-punch-peru.git
cd presidential-punch-peru
npm install
# Iniciar servidor de desarrollo
npm run dev
# → http://localhost:8080npm run dev- Servidor de desarrollo con HMRnpm run build- Compilación para producciónnpm run preview- Previsualizar build de producciónnpm run lint- Análisis de código con ESLintnpm run loadtest:smoke- Prueba rápida de humo (5 usuarios, 1 min)npm run loadtest:baseline- Prueba de rendimiento base (10-50 usuarios, 5 min)
- Guía de Desarrollo - Documentación técnica completa
- Arquitectura de Componentes - Organización de componentes UI
- Sistema de Diseño - Detalles del tema gaming de los 90s
- Plan de Pruebas de Carga - Estrategia y procedimientos de pruebas de carga
¡Damos la bienvenida a contribuciones de la comunidad! Este es un proyecto de código abierto que se beneficia de perspectivas y experiencia diversas.
Inicio Rápido para Contribuidores:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-caracteristica) - Commit tus cambios (
git commit -m 'Añade nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abre un Pull Request
Pautas Importantes:
- 📋 Lee nuestra Guía de Contribución para instrucciones detalladas
- 🛡️ Sigue nuestro Código de Conducta
- 🗳️ Sigue el Protocolo de Hechos para todas las contribuciones de datos
- 📚 Todos los datos deben ser rastreables hasta fuentes primarias
- ✅ Prueba tus cambios localmente antes de enviar
Formas de Contribuir:
- 🐛 Reportar bugs o sugerir características vía Issues
- 📊 Ayudar a verificar y actualizar datos de candidatos
- 🌐 Mejorar traducciones (Español/Inglés)
- 💻 Contribuir mejoras de código
- 📖 Mejorar documentación
Construido por @SanGoku95, @ditodamaster, y @crafter-station/maintainers
Este proyecto está bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.
- Gracias a todos los contribuidores que han ayudado a hacer este proyecto posible
- Información de candidatos basada en fuentes públicas y verificables
- Inspirado en la necesidad de transparencia democrática en el Perú
- 🐛 Issues: GitHub Issues
- 💬 Discusiones: GitHub Discussions
Toda la información de candidatos en este proyecto proviene de fuentes verificables y públicas. Mantenemos:
- Precisión factual con atribución adecuada de fuentes
- Protocolo de hechos siguiendo estándares rigurosos de verificabilidad
- Transparencia en nuestros métodos de recolección de datos
- Actualizaciones regulares para mantener la información actualizada
Si encuentras información inexacta, por favor abre un issue de datos con fuentes apropiadas.
¿Tienes preguntas? ¡No dudes en abrir un issue o iniciar una discusión! Estamos aquí para ayudar a hacer la democracia más accesible y transparente. 🇵🇪