Comprobar el flujo de datos-Diseño de arquitectura-Prototipo funcional del flujo de datos
Comprobar el flujo de datos - Diseño de arquitectura - Prototipo funcional del flujo de datos
agosto 28, 2026
Lo que estás describiendo es una excelente forma de empezar el desarrollo: primero comprobar el flujo de datos y después construir la interfaz.
Para esta primera etapa podemos hacer una guía extremadamente comprimida:
Base de datos → Modelo → Controlador → Vista Blade
Sin CSS, sin Bootstrap, sin JavaScript, sin formularios todavía.
El objetivo es únicamente comprobar:
BD
↓
Model
↓
Controller
↓
View
↓
mostrar datos¿Cómo se llama esta etapa?
Lo que describes normalmente se relaciona con varias actividades de desarrollo:
Análisis de requisitos → qué necesita hacer el sistema.
Modelado de datos → qué tablas, campos y relaciones necesitamos.
Diseño de base de datos → estructura de las tablas.
Diseño de arquitectura → cómo se comunican las diferentes partes.
Prototipo / prueba de concepto (PoC) → comprobar rápidamente que el flujo funciona.
Para tu curso, yo lo llamaría:
Análisis y diseño previo al desarrollo
Y para este ejercicio concreto:
Prototipo funcional del flujo de datos
Es decir, antes de hacer una pantalla bonita, comprobamos que Laravel puede llevar los datos desde MySQL hasta Blade.
Guía mínima — CRUD Pasteles
0. Inicializar Git (control de versiones)
Antes de empezar a codificar, es buena práctica inicializar un repositorio Git para llevar un historial de todos los cambios que hagamos.
# Crear una carpeta para el proyecto
mkdir pasteles-app
cd pasteles-app
# Inicializar repositorio Git
git init
# Crear archivo .gitignore para ignorar archivos innecesarios
echo "/vendor/
/node_modules/
.env
.DS_Store
/storage/*.key
/public/storage
/storage/*.log
.idea/
.vscode/
Homestead.json
Homestead.yaml
*.sqlite
*.sqlite-journal
" > .gitignore1. Crear proyecto Laravel
composer create-project laravel/laravel .
# O si prefieres crear el proyecto en una carpeta nueva:
composer create-project laravel/laravel pasteles-app
cd pasteles-app📌 Guardar primer commit — Proyecto iniciado
git add .
git commit -m "feat: iniciar proyecto Laravel con estructura base"Configurar .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pasteles_db
DB_USERNAME=root
DB_PASSWORD=Crear la base de datos:
CREATE DATABASE pasteles_db;2. Crear la migración
php artisan make:migration create_pasteles_tableLa estructura de datos será:
pasteles
-------------------------
id
nombre
sabor
precio
disponible
descripcion
created_at
updated_at
deleted_atMigración mínima:
Schema::create('pasteles', function (Blueprint $table) {
$table->id();
$table->string('nombre', 100);
$table->string('sabor', 50);
$table->decimal('precio', 8, 2);
$table->boolean('disponible')->default(true);
$table->text('descripcion')->nullable();
$table->timestamps();
$table->softDeletes();
});Ejecutar:
php artisan migrate📌 Guardar commit — Migración creada
git add database/migrations/*.php
git commit -m "feat: crear migración de tabla pasteles"3. Verificar la estructura
En MySQL:
USE pasteles_db;
DESCRIBE pasteles;También:
SHOW TABLES;Y:
SELECT * FROM pasteles;Aquí todavía no necesitamos Laravel.
Primero comprobamos:
MySQL
↓
¿Existe la tabla?
↓
¿Tiene los campos correctos?4. Crear el modelo
php artisan make:model Pastelapp/Models/Pastel.php
class Pastel extends Model
{
use HasFactory, SoftDeletes;
protected $fillable = [
'nombre',
'sabor',
'precio',
'disponible',
'descripcion'
];
}Ahora:
MySQL
↑
│
Pastel
│
Modelo Eloquent📌 Guardar commit — Modelo creado
git add app/Models/Pastel.php
git commit -m "feat: crear modelo Pastel con SoftDeletes y fillable"5. Crear datos de prueba
Para esta primera prueba puedes introducir datos directamente en MySQL:
INSERT INTO pasteles
(nombre, sabor, precio, disponible, descripcion)
VALUES
('Pastel de Chocolate', 'Chocolate', 350.00, 1, 'Pastel tradicional'),
('Pastel Tres Leches', 'Vainilla', 400.00, 1, 'Pastel con tres leches'),
('Cheesecake de Fresa', 'Fresa', 450.00, 1, 'Cheesecake con fresa');Comprobar:
SELECT * FROM pasteles;6. Crear el controlador
php artisan make:controller PastelControllerapp/Http/Controllers/PastelController.php
Primero solamente:
namespace App\Http\Controllers;
use App\Models\Pastel;
class PastelController extends Controller
{
public function index()
{
$pasteles = Pastel::all();
return view('pasteles.index', compact('pasteles'));
}
}Aquí está la parte importante del ejercicio:
Pastel::all()
↓
$pasteles
↓
view()El controlador recibe los datos del modelo y los manda a la vista.
📌 Guardar commit — Controlador creado
git add app/Http/Controllers/PastelController.php
git commit -m "feat: crear PastelController con método index"7. Crear las rutas
routes/web.php
use App\Http\Controllers\PastelController;
// Ruta para listar todos los pasteles (READ - Index)
Route::get('/pasteles', [PastelController::class, 'index'])->name('pasteles.index');
// Ruta para mostrar el formulario de creación (CREATE - Create)
Route::get('/pasteles/create', [PastelController::class, 'create'])->name('pasteles.create');
// Ruta para almacenar un nuevo pastel (CREATE - Store)
Route::post('/pasteles', [PastelController::class, 'store'])->name('pasteles.store');
// Ruta para mostrar los detalles de un pastel (READ - Show)
Route::get('/pasteles/{pastel}', [PastelController::class, 'show'])->name('pasteles.show');
// Ruta para mostrar el formulario de edición (UPDATE - Edit)
Route::get('/pasteles/{pastel}/edit', [PastelController::class, 'edit'])->name('pasteles.edit');
// Ruta para actualizar un pastel (UPDATE - Update)
Route::put('/pasteles/{pastel}', [PastelController::class, 'update'])->name('pasteles.update');
// Ruta para eliminar un pastel (DELETE - Destroy)
Route::delete('/pasteles/{pastel}', [PastelController::class, 'destroy'])->name('pasteles.destroy');
// Ruta para restaurar un pastel eliminado (Restaurar)
Route::patch('/pasteles/{pastel}/restore', [PastelController::class, 'restore'])->name('pasteles.restore');📌 Guardar commit — Rutas creadas
git add routes/web.php
git commit -m "feat: agregar rutas CRUD para pasteles"8. Crear la vista mínima
Crear:
resources/views/pasteles/index.blade.php
Sin HTML elaborado:
@foreach($pasteles as $pastel)
{{ $pastel->id }}
{{ $pastel->nombre }}
{{ $pastel->sabor }}
{{ $pastel->precio }}
{{ $pastel->disponible }}
{{ $pastel->descripcion }}
<hr>
@endforeach📌 Guardar commit — Vista creada
git add resources/views/pasteles/
git commit -m "feat: crear vista index para listar pasteles"Y listo.
Abrir:
http://localhost:8000/pastelesEjecutando antes:
php artisan serveDeberías obtener algo parecido a:
1
Pastel de Chocolate
Chocolate
350
1
Pastel tradicional
--------------------------------
2
Pastel Tres Leches
Vainilla
400
1
Pastel con tres leches
--------------------------------
3
Cheesecake de Fresa
Fresa
450
1
Cheesecake con fresa🎯 ¿Qué acabamos de demostrar?
Este pequeño ejercicio demuestra todo el recorrido:
MYSQL
│
│ SELECT
▼
┌──────────────┐
│ MODELO │
│ Pastel │
└──────┬───────┘
│
Pastel::all()
│
▼
┌──────────────┐
│ CONTROLADOR │
│ index() │
└──────┬───────┘
│
$pasteles
│
▼
┌──────────────┐
│ BLADE │
│ index │
└──────────────┘
│
▼
DATOS EN PANTALLATodavía no existe CRUD. Y eso es intencional.
Primero:
✓ Base de datos
✓ Tabla
✓ Modelo
✓ Datos
✓ Controlador
✓ Ruta
✓ Vista
✓ Datos visiblesDespués podemos agregar Create, luego Read, Update y finalmente Delete.
📌 Commit final del prototipo
git add .
git commit -m "feat: completar prototipo funcional del flujo de datos"📌 Ver historial de commits
git log --onelineDeberías ver algo como:
a1b2c3d feat: completar prototipo funcional del flujo de datos
e4f5g6h feat: crear vista index para listar pasteles
i7j8k9l feat: agregar rutas CRUD para pasteles
m0n1o2p feat: crear PastelController con método index
q3r4s5t feat: crear modelo Pastel con SoftDeletes y fillable
u6v7w8x feat: crear migración de tabla pasteles
y9z0a1b feat: iniciar proyecto Laravel con estructura base📚 Resumen de comandos Git usados
| Comando | Descripción |
|---|---|
git init | Inicializa un repositorio Git en el proyecto |
git add . | Agrega todos los archivos modificados al área de staging |
git add <archivo> | Agrega un archivo específico |
git commit -m "mensaje" | Guarda los cambios con un mensaje descriptivo |
git log --oneline | Muestra el historial de commits resumido |
git status | Muestra el estado actual de los archivos |
git diff | Muestra las diferencias entre cambios |
Fases completas del curso
FASE 0 → Análisis y diseño
FASE 1 → Modelo de datos
FASE 2 → BD + Migración
FASE 3 → Modelo Eloquent
FASE 4 → Modelo → Controlador
FASE 5 → Controlador → Vista
FASE 6 → CRUD
FASE 7 → Validaciones
FASE 8 → Interfaz
FASE 9 → Mejoras📌 Crear rama para el prototipo (opcional)
Si quieres mantener el prototipo separado del desarrollo posterior:
# Crear y cambiar a una rama para el PoC
git checkout -b feature/prototipo-flujo-datos
# Cuando el prototipo esté listo, fusionar con la rama principal
git checkout main
git merge feature/prototipo-flujo-datosEso te da una ruta de desarrollo mucho más profesional que comenzar directamente haciendo el HTML del CRUD, y además tienes un historial completo de todos los cambios que has ido realizando.
Comentarios
Publicar un comentario