Skip to main content

Overview

Creating a project in Core Projects establishes the foundation for managing your real estate development. This guide walks through the complete project creation workflow, from basic information to financial configuration.

Prerequisites

  • Administrator or Manager (Gerente/Administrador) role
  • Location hierarchy configured (Country → Department → City)
  • Project states defined in /estados

Creating a New Project

1

Navigate to Project Creation

From the admin dashboard, navigate to Proyectos and click Crear proyecto or go directly to /proyectos/create.
2

Enter General Information

Fill in the basic project details:Required Fields:
  • Nombre – Project name (max 150 characters)
    Example: Conjunto Residencial Aurora
    
  • Estado – Select initial project state (e.g., “En planificación”, “Activo”)
  • Ubicación – Choose from configured locations in the hierarchy
Optional Fields:
  • Descripción – Brief description (max 500 characters)
3

Set Project Dates

Define the project timeline:
  • Fecha inicio – Project start date
  • Fecha finalización – Expected completion date (must be after start date)
These dates determine available payment terms for sales.
4

Configure Budget & Metrics

Enter project specifications:
presupuesto_inicial:  decimal(18,2)  // Initial budget
presupuesto_final:    decimal(18,2)  // Final budget
metros_construidos:   decimal(18,2)  // Square meters
estrato:              integer(1-6)   // Socioeconomic stratum
Property Counts:
  • cantidad_locales – Number of commercial units
  • cantidad_apartamentos – Number of residential units
  • cantidad_parqueaderos_vehiculo – Car parking spaces
  • cantidad_parqueaderos_moto – Motorcycle parking spaces
Building Structure:
  • numero_torres – Number of towers/buildings
  • numero_pisos – Floors per tower
5

Define Financial Parameters

Configure payment terms and pricing rules:Initial Payment Settings:
porcentaje_cuota_inicial_min:  numeric(0-100)  // Min down payment %
plazo_cuota_inicial_meses:     integer         // Payment plan term (months)
Separation Rules:
valor_min_separacion:          decimal(18,2)   // Minimum reservation amount
plazo_max_separacion_dias:     integer(1-3650) // Max reservation days
Example configuration:
Down Payment Min: 30%
Payment Term: 12 months
Separation Amount: $5,000,000 COP
Separation Period: 15 days
6

Set Project Status

Choose initial activation state:
  • Activo – Project is visible and available for sales
  • Inactive – Project is hidden from sales module
You can toggle this later using the switch on the project detail page.
7

Save the Project

Click Guardar to create the project. The system will:
  1. Validate all required fields
  2. Check date logic (finalization ≥ start)
  3. Create the project record
  4. Redirect to /proyectos/{id} for further configuration

Post-Creation Configuration

After creating the base project, complete the setup by configuring:

1. Pricing Policies

Navigate to Políticas de Precio to define dynamic pricing:
Route: /politicas-precio-proyecto/crear
Set escalation rules:
  • Ventas por escalón – Sales threshold to trigger price increase
  • Porcentaje aumento – Percentage increase per escalation
  • Aplica desde – Effective date
Example policy:
Every 5 units sold → Increase prices by 2%
Effective from: 2024-01-01

2. Project Structure

Follow the 8-step wizard accessible from the project detail page:

Step 2: Torres

Create towers at /admin/torres/create with flow context ?flow_proyecto_id={id}

Step 3: Pisos

Define floors for each tower at /pisos-torre/create

Step 4: Tipos

Set apartment types at /tipos-apartamento/create with specifications:
  • Area construida/privada
  • Habitaciones/baños
  • Valor m² (auto-calculates valor_estimado)

Step 5: Apartamentos

Generate units at /admin/apartamentos/create linked to types, floors, and towers

Validation Rules

The ProyectoController::store method enforces:
'nombre' => 'required|string|max:150',
'fecha_finalizacion' => 'date|after_or_equal:fecha_inicio',
'presupuesto_inicial' => 'numeric|min:0|max:9999999999999999.99',
'estrato' => 'integer|min:1|max:6',
'porcentaje_cuota_inicial_min' => 'numeric|min:0|max:100',
'plazo_max_separacion_dias' => 'integer|min:1|max:3650',
'id_estado' => 'required|exists:estados,id_estado',
'id_ubicacion' => 'required|exists:ubicaciones,id_ubicacion',
'activo' => 'boolean', // defaults to true

Example: Complete Project Setup

Here’s a real-world example:
{
  "nombre": "Edificio Paraíso",
  "descripcion": "Proyecto residencial con 120 apartamentos en 15 pisos",
  "fecha_inicio": "2024-01-15",
  "fecha_finalizacion": "2026-06-30",
  "presupuesto_inicial": 8500000000,
  "presupuesto_final": 9200000000,
  "metros_construidos": 12500.50,
  "cantidad_apartamentos": 120,
  "cantidad_locales": 8,
  "cantidad_parqueaderos_vehiculo": 150,
  "estrato": 4,
  "numero_torres": 2,
  "numero_pisos": 15,
  "porcentaje_cuota_inicial_min": 25,
  "valor_min_separacion": 3000000,
  "plazo_cuota_inicial_meses": 18,
  "plazo_max_separacion_dias": 10,
  "id_estado": 2,
  "id_ubicacion": 45,
  "activo": true
}

Editing Projects

To modify an existing project:
1

Navigate to Project

Go to /proyectos/{id} to view the project detail page.
2

Click Edit

Click the Editar button to access /proyectos/{id}/edit.
3

Update Fields

Modify any field except the id_proyecto. All original validation rules apply.
4

Save Changes

Submit the form. The system performs a PUT request to /proyectos/{id} and reloads relationships:
$proyecto->update($request->all());
$proyecto->load(['estado_proyecto', 'ubicacion.ciudad.departamento.pais']);

Activating/Deactivating Projects

Toggle project visibility without editing:
PUT /proyectos/{id}/toggle-activo
This flips the activo boolean:
$proyecto->activo = !$proyecto->activo;
$proyecto->save();
Inactive projects are hidden from the sales catalog but remain accessible to administrators.

Deleting Projects

Projects can only be deleted if they have no associated towers. The system checks:
if ($proyecto->torres()->count() > 0) {
    return back()->with('error', 'Cannot delete project with towers');
}
To delete a project with structure, first remove all towers, floors, and units.

Troubleshooting

Common Errors

Error: “La ubicación del proyecto es obligatoria”
  • Cause: No location selected
  • Fix: Ensure locations are configured at /ubicacion
Error: “La fecha de finalización debe ser posterior a la fecha de inicio”
  • Cause: End date is before start date
  • Fix: Adjust dates so fecha_finalizacion >= fecha_inicio
Error: “El proyecto no tiene fecha de inicio o plazo configurado”
  • Cause: Missing required dates for payment calculation
  • Fix: Set both fecha_inicio and plazo_cuota_inicial_meses

Next Steps

Managing Properties

Learn how to configure towers, units, and property types for your project.

Technical Reference

  • Controller: app/Http/Controllers/Admin/ProyectoController.php
  • Model: app/Models/Proyecto.php
  • Views: resources/js/Pages/Admin/Proyectos/Create.vue, Edit.vue, Show.vue
  • Routes: routes/web.php:65-75
  • Table: proyectos with foreign keys to estados, ubicaciones

Build docs developers (and LLMs) love