Saltar al contenido principal

Práctica 401. Gestor de tareas con Laravel.

Se desea implementar una aplicación web utilizando Laravel que permita a los usuarios registrarse, iniciar sesión y gestionar sus tareas personales. Cada usuario podrá crear, editar, listar y eliminar tareas. Además, se deberá implementar validación de datos y usar vistas Blade para mostrar la información en el navegador.

Requisitos funcionales

  1. Autenticación de usuarios
    • Registro de usuarios con nombre, email y contraseña.
    • Inicio de sesión y cierre de sesión.
    • Solo los usuarios autenticados pueden acceder al gestor de tareas.
  2. Gestión de tareas
    • Listado de tareas del usuario autenticado.
    • Creación de nuevas tareas con título, descripción y estado (pendiente o completada).
    • Edición de tareas existentes.
    • Eliminación de tareas.
  3. Interfaz web con vistas Blade
    • Una vista principal (layout.blade.php) con cabecera y menú de navegación.
    • Vistas para el registro, login y gestión de tareas (index, create, edit).
    • Uso de formularios Blade para enviar datos.

Pasos de la práctica

1. Instalación y configuración

Crear un nuevo proyecto con Composer:

composer create-project laravel/laravel gestor-tareas

Configurar la base de datos en el archivo .env.

2. Autenticación

Instalar y configurar Laravel Breeze o Jetstream para generar el sistema de autenticación:

composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev
php artisan migrate

3. Creación del modelo y migración de tareas

Crear el modelo y la migración:

php artisan make:model Tarea -m

En la migración, definir los campos de la tabla tareas:

$table->id();
$table->string('titulo');
$table->text('descripcion')->nullable();
$table->boolean('completada')->default(false);
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->timestamps();

4. Controlador y rutas de tareas

Crear el controlador:

php artisan make:controller TareaController --resource

Definir las rutas en routes/web.php:

use App\Http\Controllers\TareaController;

Route::middleware(['auth'])->group(function () {
Route::resource('tareas', TareaController::class);
});

5. Implementación de las vistas

  • Crear una plantilla base resources/views/layouts/app.blade.php.
  • Crear las vistas para listar (index.blade.php), crear (create.blade.php) y editar (edit.blade.php) tareas.
  • Usar formularios Blade (<form>) con las directivas @csrf y @method.

Ejemplo de formulario en create.blade.php:

<form action="{{ route('tareas.store') }}" method="POST">
@csrf
<label for="titulo">Título:</label>
<input type="text" name="titulo" required>

<label for="descripcion">Descripción:</label>
<textarea name="descripcion"></textarea>

<button type="submit">Guardar</button>
</form>

6. Validación

Validar los datos en el controlador:

$request->validate([
'titulo' => 'required|string|max:255',
'descripcion' => 'nullable|string',
]);

7. Ejecución de la aplicación

Iniciar el servidor de desarrollo:

php artisan serve

Acceder a la aplicación en http://localhost:8000.