LeadFlow CRM API
SaaS B2B · Gestion de leads para agencias de marketing digital
Framework
Fastify 4
~65k req/s en benchmark
Base de datos
PostgreSQL 16
Pool de 10 conexiones
Cache
Redis 7
Rate limit + cache
Auth
JWT dual
Access 15m · Refresh 7d
Logging
Pino
Structured JSON logs
Validacion
Zod
Schemas tipados
Arquitectura en Capas
Flujo de una peticion HTTP a traves del sistema
HTTP / Middleware
Fastify · Helmet · CORS
Rate Limit · Pino logger
Rate Limit · Pino logger
→
Controller
lead.controller.ts
auth.controller.ts
auth.controller.ts
→
Service
lead.service.ts
auth.service.ts
auth.service.ts
→
Repository
lead.repository.ts
user.repository.ts
user.repository.ts
→
Database
PostgreSQL + Redis
pg Pool · ioredis
pg Pool · ioredis
Estructura del Proyecto
leadflow-api/src/
leadflow-api/
src/
tsconfig.json
package.json
.env.exampleconfig/
database.ts— Pool PostgreSQL + config Redis
env.ts— Variables con Zod schema validation
controllers/
lead.controller.ts— CRUD leads (HTTP in/out)
auth.controller.ts— Login, refresh, logout
health.controller.ts— /health endpoint
services/
lead.service.ts— Logica de negocio de leads
auth.service.ts— JWT generation + bcrypt
repositories/
lead.repository.ts— SQL queries con pg Pool
user.repository.ts— Auth user persistence
middleware/
auth.middleware.ts— JWT verify + inject user
validate.middleware.ts— Zod schema parse
rate-limit.middleware.ts— Redis-backed limiter
error-handler.ts— Global error boundary
routes/
lead.routes.ts— /api/v1/leads
auth.routes.ts— /api/v1/auth
types/
lead.types.ts— Lead, CreateLeadDTO, UpdateLeadDTO
auth.types.ts— JWTPayload, Tokens
utils/
errors.ts— AppError hierarchy
response.ts— ApiResponse helper
server.ts— Fastify bootstrap + graceful shutdown
app.ts— Plugin registration