Arquitectura de Cierro

Visión General

Cierro es una aplicación SaaS construida con una arquitectura moderna de cliente-servidor, utilizando React en el frontend y Supabase como Backend-as-a-Service (BaaS).

Diagrama de Arquitectura

┌─────────────────────────────────────────────────────────────────┐
│                         CLIENTE                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐ │
│  │   React     │  │  TipTap     │  │      Liveblocks         │ │
│  │   + Vite    │  │  Editor     │  │  (Colaboración Real)    │ │
│  └──────┬──────┘  └──────┬──────┘  └────────────┬────────────┘ │
│         │                │                       │               │
│         └────────────────┼───────────────────────┘               │
│                          │                                       │
└──────────────────────────┼───────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                       AUTENTICACIÓN                              │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                        Clerk                              │   │
│  │  • Login/Registro  • OAuth  • JWT  • Session Management  │   │
│  └─────────────────────────────────────────────────────────┘   │
└──────────────────────────┬───────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                        SUPABASE                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐ │
│  │  PostgreSQL │  │   Storage   │  │     Edge Functions      │ │
│  │  + RLS      │  │   Buckets   │  │     (Deno Runtime)      │ │
│  └──────┬──────┘  └──────┬──────┘  └────────────┬────────────┘ │
│         │                │                       │               │
│         └────────────────┼───────────────────────┘               │
└──────────────────────────┼───────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                    SERVICIOS EXTERNOS                            │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌───────┐ │
│  │ Resend  │  │ Gemini  │  │ HubSpot │  │Pipedream│  │Reveniu│ │
│  │ (Email) │  │  (IA)   │  │  (CRM)  │  │ (iPaaS) │  │(Pagos)│ │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘  └───────┘ │
└─────────────────────────────────────────────────────────────────┘

Componentes Principales

Frontend (React)

Estructura de Componentes

Librerías Principales

Librería
Propósito

React 18

UI Framework

TipTap

Editor WYSIWYG

Liveblocks + Yjs

Colaboración en tiempo real

React Query

Cache y estado del servidor

shadcn/ui

Componentes UI

Tailwind CSS

Estilos

Recharts

Gráficos

Backend (Supabase)

PostgreSQL + RLS

La base de datos utiliza Row Level Security para control de acceso granular:

Edge Functions

Funciones serverless en Deno para lógica de negocio:

  • Procesamiento de pagos

  • Envío de emails

  • Integraciones externas

  • IA para generación de contenido

Storage

Buckets para almacenamiento de archivos:

Bucket
Público
Uso

company-logos

Logos de empresas

budget-images

Imágenes en presupuestos

knowledge-files

Archivos de conocimiento

Flujo de Datos

Creación de Presupuesto

Generación con IA

Autenticación

Patrones de Diseño

Component Composition

Custom Hooks

Context Providers

Seguridad

Capas de Seguridad

  1. Clerk: Autenticación y gestión de sesiones

  2. JWT Validation: Verificación en cada request

  3. RLS Policies: Control de acceso a nivel de fila

  4. Edge Functions: Validación de permisos en backend

Flujo de Autorización

Performance

Optimizaciones Frontend

  • Code Splitting: Lazy loading de rutas

  • React Query: Cache inteligente

  • Debounce: Reducción de requests

  • Virtual Lists: Para listas largas

Optimizaciones Backend

  • Connection Pooling: Supabase Pooler

  • Indexes: En columnas frecuentes

  • Edge Functions: Cold start optimization

  • CDN: Para assets estáticos

Escalabilidad

Horizontal

  • Supabase escala automáticamente

  • Edge Functions son serverless

  • Liveblocks maneja concurrencia

Vertical

  • Upgrade de plan Supabase

  • Conexiones de database

  • Storage limits

Monitoreo

Logs

  • Supabase Dashboard: Logs de DB y Auth

  • Edge Function Logs: Errores y performance

  • Browser Console: Errores de cliente

Métricas

  • Request latency

  • Error rates

  • Active users

  • Storage usage

Última actualización