Usuarios totales
Nuevos (30d)
Proyectos
En Trial
evaluando
Pagos
suscripción activa
Individual
Pro
Team

Nuevos usuarios (14 días)

Distribución de planes

Proyectos por mes (6 meses)

MRR estimado por plan

Todos los usuarios

UsuarioPlanCicloEstadoProyectosRentCastRegistroAcciones

Todos los proyectos

Proyecto Propietario Estado Almacenamiento Creado
Usuarios activos
Proyectos (30d)
Nuevos usuarios (7d)

Resumen por plan

PlanUsuariosPrecio/mesMRR estimado

Tickets recientes

UsuarioAsuntoEstadoFecha
🏠

RentCast

Property Data
Developer (Free)
Este mes
30 días
Total
50
Límite/mes
Última llamada: —
Datos de propiedades: valor estimado, rentas comparables, historial de ventas. Se usa en el wizard de proyectos. Caché activo para evitar llamadas repetidas.
/v1/properties $0.20/req extra IP-restricted
🗺️

Google Maps Platform

Mapping & Geocoding
Activo
Este mes
30 días
Total
$200
Crédito/mes
Última llamada: —
Mapas interactivos, autocompletado de direcciones, Street View y geolocalización. Usado en wizard de proyectos y vista de propiedad.
Maps JS API Places API Street View Static
📧

Resend

Transactional Email
Activo
Este mes
30 días
Total
3K
Límite/mes
Última llamada: —
Emails transaccionales: verificación, recuperación de contraseña, invitaciones, notificaciones de facturación.
DKIM/SPF/DMARC flipcalcpro.com
💳

Stripe

Payments
Configurado
Este mes
30 días
Total
Última llamada: —
Procesamiento de pagos y suscripciones. Maneja planes Individual, Pro y Team con ciclos mensuales y anuales.
Subscriptions Webhooks Customer Portal
1

Registro de Nuevo Usuario

Creado: Jun 14, 2025
Actualizado: Jun 14, 2025
UI
Frontend — El usuario completa el formulario de registro (nombre, email, contraseña) en index.html
BE
POST /api/auth/register — Valida campos, verifica que el email no exista, hashea la contraseña con bcrypt
DB
INSERT users — Crea registro en tabla users con plan_id = 1 (Free) e is_active = true
Resend — Envía email de bienvenida/verificación desde noreply@flipcalcpro.com
BE
Respuesta — Devuelve JWT token + datos del usuario. El frontend redirige al dashboard
2

Inicio de Sesión (Login)

Creado: Jun 14, 2025
Actualizado: Jun 14, 2025
UI
Frontend — El usuario ingresa email y contraseña en el formulario de login de index.html
BE
POST /api/auth/login — Rate limit: 5 intentos/15min. Busca usuario por email, verifica bcrypt hash
DB
SELECT users — Verifica is_active y obtiene datos del plan via JOIN con subscriptions y plans
BE
JWT firmado — Genera token con {id, email, plan_id}, expira en 7 días
UI
Frontend — Guarda token en localStorage, redirige a dashboard.html
3

Recuperación de Contraseña

Creado: Jun 14, 2025
Actualizado: Jun 14, 2025
UI
Frontend — Usuario ingresa su email en el formulario de recuperación
BE
POST /api/auth/forgot-password — Genera token único y fecha de expiración (1 hora)
DB
UPDATE users — Guarda password_reset_token y password_reset_expires
Resend — Envía email con link de reset desde noreply@flipcalcpro.com
BE
POST /api/auth/reset-password — Valida token, hashea nueva contraseña, limpia campos de reset
4

Creación de Proyecto (Fix & Flip)

Creado: Jun 14, 2025
Actualizado: Jun 25, 2025
UI
Wizard 3 pasos — El usuario ingresa dirección (Google Places autocomplete), nombre del proyecto y estrategia (Fix & Flip, BRRRR, Wholesale)
API
Google Places API — Autocompletado de dirección en tiempo real mientras el usuario escribe
BE
POST /api/projects — Verifica límite de proyectos del plan, valida datos, crea el proyecto
DB
INSERT projects — Guarda proyecto con owner_id, dirección, nombre, estrategia y status = 'analyzing'
UI
Frontend — Redirige a project.html?id=X y dispara automáticamente consulta a RentCast
5

Datos del Proyecto

Creado: Jun 14, 2025
Actualizado: Jun 25, 2025
UI
data.html — Muestra ficha completa de la propiedad con campos inline-editables
API
Google Maps Embed + Street View — Vista de mapa y Street View side-by-side de la propiedad
DB
SELECT projects + property_cache — Carga datos guardados del proyecto y caché de propiedad sin llamar a RentCast
BE
PATCH /api/projects/:id — El usuario puede editar cualquier campo directamente en la UI; se guarda en tiempo real
6

Análisis — Consulta RentCast

Creado: Jun 20, 2025
Actualizado: Jun 25, 2025
UI
project.html — Al abrir un proyecto, el sistema verifica si hay datos en caché antes de llamar a la API
DB
SELECT property_cache — Busca por address + city + state. Si hay hit, devuelve datos cacheados sin consumir cuota
API
GET /api/property-lookup/lookup → RentCast /v1/properties — Solo si no hay caché
DB
INSERT property_cache — Guarda respuesta completa con TTL de 30 días
UI
project.html — Actualiza ARV estimado, specs y features en la interfaz

Dominio

RegistradorNamecheap
DNSActivo
DKIM / SPF / DMARCConfigurado
Costo~$1.25/mes

Hospedaje

ProveedorDigitalOcean
TipoDroplet (VPS)
OSUbuntu 22.04 LTS
IP104.131.86.124
Web serverNginx (reverse proxy)
ProcesoPM2 — flipcalc-api
HTTPSLet's Encrypt
Costo$6/mes

Stack técnico

BackendNode.js + Express
FrontendVanilla HTML/CSS/JS
Base de datosPostgreSQL 14
ORM / Querypg (node-postgres)
Variables de entornodotenvx (16 vars)
UploadsMulter
TipografíasSource Serif 4 · IBM Plex
IconosLucide SVG (18×18, 2px)

Admin de email (bandeja)

ProveedorZoho Mail Lite
Bandejasupport@flipcalcpro.com
UsoSoporte · Comunicación · Inbox
EstadoActivo
Costo$1/mes

Email transaccional

ProveedorResend
Fromnoreply@flipcalcpro.com
Límite3,000 emails/mes (free)
UsosVerificación · Reset pwd · Invites
DKIM/SPFVerificado
Costo$0/mes (free tier)

Panel de seguridad

Auth appJWT · 8h expiración
Auth adminJWT separado · source: admin_panel
Contraseñasbcrypt · 10 rounds
Rate limit general100 req / 15 min
Rate limit login5 intentos / 15 min
HeadersHelmet.js
HTTPSLet's Encrypt (auto-renew)
Backups/root/backups/ (manual)
Total del mes
Gastos fijos
Extras

Gastos del mes

CategoríaBaseEste mesNota

Gastos extra

DescripciónMonto

Proyección de gastos

6 meses — basado en promedio real
Total 6m (promedio)
Total 6m (mes actual)
12 meses — basado en promedio real
Total 12m (promedio)
Total 12m (mes actual)

Historial mensual

MesFijosExtrasTotal

Miembros del equipo

NombreEmailRolEstadoCreadoAcciones