El Sistema de Gestión de Propiedades es una aplicación web diseñada para administrar bienes raíces de manera eficiente. Proporciona una interfaz fácil de usar para agregar, actualizar, eliminar y ver detalles de propiedades como dirección, precio, tamaño y descripción. El sistema está compuesto por:
- Un frontend desarrollado en HTML, CSS y JavaScript.
- Un backend construido con Spring Boot y MySQL para la persistencia de datos.
- Una base de datos alojada en AWS EC2 utilizando MySQL.
El sistema sigue una arquitectura de tres capas:
- Aplicación web estática alojada en AWS S3.
- Usa JavaScript para la interacción dinámica.
- Obtiene datos del backend mediante solicitudes REST API.
- Construido con Spring Boot y ejecutado en un contenedor Docker en AWS EC2.
- Proporciona endpoints RESTful para gestionar propiedades (operaciones CRUD).
- Utiliza JPA y Hibernate para la interacción con la base de datos.
- Maneja políticas CORS para permitir la interacción con el frontend.
- Base de datos MySQL ejecutándose en AWS EC2.
- Almacena todos los detalles de las propiedades.
- Protegida mediante variables de entorno para evitar exposición de credenciales.
- El frontend envía una solicitud HTTP a la API del backend.
- El backend procesa la solicitud e interactúa con MySQL.
- La respuesta se envía de vuelta al frontend, actualizando dinámicamente la UI.
| Nombre de la Clase | Descripción |
|---|---|
Property |
Clase entidad que representa una propiedad. |
PropertyController |
Controlador REST que maneja las solicitudes HTTP. |
PropertyService |
Capa de servicio que gestiona la lógica de negocio. |
PropertyRepository |
Interfaz que extiende JPA Repository para operaciones en la base de datos. |
graph TD
User((Usuario)) -->|HTTP Requests| S3[AWS S3 - Frontend]
S3 -->|Fetch Data| EC2Backend[AWS EC2 - Backend Spring Boot Docker]
EC2Backend -->|JDBC Connection| MySQLDB[AWS EC2 - MySQL Database]
subgraph "AWS Cloud"
S3
EC2Backend
MySQLDB
end
graph TD
Frontend["Frontend (HTML, CSS, JS)"] -->|API Requests| Backend["Backend (Spring Boot)"]
Backend -->|JPA/Hibernate| Database["MySQL Database"]
subgraph Backend Components
Controller["PropertyController (Maneja solicitudes HTTP)"] -->|Llama a| Service["PropertyService (Lógica de negocio)"]
Service -->|Usa| Repository["PropertyRepository (Acceso a BD)"]
Repository -->|Interfaz con| Database
end
mvn clean packagedocker build -t tu_usuario_docker/property-management .
docker push tu_usuario_docker/property-managementdocker pull tu_usuario_docker/property-management
docker run -d -p 8080:8080 --name backend -e DB_URL="jdbc:mysql://tu-servidor-mysql:3306/properties" -e DB_USER="tu_usuario" -e DB_PASS="tu_contraseña" tu_usuario_docker/property-management- Crear un bucket S3 con hosting de sitio web estático habilitado.
- Subir
index.html,style.cssyscript.js. - Configurar permisos del bucket para acceso público de solo lectura.
- Acceder a la aplicación a través de la URL pública de S3.
- Instalar MySQL Server en EC2:
sudo apt update && sudo apt install mysql-server -y - Configurar MySQL y crear la base de datos:
CREATE DATABASE properties; CREATE USER 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña'; GRANT ALL PRIVILEGES ON properties.* TO 'tu_usuario'@'%'; FLUSH PRIVILEGES;
- Permitir conexiones remotas editando
/etc/mysql/mysql.conf.d/mysqld.cnf:bind-address = 0.0.0.0 - Reiniciar MySQL:
sudo systemctl restart mysql
Video.readme.mp4
- El backend usa configuración CORS para permitir solicitudes desde el frontend.
- Todas las credenciales sensibles se almacenan como variables de entorno.
📢 Desarrollado y mantenido por Tomas Suarez
