Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Sistema de gestión de rifas, vendedores, boletas, abonos y pagos.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @jimmyriverosOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
GestionRifas
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Aplicación web para administrar la operación de una empresa de rifas: organizaciones, rifas, vendedores, clientes, boletas, asignaciones, abonos, pagos, saldos, reportes y auditoría.Read the full README ↗
Aplicación web para administrar la operación de una empresa de rifas: organizaciones, rifas, vendedores, clientes, boletas, asignaciones, abonos, pagos, saldos, reportes y auditoría.
Estado actual: las 10 fases están completadas. La aplicación está en producción y auditada. El MVP está funcionalmente completo y endurecido desde la Fase 7: crear rifas y boletas, repartirlas entre vendedores, venderlas a clientes, cobrarlas con abonos y consultar y exportar todo eso en reportes. Los estados de pago (Sin pagar / Abonada / Pagada) y los saldos los calcula siempre la base de datos; ningún importe se suma en el navegador. Verificado con 378 pruebas de base de datos y 213 end-to-end sobre un navegador real, incluido el ciclo completo de venta desde un teléfono y una prueba de volumen con 5.000 boletas. La auditoría final (Fase 9) sometió el sistema a 47 intentos deliberados de romperlo con sesiones reales y sin privilegios especiales: ninguno consiguió leer ni escribir un dato ajeno, ni descuadrar un peso. Informe completo en
docs/AUDIT_REPORT.md; procedimiento de despliegue endocs/DEPLOYMENT.md.⚠️ Antes de operar con dinero o clientes reales hay tres controles del dueño del negocio: resolver los backups del plan Free (I-024), desactivar o rotar las cuentas demo (I-021) y confirmar la URL canónica de invitaciones en Supabase Auth (I-023). No hay trabajo técnico activo autorizado; los demás riesgos y límites están en
docs/KNOWN_ISSUES.md.
Reemplaza el control manual en papel y hojas de cálculo por un sistema con:
0021, aplicada en local y producción) y una columna «Abono» con lo ya cobrado de esa boleta
—«20», «20.000», «20000» o «Cancelado»—, que se registra como un abono real, con su historial y su
saldo (migración 0033, aplicada en local y producción).0081, solo en local): el personal genera por
rangos hasta 100.000 boletas sin vendedor, las entrega por lotes y recupera lo no vendido; cada
vendedor aparta boletas libres 30 minutos y las vende con la venta de siempre.Cada agente empieza por sus instrucciones: Codex en AGENTS.md y Claude Code en
CLAUDE.md. Después sigue el mismo núcleo: HANDOFF para el relevo operativo,
PHASE_STATUS para el estado del producto y las fuentes normativas indicadas por HANDOFF §5.
| Documento | Contenido | Cuándo leerlo |
|---|---|---|
AGENTS.md | Protocolo conciso, seguridad Git y continuidad | Codex: primero |
CLAUDE.md | Prompt histórico, reglas por fases e instrucciones propias | Claude Code: primero |
docs/HANDOFF.md | Relevo, arranque, contexto operativo y trampas | Núcleo común |
docs/PHASE_STATUS.md | Estado del producto y snapshots de cierre por fase | Núcleo común |
docs/MASTER_SPEC.md | Especificación funcional consolidada | Núcleo común |
docs/ARCHITECTURE.md | Stack, carpetas, rutas y patrones | Núcleo común |
docs/BUSINESS_RULES.md | Reglas numeradas (BR-*) | Núcleo común |
docs/DECISIONS.md | Decisiones técnicas (D-*) | Núcleo común; entradas relacionadas |
Next.js 16 (App Router) · React 19 · TypeScript 5.9 estricto · Tailwind CSS 4 · shadcn/ui · Supabase (PostgreSQL 17, Auth, RLS) · React Hook Form · Zod · date-fns · Vitest · TanStack Table y Virtual · Playwright.
Versiones exactas y su justificación en docs/ARCHITECTURE.md §2.
| Parámetro | Valor |
|---|---|
| Idioma | Español (es-CO) |
| Zona horaria | America/Bogota |
| Moneda | COP, almacenada como entero de pesos |
| Precio predeterminado de boleta | $120.000 (120000) — corregido desde $100.000 el 2026-08-15 (D-098) |
| Rebaja del vendedor | Una boleta puede venderse por debajo del precio de la rifa. La rebaja sale íntegra de la ganancia del vendedor; lo que le queda a la empresa no cambia (D-099) |
Requisitos previos: Node.js ≥ 20.19 (ver docs/DECISIONS.md D-030), npm, Git y —desde la Fase 2—
Docker Desktop para ejecutar Supabase en local.
npm install
cp .env.example .env.local # completar con las claves reales del proyecto Supabase
npm run dev
Para desarrollar conviene usar npm run dev:local, que apunta siempre a la instancia local de
Supabase. npm run dev usa lo que diga .env.local, que puede ser el proyecto real.
.env.local nunca se versiona. Variables de la aplicación: NEXT_PUBLIC_SUPABASE_URL,
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, SUPABASE_SERVICE_ROLE_KEY, NEXT_PUBLIC_SITE_URL y TZ.
El seed requiere además SEED_DEFAULT_PASSWORD. Detalle en .env.example; hoy el
prebuild no valida NEXT_PUBLIC_SITE_URL, por lo que debe revisarse manualmente (I-049).
Para tener usuarios de prueba (Owner, Admin, 2 Sellers) sobre una base de datos ya migrada:
npm run seed
Para desarrollar contra una base de datos local (necesita Docker):
npx supabase start
npm run db:reset && npm run seed:local
Comandos disponibles:
npm run dev # desarrollo (Turbopack) contra lo que diga .env.local
npm run dev:local # desarrollo contra la instancia local de Supabase
npm run build # build de producción
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run test # vitest (unitarias)
npm run test:db # 378 pruebas contra la base de datos local (crea 5.000 boletas de volumen)
npm run test:e2e # 213 pruebas end-to-end (Playwright, requiere base local RECIÉN sembrada)
npm run format:check # prettier --check
npm run verify # typecheck + lint + test + build
npm run seed # datos de desarrollo en el proyecto de .env.local
npm run seed:local # datos de desarrollo en la instancia local
npm run db:reset # reaplica todas las migraciones desde cero (local)
npm run icons # regenera TODOS los iconos desde public/icons/source/*.svg
# (cambiar el logo = soltar los SVG ahí y ejecutar esto — D-122)
npm run create-org -- --name "..." --owner-email ... --owner-name ... --owner-phone ...
# alta operativa de una organizacion y su primer Owner (docs/OPERATIONS.md)
Las fases 0 a 9 están cerradas. Cualquier fase nueva o mantenimiento requiere autorización explícita. Antes de implementar:
AGENTS.md (Codex) o CLAUDE.md (Claude Code).HANDOFF, PHASE_STATUS y el núcleo documental común.REUSE → EXTEND → CREATE (D-086).| Fase | Nombre | Estado |
|---|---|---|
| 0 | Arquitectura y planificación | ✅ Completada |
| 1 | Proyecto base y autenticación | ✅ Completada |
| 2 | Base de datos, restricciones y RLS | ✅ Completada |
| 3 | Portal Owner y Admin | ✅ Completada |
| 4 | Portal Seller y clientes | ✅ Completada |
| 5 | Pagos, abonos y saldos | ✅ Completada |
| 6 | Dashboards, reportes y UI/UX | ✅ Completada |
| 7 | Pruebas, seguridad y endurecimiento | ✅ Completada |
| 8 | Despliegue y documentación operativa | ✅ Completada |
| 9 | Auditoría final independiente | ✅ Completada |
Desplegada en Vercel (proyecto gestion-rifas) contra el proyecto Supabase real, sin un entorno de
staging separado — decisión documentada en docs/DECISIONS.md D-066. Procedimiento completo,
variables de entorno y reversión en docs/DEPLOYMENT.md; manual de operación
del día a día en docs/OPERATIONS.md; problemas frecuentes en
docs/RUNBOOK.md.
Un push a main construye y despliega automáticamente (integración de Vercel con GitHub). Las
migraciones no se aplican solas — se promueven a mano con el procedimiento de tres pasos de
DEPLOYMENT.md §2.2.
SUPABASE_SERVICE_ROLE_KEY nunca llega al navegador..env.example con valores de marcador.X-Frame-Options, X-Content-Type-Options, Referrer-Policy y Permissions-Policy.npm audit: 0 vulnerabilidades.Detalle completo en docs/SECURITY.md.
docs/DATA_MODEL.md | Tablas, restricciones, índices, triggers | Al tocar el esquema o escribir consultas |
docs/SECURITY.md | Matriz de permisos, RLS, secretos, amenazas | Al escribir RLS o Server Actions |
docs/IMPLEMENTATION_PLAN.md | Alcance por fase (0 a 9) | Solo la sección de tu fase |
docs/KNOWN_ISSUES.md | Problemas, riesgos y deuda técnica | Ante un comportamiento raro |
docs/TEST_RESULTS.md | Resultados de pruebas por fase | Al revisar qué se probó |
docs/TESTING.md | Estrategia de pruebas | Al escribir pruebas nuevas |
docs/DEPLOYMENT.md | Procedimiento de despliegue, variables de Vercel y reversión | Al desplegar o promover una migración a producción |
docs/OPERATIONS.md | Manual de operación del negocio (alta de organización, rifas, anulaciones) | Para operar la aplicación, no para programar |
docs/RUNBOOK.md | Problemas frecuentes en producción y cómo resolverlos | Ante un incidente en producción |
docs/AUDIT_REPORT.md | Snapshot de la auditoría final de Fase 9: hallazgos, evidencia e intentos adversarios | Al revisar esa auditoría histórica; para estado vigente usa HANDOFF y KNOWN_ISSUES |
docs/UX_COPY_GUIDELINES.md | Guía de UX Writing: tono, glosario y reglas de redacción de todo texto visible | Al escribir o cambiar cualquier texto de la interfaz |