Arquitectura Avanzada

Lo importante no es qué herramientas hemos usado, sino por qué hemos tomado estas decisiones.

Hemos diseñado el interior de iMirly centrándonos en los beneficios reales que aporta a nuestros usuarios, construyendo una plataforma segura y escalable.

Arquitectura iMirly APP ANDROID Jetpack Compose API REST Spring Boot (Java) Hexagonal PostgreSQL SEGURIDAD & DATOS ✓ Tokens JWT ✓ Identificadores UUID LÓGICA CLAVE Sistema de "Limbo" (Escrow) Chat Inteligente Automático

Visión general del sistema

El sistema tiene tres piezas que trabajan separadas pero coordinadas. La clave es que el móvil nunca toca la base de datos: todo pasa por el servidor.

App Android

Es lo que ve el usuario. Interfaz nativa desarrollada con Jetpack Compose, el estándar moderno de Google.

API REST (Spring Boot)

Es nuestro servidor. Aquí se toman las decisiones importantes: validar pagos, reglas de negocio y actuar como filtro y árbitro.

PostgreSQL

La base de datos donde vive toda la información: usuarios, contratos y mensajes.

Para entenderlo mejor: Piensa en un restaurante. La App es el camarero (toma nota), la API REST es el chef (cocina el pedido siguiendo reglas estrictas), y la Base de Datos es la despensa.

Arquitectura Hexagonal

El backend se divide en tres capas distintas. Esto permite cambiar cualquier pieza (como la pasarela de pago) sin tocar las reglas de negocio. Todo es sustituible.

Capa de Dominio

  • Las reglas del negocio aisladas.
  • No sabe nada de internet.
  • Ejemplo: Un saldo nunca puede ser negativo.

Capa de Aplicación

  • Orquesta las acciones principales.
  • Coordina el interior con el exterior.
  • Ejemplos: Pagar, Aceptar propuesta.

Capa de Infraestructura

  • Son los conectores del sistema.
  • El que habla con Android (REST).
  • El que habla con la base de datos (JPA).

Seguridad y Control

Nuestro servidor hace tres cosas críticas para proteger la información y el dinero de los usuarios.

Autenticación JWT

Cada petición lleva un token firmado. Nadie puede hacer nada en la aplicación sin estar previamente autenticado.

JPA e Hibernate

Accedemos a los datos con un ORM. Esto evita consultas manuales y nos protege de hackeos como la inyección SQL.

Transacciones Seguras

Si un pago falla a la mitad, el sistema deshace todo automáticamente. No existen estados intermedios ni dinero perdido en el limbo.

Base de Datos PostgreSQL

El esquema refleja exactamente cómo funciona nuestro negocio. La base de datos no es pasiva, participa activamente.

Tabla: usuarios
  • id (UUID)
  • email, password_hash
  • tipo_usuario (Enum)
  • saldo (Decimal 10,2)
Tabla: solicitud_contrato
  • id (UUID)
  • cliente_id (FK Usuario)
  • anuncio_id (FK Anuncio)
  • estado (Enum)
  • precio_acordado
Tabla: mensaje
  • id (UUID)
  • remitente_id / receptor_id
  • solicitud_id (FK Contrato)
  • contenido (String)
  • tipo (Enum)

Relaciones y Reglas de Negocio en BBDD

El esquema está altamente normalizado. La tabla solicitud_contrato actúa como el eje central. Además, la tabla mensaje incluye un tipo especial que permite al servidor disparar lógica financiera sola al detectar mensajes como PRESUPUESTO_ACEPTADO.

Buenas prácticas de desarrollo

Transaccionalidad

Como mencioné antes, o la operación económica se completa entera, o se revierte por completo.

DTOs y Mappers

Nunca enviamos al móvil más datos de los necesarios. Filtramos la información antes de salir del servidor.

Excepciones Claras

Si algo falla, la app muestra al usuario un aviso comprensible, no un simple pantallazo de error técnico.

Escalabilidad y futuro

Pasarelas Reales

El 'limbo' ya funciona lógicamente. Conectar Stripe es solo cambiar un conector, sin reescribir nada del flujo.

Valoraciones Automáticas

Al controlar todo el ciclo del contrato, lanzar un sistema de reseñas al terminar un trabajo es trivial.

Documentación Técnica

¿Quieres explorar la documentación técnica completa? Consúltala directamente aquí.

Abrir en nueva pestaña

Base técnica sólida

iMirly no es un prototipo simulado. Tiene seguridad real, transacciones controladas y una arquitectura lista para evolucionar. Es una plataforma lista para producción.

Siguiente sección: Equipo