No description
- TypeScript 97.7%
- Dockerfile 0.9%
- JavaScript 0.8%
- CSS 0.4%
- HTML 0.2%
| .claude | ||
| backend | ||
| clickhouse | ||
| docs | ||
| mobile | ||
| postgres | ||
| shared | ||
| web | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Rumder
App de citas con matching por compatibilidad IA, perfiles enriquecidos (video + voz), audio rooms en vivo y toolkit de safety. Mejor que Tinder, Bumble y Hinge porque pone el énfasis donde ellos no: conexión real antes que swipe ciego, y seguridad antes que volumen.
Estado actual: desarrollo local. La rama no se publica a GitHub hasta validación completa.
Stack
| Capa | Tecnología |
|---|---|
| Web | React 18 + Vite + TypeScript |
| Mobile | React Native + Expo SDK 50 |
| Backend | Node 20 + Fastify + TypeScript |
| BD relacional | PostgreSQL 16 + pgvector + PostGIS |
| Cache / colas | Redis 7 + BullMQ |
| Storage | MinIO (S3-compatible, self-hosted) |
| Analytics | ClickHouse |
| Realtime | Socket.io (chat) + LiveKit (audio/video) |
| ORM | Prisma |
| Auth | Google + Apple OAuth + email/código OTP, sobre JWT ES256 |
Detalles en CLAUDE.md y diagramas en docs/architecture.md.
Estructura
rumder/
├── backend/ # API Fastify + workers BullMQ
├── web/ # SPA React + Vite
├── mobile/ # App React Native + Expo
├── shared/ # tipos TS compartidos
├── docs/ # arquitectura, runbooks
├── design/ # mockups Pencil (.pen)
└── docker-compose.yml
Quickstart
# 1. Configurar entorno
cp .env.example .env # edita SMTP (envío de códigos), OPENAI, etc.
# 2. Levantar infraestructura (Postgres, Redis, MinIO, ClickHouse, LiveKit)
npm run dev:infra
# 3. Instalar dependencias (en workspaces)
# --legacy-peer-deps: el workspace mobile (LiveKit RN) tiene un peer conflict que no
# afecta a backend/web. Mobile se construye aparte con EAS.
npm install --legacy-peer-deps
# 4. Generar claves JWT locales (una sola vez)
cd backend && npm run gen:keys && cd ..
# 5. Migraciones de BD
# Primera vez (entorno no interactivo): aplica la migración baseline.
cd backend && npm run prisma:generate && npx prisma migrate deploy && cd ..
# Para crear nuevas migraciones en desarrollo (terminal interactiva): npm run prisma:migrate
# 6. Backend + Web (en terminales separadas)
npm run dev:backend
npm run dev:web
# 7. Mobile (opcional)
npm run dev:mobile
Acceso:
- Web: http://localhost:5173
- API: http://localhost:3000
- MinIO console: http://localhost:9001
- ClickHouse: http://localhost:8123/play
Monetización
Controlada por la variable SUBSCRIPTION_MODE:
free: todos los usuarios ven Premium completo, sin paywall. Modo de lanzamiento.subscription: se activa Stripe (web) + IAP (mobile) y el paywall global.
Cambio sin redeploy: edita la variable en Coolify + restart del backend.
Tabla Free vs Premium completa en CLAUDE.md.
Despliegue
Coolify self-hosted sobre VPS. Detalles y checklist en CLAUDE.md → sección Despliegue en Coolify.
Resumen:
- 2 apps Coolify:
rumder-backend,rumder-web(mismo repo, Base Directory distinto). - 5 servicios: PostgreSQL, Redis, MinIO, ClickHouse, LiveKit.
- Solo
rumder-web,rumder-backendylivekitcon dominio público. - Mobile fuera de Coolify (EAS build → stores).