servicioslineaonce / starter-kit
Servicio Linea Once starter kit for Laravel, Inertia, Vue, React, MUI, PrimeVue, Ziggy, and Tailwind CSS.
Package info
github.com/servicios-linea-once/starter-kit
pkg:composer/servicioslineaonce/starter-kit
Requires
- php: ^8.3
- bacon/bacon-qr-code: ^3.1
- illuminate/console: ^13.0
- illuminate/filesystem: ^13.0
- illuminate/support: ^13.0
- pragmarx/google2fa: ^9.0
This package is auto-updated.
Last update: 2026-05-20 20:10:05 UTC
README
Starter kit instalable para Laravel que crea una base moderna con frontend, rutas, layouts, internacionalizacion y autenticacion lista para usar.
El paquete registra el comando:
php artisan kitlauncher:install
Con ese comando puedes elegir entre presets Inertia o Livewire, instalar autenticacion completa y preparar las dependencias Composer/NPM del proyecto.
Version actual:
1.0.0Paquete Composer:servicioslineaonce/starter-kit
Contenido
- Descripcion
- Caracteristicas
- Presets disponibles
- Requisitos
- Instalacion
- Uso rapido
- Opciones del comando
- Que archivos instala
- Autenticacion
- Two-Factor Authentication
- Internacionalizacion
- Flujo recomendado despues de instalar
- Cambiar de preset
- Estructura del paquete
- Crear un nuevo preset
- Troubleshooting
- Desarrollo
- Licencia
Descripcion
servicioslineaonce/starter-kit evita repetir el mismo scaffolding cada vez que se inicia una aplicacion Laravel. El instalador copia archivos base, actualiza composer.json, actualiza package.json, configura Vite, registra middleware y opcionalmente instala un sistema de autenticacion completo.
Esta pensado para proyectos nuevos o proyectos donde quieres reemplazar el frontend inicial por uno de los presets soportados.
El objetivo es dejar una aplicacion con:
- Rutas web iniciales.
- Pantalla de bienvenida.
- Dashboard inicial.
- Layout principal.
- Cambio de idioma entre espanol e ingles.
- Frontend con Vite y Tailwind CSS 4.
- Presets UI listos para desarrollar.
- Autenticacion opcional.
- Verificacion de email.
- Perfil de usuario.
- Cambio de password.
- Eliminacion de cuenta.
- Cierre de otras sesiones.
- Autenticacion de dos factores con TOTP.
- Tests feature para flujos de auth.
Caracteristicas
- Comando de instalacion interactivo.
- Instalador bilingue en
enyes. - Soporte para modo no interactivo.
- Presets separados por stack: Inertia y Livewire.
- Actualizacion automatica de dependencias Composer.
- Actualizacion automatica de dependencias NPM.
- Copia de stubs por capas: base + preset.
- Registro automatico de middleware en
bootstrap/app.php. - Limpieza de archivos obsoletos al usar
--force. - Auth propia sin depender de Fortify.
- 2FA TOTP con QR y codigos de recuperacion.
- Traducciones base en
lang/esylang/en.
Presets disponibles
| UI | Stack | Frontend | Backend |
|---|---|---|---|
primevue |
Inertia | Vue 3, PrimeVue, Ziggy, Tailwind CSS 4 | Controllers + Inertia |
naive |
Inertia | Vue 3, Naive UI, Ziggy, Tailwind CSS 4 | Controllers + Inertia |
react |
Inertia | React, MUI, componentes UI, Ziggy, Tailwind CSS 4 | Controllers + Inertia |
wireui |
Livewire | Blade, Livewire, WireUI, Tailwind CSS 4 | Controllers + Livewire |
PrimeVue
Preset Inertia + Vue 3 con PrimeVue.
Dependencias principales:
@inertiajs/vue3@inertiajs/vite@primeuix/themesprimeiconsprimevuevueziggy-js@vitejs/plugin-vue
Incluye:
resources/js/app.jsresources/js/Pages/Welcome.vueresources/js/Pages/Dashboard.vueresources/js/Layouts/AppLayout.vue- componentes compartidos
- preset visual en
resources/js/presets - estilos extra en
resources/css/theme-effects.css
Naive UI
Preset Inertia + Vue 3 con Naive UI.
Dependencias principales:
@inertiajs/vue3@inertiajs/vite@lucide/vuenaive-uivfontsvueziggy-js@vitejs/plugin-vue
Incluye:
- providers globales de Naive UI
- tema oscuro base
- componentes de formulario
- selector de idioma
- paginas Inertia para welcome, dashboard y auth
React + MUI
Preset Inertia + React con Material UI y componentes propios.
Dependencias principales:
@inertiajs/react@inertiajs/vitereactreact-dom@mui/material@mui/icons-material@emotion/react@emotion/styledlucide-reactclass-variance-authorityclsxtailwind-mergeziggy-js@vitejs/plugin-react
Incluye componentes base:
ButtonInputLabelCheckboxCardBadgeAlertTextarea
Tambien incluye helpers en:
resources/js/lib/i18n.jsx
resources/js/lib/muiTheme.js
resources/js/lib/utils.js
WireUI
Preset Livewire + WireUI para aplicaciones Blade.
Dependencias principales:
livewire/livewirewireui/wireui@tailwindcss/forms
Incluye:
- layouts Blade
- paginas Blade
- componentes Livewire para auth
- vistas Livewire
- configuracion WireUI
- Vite sin Inertia
Cuando instalas wireui, el comando elimina el middleware de Inertia si estaba registrado anteriormente.
Requisitos
- PHP
^8.3 - Laravel
^13.0 - Composer
- Node.js y NPM
- Base de datos configurada
- Proyecto Laravel con
composer.json,package.jsonybootstrap/app.php
Instalacion
Instala el paquete desde la raiz de tu proyecto Laravel:
composer require servicioslineaonce/starter-kit:^1.0 --dev
Si Composer muestra un error de minimum-stability (stable), el repositorio todavia no tiene un tag estable publicado para esa version. Mientras trabajas contra la rama main, instala explicitamente la version de desarrollo:
composer require "servicioslineaonce/starter-kit:^1.0@dev" --dev
Para desarrollo local desde este monorepo, registra el paquete como repositorio path y luego instalalo:
composer config repositories.servicioslineaonce path packages/kitlauncher/starter-kit composer require servicioslineaonce/starter-kit:^1.0 --dev
Laravel descubre automaticamente este service provider:
ServiciosLineaOnce\StarterKit\StarterKitServiceProvider::class
Despues de instalar el paquete, ejecuta el instalador:
php artisan kitlauncher:install
Tambien puedes instalar un preset directamente:
php artisan kitlauncher:install --lang=es --ui=primevue --auth --force --no-interaction
Al terminar, sincroniza dependencias y compila los assets:
composer install npm install php artisan migrate npm run build
Uso rapido
Instalacion interactiva
php artisan kitlauncher:install
El asistente pregunta:
- Idioma del instalador.
- Stack:
InertiaoLivewire. - UI compatible con el stack.
- Si quieres instalar autenticacion.
- Si quieres sobrescribir archivos existentes.
- Si quieres ejecutar comandos posteriores.
Instalacion no interactiva
PrimeVue con autenticacion:
php artisan kitlauncher:install --lang=es --ui=primevue --auth --force --no-interaction
Naive UI con autenticacion:
php artisan kitlauncher:install --lang=es --ui=naive --auth --force --no-interaction
React + MUI con autenticacion:
php artisan kitlauncher:install --lang=es --ui=react --auth --force --no-interaction
Livewire + WireUI con autenticacion:
php artisan kitlauncher:install --lang=es --ui=wireui --auth --force --no-interaction
Solo frontend, sin auth:
php artisan kitlauncher:install --lang=es --ui=primevue --force --no-interaction
Opciones del comando
| Opcion | Descripcion |
|---|---|
--lang=en |
Muestra los mensajes del instalador en ingles. |
--lang=es |
Muestra los mensajes del instalador en espanol. |
--ui=primevue |
Instala Inertia + Vue + PrimeVue. |
--ui=naive |
Instala Inertia + Vue + Naive UI. |
--ui=react |
Instala Inertia + React + MUI. |
--ui=wireui |
Instala Livewire + WireUI. |
--auth |
Instala rutas, controladores, requests, vistas y tests de autenticacion. |
--force |
Sobrescribe archivos existentes y limpia archivos administrados por presets anteriores. |
--no-interaction |
Ejecuta el comando sin preguntas. Si no indicas --ui, usa primevue. |
Ejemplo para CI o scripts:
php artisan kitlauncher:install --lang=en --ui=react --auth --force --no-interaction
Que archivos instala
El comando puede crear o modificar archivos en estas rutas:
app/Http/Controllers/Auth
app/Http/Controllers/Settings
app/Http/Middleware
app/Http/Requests/Auth
app/Http/Requests/Settings
app/Livewire
app/Models/User.php
app/Support/Auth
bootstrap/app.php
composer.json
config/servicios-linea-once.php
database/migrations
lang/en/kit.php
lang/es/kit.php
package.json
resources/css
resources/js
resources/views
routes/auth.php
routes/web.php
tests/Feature/Auth
tests/Feature/ExampleTest.php
vite.config.js
Sin --force, los archivos existentes se omiten para proteger cambios del proyecto.
Con --force, el comando sobrescribe stubs administrados por el starter kit y limpia rutas frontend obsoletas, por ejemplo:
resources/js/Components
resources/js/Layouts
resources/js/Pages
resources/js/lib
resources/js/presets
resources/views/layouts
resources/views/pages
resources/css/theme-effects.css
tests/Feature/ExampleTest.php
Autenticacion
Al usar --auth, el starter kit instala un flujo completo de autenticacion web.
Incluye:
- Registro de usuario.
- Login.
- Logout.
- Remember me.
- Recuperacion de password.
- Reset de password por token.
- Verificacion de email.
- Reenvio de email de verificacion.
- Confirmacion de password.
- Dashboard protegido.
- Perfil de usuario.
- Actualizacion de informacion personal.
- Cambio de password.
- Cierre de otras sesiones.
- Eliminacion de cuenta.
- Tests feature para los flujos principales.
Rutas principales:
GET /login
POST /login
POST /logout
GET /register
POST /register
GET /forgot-password
POST /forgot-password
GET /reset-password/{token}
POST /reset-password
GET /verify-email
GET /verify-email/{id}/{hash}
POST /email/verification-notification
GET /confirm-password
POST /confirm-password
GET /dashboard
GET /settings/profile
PATCH /settings/profile
DELETE /settings/profile
PUT /settings/password
DELETE /settings/sessions
La configuracion queda en:
config/servicios-linea-once.php
Variables disponibles:
SLO_AUTH_REGISTRATION=true SLO_AUTH_TWO_FACTOR=true
Two-Factor Authentication
El starter kit incluye 2FA basado en TOTP.
Paquetes usados:
pragmarx/google2fabacon/bacon-qr-code
Incluye:
- Activacion de 2FA desde perfil.
- Confirmacion con codigo TOTP.
- QR para apps autenticadoras.
- Codigos de recuperacion.
- Regeneracion de codigos.
- Challenge de segundo factor durante login.
- Middleware para completar el challenge antes de acceder.
Rutas principales:
GET /two-factor-challenge
POST /two-factor-challenge
DELETE /two-factor-challenge
POST /settings/two-factor
POST /settings/two-factor/confirm
DELETE /settings/two-factor
POST /settings/two-factor/recovery-codes
Migracion instalada:
database/migrations/2026_01_01_000100_add_two_factor_columns_to_users_table.php
Configuracion base:
return [ 'auth' => [ 'registration' => env('SLO_AUTH_REGISTRATION', true), 'two_factor' => [ 'enabled' => env('SLO_AUTH_TWO_FACTOR', true), 'required' => false, 'issuer' => env('APP_NAME', 'Servicio Linea Once'), 'window' => 1, 'recovery_codes' => 8, ], ], ];
Internacionalizacion
El paquete trabaja con dos idiomas:
esen
Idioma del instalador
El idioma del comando se controla con:
php artisan kitlauncher:install --lang=es php artisan kitlauncher:install --lang=en
Si no pasas --lang y el comando es interactivo, el instalador pregunta:
Choose installer language / Elige el idioma del instalador
Idioma de la aplicacion
El scaffolding instala:
app/Http/Middleware/SetLocale.php
lang/es/kit.php
lang/en/kit.php
Tambien registra la ruta:
POST /locale/{locale}
El middleware lee el idioma desde la sesion:
$locale = $request->session()->get('locale', config('app.locale', 'es'));
Los presets Inertia incluyen helpers frontend:
resources/js/lib/i18n.js
resources/js/lib/i18n.jsx
Flujo recomendado despues de instalar
El instalador puede modificar composer.json y package.json segun el preset elegido. Por eso, despues de ejecutarlo, corre:
composer install npm install php artisan migrate npm run build
Para iniciar el entorno de desarrollo:
npm run dev php artisan serve
Para validar el proyecto:
php artisan test
Cambiar de preset
Puedes cambiar de preset ejecutando el instalador otra vez con --force.
De PrimeVue a React:
php artisan kitlauncher:install --lang=es --ui=react --auth --force --no-interaction composer install npm install npm run build
De Inertia a WireUI:
php artisan kitlauncher:install --lang=es --ui=wireui --auth --force --no-interaction composer install npm install npm run build
Al cambiar de preset, el comando:
- Actualiza dependencias Composer.
- Actualiza dependencias NPM.
- Elimina dependencias UI obsoletas conocidas.
- Limpia archivos frontend administrados.
- Cambia
vite.config.js. - Elimina
HandleInertiaRequestssi el preset nuevo no usa Inertia.
Estructura del paquete
starter-kit/
|-- src/
| |-- StarterKitServiceProvider.php
| `-- Console/
| `-- InstallCommand.php
|-- stubs/
| |-- base/
| | |-- install/
| | |-- auth/
| | `-- middleware/
| `-- presets/
| |-- primevue/
| |-- naive/
| |-- react/
| `-- wireui/
|-- composer.json
|-- LICENSE
`-- README.md
StarterKitServiceProvider
Registra el comando cuando Laravel corre en consola:
$this->commands([ InstallCommand::class, ]);
InstallCommand
Contiene la logica principal:
- definicion de presets UI
- validacion de opciones
- wizard bilingue
- actualizacion de
composer.json - actualizacion de
package.json - copia de stubs
- registro de middleware
- instalacion de auth
- limpieza de archivos obsoletos
- ejecucion opcional de comandos posteriores
stubs/base
Archivos comunes para todos los presets:
- rutas base
- middleware de locale
- middleware Inertia
- configuracion de auth
- controladores
- requests
- modelo
User - soporte de 2FA
- migracion de 2FA
- tests de auth
- traducciones
stubs/presets
Archivos especificos por UI:
stubs/presets/primevue
stubs/presets/naive
stubs/presets/react
stubs/presets/wireui
Cada preset puede tener:
install: archivos instalados siempre.auth: archivos instalados solo con--auth.
Crear un nuevo preset
Los presets se registran en InstallCommand::UI_PRESETS.
Pasos recomendados:
- Crear una carpeta para el preset:
stubs/presets/{nombre}/install
- Agregar los archivos frontend necesarios:
resources/css/app.css
resources/js/app.js
resources/js/Pages
resources/js/Layouts
resources/js/Components
resources/views/app.blade.php
vite.config.js
- Si el preset tiene pantallas de auth propias, crear:
stubs/presets/{nombre}/auth
- Registrar el preset en
UI_PRESETS:
'nombre' => [ 'label' => 'Nombre UI', 'stack' => 'inertia', 'extension' => 'js', 'inertia' => true, 'composer' => self::INERTIA_COMPOSER_REQUIREMENTS, 'dependencies' => [ // npm dependencies ], 'devDependencies' => [ // npm dev dependencies ], ],
- Probar instalacion:
php artisan kitlauncher:install --lang=es --ui=nombre --auth --force --no-interaction
composer install
npm install
php artisan migrate
npm run build
php artisan test
Troubleshooting
Composer no encuentra una version compatible con minimum-stability (stable)
Composer solo considera estable una version que existe como tag Git, por ejemplo v1.0.0. Si el paquete solo existe en la rama main, Composer lo resuelve como dev-main y una aplicacion con minimum-stability: stable lo rechaza.
Para usar la rama actual:
composer require "servicioslineaonce/starter-kit:^1.0@dev" --dev
Para publicar una version estable:
git tag v1.0.0 git push origin v1.0.0
Despues actualiza Packagist o espera el webhook del repositorio.
Class "Livewire\LivewireServiceProvider" not found
El proyecto tiene composer.json actualizado, pero vendor todavia no tiene las dependencias nuevas.
Solucion:
composer install php artisan optimize:clear
Class "Inertia\Middleware" not found
Suele ocurrir si la aplicacion quedo con middleware Inertia registrado, pero ya no tiene instalado inertiajs/inertia-laravel.
Solucion al usar WireUI:
php artisan kitlauncher:install --lang=es --ui=wireui --auth --force --no-interaction composer install php artisan optimize:clear
Tailwind no encuentra @tailwindcss/forms
El preset WireUI necesita instalar dependencias NPM.
npm install npm run build
Vite no encuentra paginas Inertia
Verifica que el preset y la extension coincidan:
- Vue usa
resources/js/app.jsy paginas.vue. - React usa
resources/js/app.jsxy paginas.jsx. - WireUI no usa paginas Inertia.
Si cambiaste de preset, reinstala con --force:
php artisan kitlauncher:install --lang=es --ui=react --auth --force --no-interaction npm install npm run build
La ruta /dashboard no existe
Instala auth con --auth. El dashboard protegido se registra dentro de routes/auth.php.
php artisan kitlauncher:install --lang=es --ui=primevue --auth --force --no-interaction
El instalador omite archivos existentes
Es el comportamiento esperado cuando no usas --force.
Para sobrescribir los archivos administrados por el starter kit:
php artisan kitlauncher:install --lang=es --ui=primevue --auth --force
No se ven cambios despues de instalar
Limpia caches y recompila:
php artisan optimize:clear npm run build
Desarrollo
Comandos utiles para mantener el paquete:
composer validate --no-check-publish php -l src/StarterKitServiceProvider.php php -l src/Console/InstallCommand.php
Validacion recomendada dentro de una app Laravel de prueba:
php artisan kitlauncher:install --lang=es --ui=primevue --auth --force --no-interaction
composer install
npm install
php artisan migrate
npm run build
php artisan test
Repetir la validacion para cada preset:
php artisan kitlauncher:install --lang=es --ui=naive --auth --force --no-interaction php artisan kitlauncher:install --lang=es --ui=react --auth --force --no-interaction php artisan kitlauncher:install --lang=es --ui=wireui --auth --force --no-interaction
Licencia
Este paquete esta publicado bajo licencia MIT. Ver LICENSE.