From 3aa964f9df94ddd62c6e25ef5e699765a5f9613d Mon Sep 17 00:00:00 2001 From: Tatiana Villa Ema Date: Thu, 27 Aug 2026 22:20:42 +0200 Subject: [PATCH] Arrancando el proyecto --- README.md | 191 +++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 5 +- sql/schema.sql | 73 +++++++++++++++++++ 3 files changed, 266 insertions(+), 3 deletions(-) create mode 100644 README.md create mode 100644 sql/schema.sql diff --git a/README.md b/README.md new file mode 100644 index 0000000..d796bab --- /dev/null +++ b/README.md @@ -0,0 +1,191 @@ +# 🏠 AlquilerFácil (PropTech Platform) + +> **Plataforma integral para la gestión simplificada de alquileres residenciales en España.** +> Automatiza contratos legalmente válidos, cobro de rentas, scoring de inquilinos, contabilidad fiscal (IRPF) y marketplace de profesionales del hogar. + +--- + +## 📌 Visión del Proyecto + +**AlquilerFácil** nace con el objetivo de digitalizar y desburocratizar el proceso de alquiler de viviendas. Conectamos a propietarios, inquilinos y profesionales del mantenimiento en un único ecosistema seguro, reduciendo impagos, optimizando la rentabilidad y simplificando las obligaciones fiscales en España. + +--- + +## ✨ Características Principales + +### 👤 Para Inquilinos +* **Tenant Passport & Scoring Automated:** Evaluación de solvencia basada en ratio de esfuerzo, estabilidad laboral y perfil (convivientes, mascotas). +* **Firma Digital Directa:** Firma de contratos de arrendamiento online con validez legal (eIDAS). +* **Pagos Recurrentes:** Suministro e historial de recibos de alquiler centralizados. + +### 🏢 Para Propietarios +* **Gestión Integrada de Inmuebles:** Ficha completa con referencia catastral, suministros (CUPS Luz/Gas), IBI y gastos de comunidad. +* **Cobros Automatizados & Split:** Cobro mensual con retención automática de comisión mediante pasarela de pago. +* **Módulo Fiscal (IRPF / Renta):** Cálculo de rentabilidad neta (ROI) y exportación de datos anuales desglosados en casillas de la Agencia Tributaria (AEAT). +* **Gestión de Incidencias:** Solicitud directa de presupuestos y reparación a técnicos homologados. + +### 🛠️ Para Profesionales y Manitas +* **Marketplace de Reparaciones:** Oferta de servicios (pintura, electricidad, fontanería, cerrajería). +* **Facturación in-App:** Emisión de presupuestos y facturas en la plataforma con división transparente de comisiones. + +--- + +## 🛠️ Stack Tecnológico + +| Capa | Tecnología | Descripción | +| :--- | :--- | :--- | +| **Backend** | PHP 8.x (Laravel / Custom MVC) | Lógica de negocio, autenticación, API REST y motores de cálculo. | +| **Database** | MySQL 8.0 | Modelo relacional para usuarios, inmuebles, finanzas y contratos. | +| **Frontend** | HTML5, CSS3 (Tailwind CSS / Bootstrap), JavaScript (ES6+) | Interfaces dinámicas, paneles de control y formularios de scoring. | +| **Integraciones** | Stripe Connect API | Procesamiento de pagos, suscripciones y split de comisiones. | +| **Firma Digital** | Signaturit / DocuSign API | Firma electrónica avanzada en conformidad con eIDAS. | +| **Herramientas/Scripts**| Python (BeautifulSoup / Scrapy) | Scripts auxiliares de análisis de mercado y agregación de datos. | + +--- + +## 🗄️ Esquema Inicial de Base de Datos (MySQL) + +```sql +-- 1. Usuarios y Perfiles +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + nombre VARCHAR(100) NOT NULL, + email VARCHAR(150) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + role ENUM('propietario', 'inquilino', 'profesional') NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE tenant_profiles ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + ingresos_mensuales DECIMAL(10,2) NOT NULL, + tipo_contrato ENUM('indefinido', 'temporal', 'autonomo') NOT NULL, + tiene_mascotas BOOLEAN DEFAULT FALSE, + num_convivientes INT DEFAULT 1, + score_calculado INT DEFAULT 0, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); + +-- 2. Inmuebles y Contratos +CREATE TABLE properties ( + id INT AUTO_INCREMENT PRIMARY KEY, + owner_id INT NOT NULL, + direccion VARCHAR(255) NOT NULL, + ref_catastral VARCHAR(20) UNIQUE, + cups_luz VARCHAR(22), + cups_gas VARCHAR(22), + ibi_anual DECIMAL(10,2) DEFAULT 0.00, + comunidad_mes DECIMAL(10,2) DEFAULT 0.00, + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE +); + +CREATE TABLE leases ( + id INT AUTO_INCREMENT PRIMARY KEY, + property_id INT NOT NULL, + tenant_id INT NOT NULL, + precio_alquiler DECIMAL(10,2) NOT NULL, + dia_cobro TINYINT DEFAULT 1, + fecha_inicio DATE NOT NULL, + fecha_fin DATE NOT NULL, + estado ENUM('borrador', 'firmado', 'activo', 'finalizado') DEFAULT 'borrador', + FOREIGN KEY (property_id) REFERENCES properties(id), + FOREIGN KEY (tenant_id) REFERENCES users(id) +); + +-- 3. Transacciones y Finanzas +CREATE TABLE transactions ( + id INT AUTO_INCREMENT PRIMARY KEY, + lease_id INT, + property_id INT NOT NULL, + tipo ENUM('alquiler', 'servicio_reparacion', 'gasto_deducible') NOT NULL, + concepto VARCHAR(255) NOT NULL, + monto_total DECIMAL(10,2) NOT NULL, + comision_plataforma DECIMAL(10,2) DEFAULT 0.00, + stripe_payment_id VARCHAR(100), + estado_pago ENUM('pendiente', 'completado', 'fallido') DEFAULT 'pendiente', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (property_id) REFERENCES properties(id) +); + +-- 4. Marketplace de Servicios +CREATE TABLE service_requests ( + id INT AUTO_INCREMENT PRIMARY KEY, + property_id INT NOT NULL, + professional_id INT, + descripcion TEXT NOT NULL, + monto_presupuesto DECIMAL(10,2), + estado ENUM('solicitado', 'aceptado', 'pagado', 'completado') DEFAULT 'solicitado', + FOREIGN KEY (property_id) REFERENCES properties(id), + FOREIGN KEY (professional_id) REFERENCES users(id) +); +``` + +--- + +## 🚀 Hoja de Ruta (Roadmap) + +- [x] **Fase 0:** Definición del alcance, modelo de negocio y arquitectura inicial. +- [ ] **Fase 1 (MVP Inmuebles & Contratos):** + - [ ] Sistema de autenticación de usuarios. + - [ ] Generador dinámico de contratos de arrendamiento según LAU en PDF. + - [ ] Integración con Stripe Connect para cobros automatizados. +- [ ] **Fase 2 (Inquilino & Scoring):** + - [ ] Algoritmo de scoring de solvencia para inquilinos. + - [ ] Integración de firma digital eIDAS (Signaturit API). +- [ ] **Fase 3 (Fiscalidad & Propietario):** + - [ ] Dashboard de rentabilidad neta (gastos, ingresos, IBI). + - [ ] Exportador de datos fiscales para la Declaración de la Renta (AEAT). +- [ ] **Fase 4 (Marketplace de Mantenimiento):** + - [ ] Módulo para técnicos y profesionales. + - [ ] Flujo de presupuestos, aprobación y facturación in-app. + +--- + +## ⚙️ Instalación Local (Entorno de Desarrollo) + +### Requisitos previos +* PHP >= 8.1 +* MySQL Server >= 8.0 +* Composer +* Servidor web local (Apache/Nginx o XAMPP/MAMP) + +### Pasos de configuración + +1. **Clonar el repositorio:** + ```bash + git clone https://github.com/tu-usuario/alquiler-facil.git + cd alquiler-facil + ``` + +2. **Configurar la base de datos:** + * Crea una base de datos local llamada `alquiler_facil_db`. + * Importa el esquema SQL provisto en `database/schema.sql`. + +3. **Variables de Entorno (`.env`):** + * Copia el archivo de ejemplo y ajusta las credenciales: + ```bash + cp .env.example .env + ``` + * Modifica los accesos a la base de datos y las claves API (Stripe, Signaturit). + +4. **Ejecutar el servidor local:** + ```bash + php -S localhost:8000 -t public/ + ``` + +--- + +## ⚖️ Aspectos Legales y Normativa en España + +Este proyecto contempla el cumplimiento de: +* **Ley de Arrendamientos Urbanos (LAU):** Cláusulas contractuales estandarizadas. +* **Reglamento General de Protección de Datos (RGPD):** Encriptación de datos sensibles y cumplimiento normativo. +* **Reglamento eIDAS:** Firma electrónica avanzada para la validez legal de contratos. +* **Depósito de Fianzas (Comunidad de Madrid / IVIMA):** Guías y flujos integrados para la gestión de fianzas públicas. + +--- + +## 📄 Licencia + +Este proyecto está bajo la Licencia **MIT**. Consulta el archivo `LICENSE` para obtener más información. \ No newline at end of file diff --git a/index.html b/index.html index a2a6e22..f117fae 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,12 @@ -```html - Alquiler Fácil | Preparamos tu vivienda para alquilarla + Alquiler Fácil + content="Alquiler Fácil Gestion tecnologica de alquileres"> diff --git a/sql/schema.sql b/sql/schema.sql new file mode 100644 index 0000000..9d8c7a9 --- /dev/null +++ b/sql/schema.sql @@ -0,0 +1,73 @@ +-- 1. Usuarios y Perfiles +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + nombre VARCHAR(100) NOT NULL, + email VARCHAR(150) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + role ENUM('propietario', 'inquilino', 'profesional') NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE tenant_profiles ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + ingresos_mensuales DECIMAL(10,2) NOT NULL, + tipo_contrato ENUM('indefinido', 'temporal', 'autonomo') NOT NULL, + tiene_mascotas BOOLEAN DEFAULT FALSE, + num_convivientes INT DEFAULT 1, + score_calculado INT DEFAULT 0, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); + +-- 2. Inmuebles y Contratos +CREATE TABLE properties ( + id INT AUTO_INCREMENT PRIMARY KEY, + owner_id INT NOT NULL, + direccion VARCHAR(255) NOT NULL, + ref_catastral VARCHAR(20) UNIQUE, + cups_luz VARCHAR(22), + cups_gas VARCHAR(22), + ibi_anual DECIMAL(10,2) DEFAULT 0.00, + comunidad_mes DECIMAL(10,2) DEFAULT 0.00, + FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE +); + +CREATE TABLE leases ( + id INT AUTO_INCREMENT PRIMARY KEY, + property_id INT NOT NULL, + tenant_id INT NOT NULL, + precio_alquiler DECIMAL(10,2) NOT NULL, + dia_cobro TINYINT DEFAULT 1, + fecha_inicio DATE NOT NULL, + fecha_fin DATE NOT NULL, + estado ENUM('borrador', 'firmado', 'activo', 'finalizado') DEFAULT 'borrador', + FOREIGN KEY (property_id) REFERENCES properties(id), + FOREIGN KEY (tenant_id) REFERENCES users(id) +); + +-- 3. Transacciones y Finanzas +CREATE TABLE transactions ( + id INT AUTO_INCREMENT PRIMARY KEY, + lease_id INT, + property_id INT NOT NULL, + tipo ENUM('alquiler', 'servicio_reparacion', 'gasto_deducible') NOT NULL, + concepto VARCHAR(255) NOT NULL, + monto_total DECIMAL(10,2) NOT NULL, + comision_plataforma DECIMAL(10,2) DEFAULT 0.00, + stripe_payment_id VARCHAR(100), + estado_pago ENUM('pendiente', 'completado', 'fallido') DEFAULT 'pendiente', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (property_id) REFERENCES properties(id) +); + +-- 4. Marketplace de Servicios +CREATE TABLE service_requests ( + id INT AUTO_INCREMENT PRIMARY KEY, + property_id INT NOT NULL, + professional_id INT, + descripcion TEXT NOT NULL, + monto_presupuesto DECIMAL(10,2), + estado ENUM('solicitado', 'aceptado', 'pagado', 'completado') DEFAULT 'solicitado', + FOREIGN KEY (property_id) REFERENCES properties(id), + FOREIGN KEY (professional_id) REFERENCES users(id) +); \ No newline at end of file