Arrancando el proyecto
This commit is contained in:
parent
b7c5798493
commit
3aa964f9df
|
|
@ -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.
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
```html
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="es">
|
<html lang="es">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<title>Alquiler Fácil | Preparamos tu vivienda para alquilarla</title>
|
<title>Alquiler Fácil</title>
|
||||||
<meta name="description"
|
<meta name="description"
|
||||||
content="Alquiler Fácil prepara viviendas en Las Rozas y alrededores para salir al mercado: puesta a punto, pequeñas mejoras, decoración y fotografía.">
|
content="Alquiler Fácil Gestion tecnologica de alquileres">
|
||||||
<link rel="stylesheet" href="css/estilos.css">
|
<link rel="stylesheet" href="css/estilos.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
);
|
||||||
Loading…
Reference in New Issue