Este proyecto es una aplicación de gestión de posts desarrollada con Laravel y Livewire. Actualmente cuenta con las siguientes características:
- Sistema de autenticación mediante Jetstream
- CRUD completo de Posts (Crear, Leer, Actualizar, Eliminar)
- Carga de imágenes para los posts
- Búsqueda y filtrado de posts
- Paginación de resultados
- Ordenamiento de posts por diferentes criterios
- ShowPosts: Visualización y gestión de la lista de posts
- CreatePost: Formulario para la creación de nuevos posts
- EditPost: Formulario para la edición de posts existentes
- Laravel
- Livewire
- Jetstream
- MySQL
- Tailwind CSS
Se ha completado exitosamente la migración a Laravel 10 con Jetstream funcionando correctamente. Los cambios realizados incluyen:
Se crearon todos los componentes Blade necesarios para Jetstream:
- Componentes de formulario:
jet-input,jet-input-error,jet-label,jet-checkbox,jet-validation-errors - Componentes de sección:
jet-action-section,jet-section-title,jet-section-border - Componentes de botones:
jet-button,jet-secondary-button,jet-danger-button,jet-action-message - Componentes modales:
jet-dialog-modal,jet-modal - Componentes de autenticación:
jet-authentication-card,jet-authentication-card-logo
Para habilitar la característica de equipos en Jetstream:
- Modelos:
Team,Membership,TeamInvitation - Migraciones: tablas
teams,team_user,team_invitations - Controladores:
CurrentTeamController,TeamController - Vistas: creación y visualización de equipos
- Rutas: gestión completa de equipos
- Configuración: habilitada la característica de equipos en
config/jetstream.php
La migración a Laravel 11 se completó con éxito, implementando los siguientes cambios:
-
Actualización de dependencias:
- Laravel Framework de 10.x a 11.x
- Laravel Jetstream de 2.x a 3.x
- Laravel Sanctum de 2.x a 3.x
- Otras dependencias de desarrollo
-
Correcciones en archivos de configuración:
- Modificación del archivo
bootstrap/app.phppara usar el método$app->configure() - Actualización de migraciones para nuevos tipos de datos
- Modificación del archivo
-
Soporte para PHP 8.2:
- Verificación de compatibilidad con PHP 8.2
La migración a Laravel 12 se completó exitosamente, implementando:
-
Actualización de dependencias:
- Laravel Framework de 11.x a 12.x
- Laravel Jetstream de 3.x a 5.x
- Laravel Sanctum de 3.x a 4.x
- PHPUnit de 10.x a 11.x
-
Correcciones en archivos de configuración:
- Modificación de
bootstrap/app.phppara la estructura de Laravel 12 - Actualización de archivos de rutas sin usar
defineWebRoutesydefineApiRoutes - Actualización del formato de PHPUnit en
phpunit.xml
- Modificación de
-
Correcciones en migraciones:
- Compatibilidad con SQLite para pruebas
- Eliminación de migraciones duplicadas
Se migró exitosamente de Livewire 2.x a 3.x, implementando:
-
Actualización de componentes:
- Uso de atributos PHP 8 para validación:
#[Rule('required')] - Reemplazo de
$queryStringpor atributos#[Url] - Definición de listeners con
#[On('evento')] - Reemplazo de emisión de eventos (
$this->emit()→$this->dispatch())
- Uso de atributos PHP 8 para validación:
-
Componentes actualizados:
- ShowPosts: Componente principal para visualizar posts
- CreatePost: Formulario para crear posts
- EditPost: Formulario para editar posts
- Componentes de perfil:
- UpdatePasswordForm
- LogoutOtherBrowserSessionsForm
- DeleteUserForm
- UpdateProfileInformationForm
- TwoFactorAuthenticationForm
-
Sintaxis de vistas actualizada:
- De
@livewire('componente')a<livewire:componente /> - De
wire:modelawire:model.livepara actualizaciones en tiempo real
- De
- Actualizar pruebas para utilizar atributos PHPUnit en lugar de anotaciones de doc-comment
- Corregir errores de propiedad
$iden los componentes de perfil de Jetstream - Actualizar vistas de componentes de Jetstream para ser compatibles con Livewire 3
- Implementar caché de vistas para mejorar el rendimiento
- Optimizar consultas a base de datos en componentes ShowPosts
- Actualizar los componentes visuales a Tailwind CSS v3
- Mejorar la experiencia móvil
- Optimizar configuración de Docker para desarrollo local
- Eliminar atributos obsoletos en docker-compose.yml
-
Corregir errores en pruebas automatizadas:
# Actualizar pruebas para usar atributos PHPUnit php artisan test:migrate-attributes # Ejecutar pruebas para verificar php artisan test
-
Revisar componentes de Livewire:
- Verificar compatibilidad de todos los componentes con Livewire 3
- Asegurar que todos los eventos están correctamente implementados
-
Validar soporte para PHP 8.2+:
- Pruebas en diferentes versiones de PHP
- Asegurar compatibilidad con tipado estricto
Este proyecto incluye un plan completo para actualizar de Laravel 8 a Laravel 12, siguiendo estos pasos:
- ✅ Actualización de Laravel 8 a Laravel 9
- ✅ Actualización de Laravel 9 a Laravel 10
- 🔄 Actualización de Laravel 10 a Laravel 11
- 🔄 Actualización de Laravel 11 a Laravel 12
- 🔄 Actualización de la configuración Docker
Cada paso de actualización incluye scripts automatizados que facilitan el proceso:
# Ejecutar las pruebas antes de actualizar
php artisan test
# Actualizar a Laravel 9
bash scripts/update-to-laravel9.sh
# Actualizar a Laravel 10
bash scripts/update-to-laravel10.sh
# Actualizar a Laravel 11
bash scripts/update-to-laravel11.sh
# Actualizar a Laravel 12
bash scripts/update-to-laravel12.sh
# Actualizar configuración Docker
bash scripts/update-docker.shPara más detalles, consulta el archivo UPGRADE-PLAN.md.
- Docker
- Docker Compose
-
Clonar este repositorio
git clone [url-del-repositorio] cd [nombre-del-repositorio] -
Ejecutar el script de inicio (esto configurará todo el entorno Docker)
./docker-compose-up.sh
-
Acceder a la aplicación
http://localhost:8000
El proyecto está configurado con los siguientes servicios:
- app: Servicio PHP que ejecuta la aplicación Laravel
- db: Servicio MySQL para la base de datos
- nginx: Servidor web para servir la aplicación
- Iniciar los contenedores:
docker-compose up -d - Detener los contenedores:
docker-compose down - Ejecutar comandos en el contenedor:
docker-compose exec app [comando] - Ver logs:
docker-compose logs -f
- PHP >= 8.2
- Composer
- Node.js y NPM
- MySQL
- Clonar el repositorio
- Instalar dependencias PHP:
composer install
- Configurar el archivo
.envcon las credenciales de tu base de datos - Generar clave de aplicación:
php artisan key:generate
- Ejecutar migraciones:
php artisan migrate
- Instalar dependencias de frontend:
npm install && npm run dev - Iniciar el servidor:
php artisan serve
Este proyecto utiliza la licencia MIT.
Hemos completado la migración del proyecto a Laravel 12, que incluyó estos pasos:
-
Actualización de dependencias:
- Laravel Framework de 11.x a 12.x
- Laravel Jetstream de 3.x a 5.x
- Laravel Sanctum de 3.x a 4.x
- Livewire de 2.x a 3.x
- PHPUnit de 10.x a 11.x
- Otras dependencias de desarrollo
-
Correcciones en archivos de configuración:
- Modificación del archivo
bootstrap/app.phppara usar la estructura de Laravel 12 - Actualización de archivos de rutas (
routes/web.phpyroutes/api.php) para eliminar el uso dedefineWebRoutesydefineApiRoutes
- Modificación del archivo
-
Cuestiones pendientes:
- Migración de componentes Livewire de la versión 2 a la versión 3
- Corrección de pruebas que fallan debido a los cambios en Livewire y Jetstream
- Requisitos mínimos: PHP 8.2+
- UUIDs: Ahora usa UUIDv7 como estándar para IDs generados
- Carbon 3: Eliminación del soporte para Carbon 2.x
- Validación de imágenes: Las validaciones de imágenes ya no permiten SVG por defecto
- Container: El contenedor ahora respeta los valores predeterminados de las propiedades de clase
- Esquemas de base de datos: Mejoras en inspección y operaciones multi-esquema
Para más detalles sobre los cambios en Laravel 12, consulta la guía oficial de actualización.
Hemos completado la migración de componentes Livewire a la versión 3. Los cambios principales incluyen:
-
Actualización de propiedades y validación:
- Uso de atributos en PHP 8 para definir reglas de validación con
#[Rule('required')] - Reemplazo de
$queryStringpor atributos#[Url] - Definición de listeners con atributo
#[On('evento')]
- Uso de atributos en PHP 8 para definir reglas de validación con
-
Actualización de eventos:
- Reemplazo de
$this->emit()por$this->dispatch() - Reemplazo de
$this->emitTo()por$this->dispatch()->to() - Cambio en la estructura de los listeners de eventos
- Reemplazo de
-
Actualización en plantillas Blade:
- Cambio de
@livewire('componente')a<livewire:componente /> - Actualización de
wire:modelawire:model.livepara actualización en tiempo real - Cambio de
wire:model.deferawire:model - Actualización de
$emita$dispatchen JavaScript
- Cambio de
- ShowPosts: Componente principal para visualizar y gestionar posts
- CreatePost: Formulario para crear nuevos posts
- EditPost: Formulario para editar posts existentes
También se actualizaron los scripts JavaScript para usar el nuevo sistema de eventos de Livewire 3:
document.addEventListener('livewire:initialized', () => {
Livewire.on('alert', (event) => {
// Código del evento
});
});Para más información sobre Livewire 3, consulta la documentación oficial.
- ✅ Completar la migración de componentes Livewire a la versión 3
- Optimizar el rendimiento de la aplicación
- Implementar pruebas automatizadas para los componentes Livewire 3
- Añadir nuevas funcionalidades como comentarios y categorías para los posts