Hora de construir el cerebro de nuestro Purchase Tracker. Aunque la app en React Native luce genial, necesita un backend con el que hablar. Entra en escena nuestro backend con Node.js y TypeScript, el amigo fiable que recuerda todo y jamás pierde un ticket.
Por qué Node.js + TypeScript Porque la seguridad de tipos es vida. Un solo lenguaje en todo el stack y errores atrapados en compilación, sin sorpresas de undefined is not a function en producción.
Nuestra pila
• Node.js, Express y TypeScript para una API web segura y tipada
• AWS Cognito para autenticación robusta con JWT
• PostgreSQL y Prisma para base de datos relacional moderna con ORM tipado
• AWS S3 y Textract para almacenamiento de archivos y OCR
• Jest y Supertest para pruebas automatizadas
Arquitectura
Frontend React Native ? Backend Node.js Express TypeScript ? AWS Cognito autenticación ? AWS S3 almacenamiento de archivos ? Textract OCR ? PostgreSQL Prisma base de datos
Arranque rápido
Inicializa el proyecto: npm init -y
Dependencias principales: npm install express cors helmet morgan dotenv joi multer prisma @prisma/client
SDKs AWS y verificación JWT: npm install @aws-sdk/client-s3 @aws-sdk/client-textract aws-jwt-verify
TypeScript y herramientas: npm install -D typescript @types/node @types/express tsx nodemon jest
Estructura recomendada
backend src con carpetas controllers para handlers, middleware para auth y validación, routes para endpoints, services para lógica de negocio, config para settings, types para definiciones TS y utils para helpers
Autenticación con AWS Cognito
Verificamos tokens JWT con Cognito y resolvemos el usuario en base de datos. Si el usuario no existe, lo creamos con Prisma usando el sub de Cognito como cognitoId. Sin manejo manual de contraseñas y con flujos modernos de inicio de sesión.
Subida de archivos a S3
Flujo sencillo: recibimos el archivo con multer, generamos una clave única y sanitizada receipts usuarioId timestamp nombre, lo subimos con PutObject a S3 y devolvemos la URL pública o firmada según el caso. Admite imágenes y PDFs.
OCR con Textract
Analizamos el documento en S3 con AnalyzeDocument en modo FORMS y TABLES, parseamos bloques de texto y extraemos campos clave como total, fecha y proveedor. Si el ticket es complicado, guardamos los bloques para reprocesarlos con reglas mejoradas.
Base de datos con PostgreSQL y Prisma
Modelo User con email, cognitoId, nombre y apellidos. Modelo Receipt con relación a User, s3Key único, s3Url, estado UPLOADED, PROCESSING, PROCESSED, FAILED y extractedData en JSON con resultados OCR. Las relaciones y claves foráneas garantizan integridad. Prisma aporta tipos generados, migraciones versionadas y cliente typesafe.
API REST limpia
Endpoints
• POST api receipts upload para subir un recibo
• GET api receipts para listar recibos
• GET api receipts id para consultar un recibo
• DELETE api receipts id para borrar un recibo
• GET api purchases para listar compras
• GET api users profile para el perfil del usuario
Manejo de errores
Middleware centralizado que registra errores, distingue AppError de errores genéricos, mapea códigos Prisma como P2002 a 409 conflicto y devuelve respuestas JSON consistentes con código, mensaje y timestamp.
Pruebas automatizadas
Con Jest y Supertest verificamos caminos felices, flujos de autenticación, errores y casos límite. Ejemplo clásico subir un ticket con token válido debe devolver 201 y un id, mientras que sin token debe devolver 401.
Checklist de despliegue
• Variables de entorno configuradas
• Migraciones de base de datos ejecutadas
• Compilación TypeScript correcta
• Servicios AWS configurados
• Pruebas en verde
• SSL habilitado
• CORS configurado
Variables de entorno clave
NODE_ENV=production
DATABASE_URL=postgresql://user:pass@host:5432/db
AWS_COGNITO_USER_POOL_ID=us-east-1_xxxxxxxxx
AWS_S3_BUCKET=purchase-tracker-receipts
AWS_REGION=us-east-1
Qué hemos construido
• Escalable para tráfico real
• Type-safe para detectar errores temprano
• Seguro con autenticación Cognito
• Fiable con manejo de errores uniforme
• Mantenible con estructura clara y TypeScript
• Rápido con consultas optimizadas y potencial de caché
TLDR Node.js + TypeScript + AWS + PostgreSQL + Prisma se traduce en un backend que te hace lucir como una estrella del rock.
Sobre Q2BSTUDIO
En Q2BSTUDIO diseñamos y desarrollamos aplicaciones a medida y software a medida con foco en calidad, escalabilidad y seguridad. Integramos inteligencia artificial, agentes IA y servicios cloud AWS y Azure para automatizar procesos, acelerar el time to market y elevar la productividad. Nuestro equipo de ciberseguridad protege tus datos con auditorías y pentesting, mientras que nuestros servicios inteligencia de negocio llevan tus métricas al siguiente nivel con power bi y analítica avanzada. Si buscas un partner que vaya de tu máquina a API en producción con excelencia, somos tu equipo.
Descubre cómo llevamos tus ideas a producción con nuestro servicio de desarrollo de aplicaciones y software personalizados en aplicaciones a medida y software a medida, y escala con arquitecturas robustas, contenedores, CI CD y observabilidad sobre servicios cloud aws y azure.
Stack final
Node.js, Express, TypeScript, AWS Cognito, S3, Textract, PostgreSQL, Prisma, Jest. Arquitectura RESTful tipada con JWT, procesamiento de archivos, OCR y buenas prácticas modernas, lista para crecer con ia para empresas, automatización de procesos y cuadros de mando con power bi.