Qué es Weblabor Base
Qué recibes al comprarlo, sobre qué está construido y para qué no está hecho.
Weblabor Base es un kit inicial de Laravel. Lo compras una vez, lo clonas y construyes tu producto encima, en lugar de volver a escribir los primeros tres meses de un SaaS. Lee esto primero para saber qué ya está hecho y no construirlo dos veces.
Qué problema resuelve
Todo producto necesita el mismo principio: cuentas, inicio de sesión, un panel de administración, roles, planes y cobros, notificaciones, traducciones, un sitio público. Nada de eso es lo que hace distinto a tu producto, y todo tiene que funcionar antes que la parte que sí lo hace.
Weblabor Base trae ese principio ya construido, ya probado y ya conectado entre sí: una notificación sabe de web push, un plan sabe de Stripe, una fecha sabe la zona horaria de la persona. Tú agregas tus propios modelos y pantallas con las mismas convenciones.
Qué trae
Todo lo de abajo está en el repositorio el día que lo clonas. Las partes opcionales empiezan apagadas y esperan su bandera; la guía enlazada en cada punto te dice cómo encenderla y cómo usarla.
Cuentas e inicio de sesión
- Registro e inicio de sesión con correo, número de teléfono, nombre de usuario o cualquier combinación de los tres, en un paso o en dos. Ve Configura el inicio de sesión y el registro.
- La propiedad de un correo o un teléfono se verifica con un código de un solo uso (OTP). Los códigos por correo salen por tu mailer; los de teléfono van por SMS con Amazon SNS, o por SMS o llamada de voz con Telnyx. La misma verificación está disponible dentro de cualquier formulario con los componentes
<x-email-input>y<x-phone-input>. Ve Verifica correo y teléfono. - Recuperación de contraseña por correo, y un cambio de contraseña forzado para las cuentas que un administrador creó sin una.
- Una página de cuenta en
/accountdonde la persona edita nombre, correo, teléfono, usuario, idioma y zona horaria, y una lista de los dispositivos con sesión abierta, cada uno de los cuales se puede desconectar. Ve Tu área de cuenta. - Un PIN de seguridad opcional de cuatro dígitos, y un trait que hace que cualquier acción de Livewire pida el PIN o la contraseña antes de ejecutarse. Ve El PIN de seguridad y Protege acciones sensibles.
- Los administradores pueden actuar como cualquier persona y bloquear a cualquier persona.
Panel de administración
- Un panel en
/adminconstruido con Laravel Front: usuarios, roles, avisos, el registro de actividad, el registro de comunicaciones, seguimiento, categorías y los eventos de webhook de Stripe, cada uno una clase de recurso sin controlador ni vista que escribir. Ve El panel de administración y Auditoría y eventos de webhook. - Roles y permisos sobre Spatie Permission. Al sembrar se genera un permiso
create,retrieve,updateydeletepor cada recurso del panel, un roladminrecibe todos, y los superadministradores se nombran por correo enconfig/app.php. Ve Roles y permisos y Sudo y superadministradores. - Una DevZone en
/admin/devpara superadministradores: editar.envdesde el navegador, correr los comandos de despliegue, mandarte un web push de prueba, limpiar cachés y ver el commit que está corriendo. Ve La DevZone. - Un visor de logs en
/logs. Tal como viene, esa ruta sólo lleva el middlewareweb, sin exigir inicio de sesión, así que restríngela antes de que el sitio sea público. Ve Logs y depuración.
Planes y cobros
- Planes, precios, complementos incluidos y límites de uso guardados en la base de datos y editados desde el panel de administración, cobrados con Stripe a través de Laravel Cashier. Suscribirse y administrar la suscripción ocurre en Stripe Checkout y el portal de facturación de Stripe desde
/account/plansy/account/billing. Ve Enciende planes y cobros y Crea y pon precio a un plan. - Complementos vendidos encima del plan, como artículos extra de la misma suscripción de Stripe, desde
/account/add-ons. Ve Vende complementos. - Cobros únicos con Stripe Checkout. Ve Cobra una vez con Stripe Checkout.
- Pruebas gratuitas y códigos de promoción de Stripe en la página de pago. Ve Pruebas gratuitas y cupones.
- Precios por país con tipos de cambio diarios, límites de uso por plan, y una página de métodos de pago guardados en
/account/payment-methods. Ve Monedas, intervalos y tipos de cambio y Límites y uso del plan. - Un programa de referidos: un código en la URL se guarda en una cookie, y quien refiere gana una recompensa por registro y un porcentaje de cada suscripción. Ve Referidos.
Notificaciones
- Una sola clase de notificación, entregada dentro de la cuenta, por correo y por web push, según lo que la persona tenga habilitado. Un centro de notificaciones en
/account/notifications. Ve Envía notificaciones y Entrega de correo y SMS. - Avisos escritos desde el panel de administración, con un contador de no leídos en el encabezado. Ve Avisos.
- Web push con el protocolo VAPID, y una Progressive Web App con service worker, página sin conexión y un manifest listo para PWABuilder. Ve Web push y la PWA.
Idiomas, tiempo y lugar
- Dos idiomas, español e inglés, elegidos por quien visita y después por la cuenta. Las traducciones faltantes se encuentran con
php artisan lang:searchy se escriben conphp artisan lang:synca través del proveedor de IA que conectes. Ve Idiomas y traducciones y Conecta un proveedor de IA. - Toda fecha se guarda en UTC y se muestra en la zona horaria de la persona sin código de tu lado. Ve Zonas horarias y fechas.
- El país de quien visita se detecta por la IP y se completa con Weblabor World, que también alimenta los selectores de país, estado y ciudad. Ve Detecta el país del visitante.
Medir y auditar
- Seguimiento de sesiones y eventos, revisado en el panel de administración y enviado a la Conversions API de Facebook cuando le das un píxel, más un tablero de métricas diarias. Ve Métricas del tablero y seguimiento de visitantes.
- Un registro de actividad de cada cambio a usuarios, roles, permisos, avisos, categorías, planes y suscripciones, sobre Spatie Activity Log. Ve Registro de actividad.
El sitio público
- Una página de inicio en
/, páginas de características en/features, este centro de ayuda en/helpcon sus guías en/help/guides, un changelog en/help/changelog, y páginas de privacidad y términos. Todas son tuyas para reescribirlas. Ve Hazlo tuyo, Marca e interfaz y Escribe guías y changelog.
Para quien desarrolla
composer devarranca el servidor, el worker de la cola, la cola de logs y Vite en una sola terminal; el trabajo en cola y el programado están en Colas y trabajo programado.- Un modelo base con fechas que conocen la zona horaria,
$guardeden vez de$fillable, enums con valor, traits para reutilizar, y rutas separadas en grupos público,/appy/admin. Ve Modelos, casts y piezas base y Rutas, layouts y middleware. - Almacenamiento de archivos en el disco local o en Amazon S3, con manejo de imágenes a través de Intervention Image. Ve Archivos, imágenes y almacenamiento.
- Laravel Debugbar con detector de consultas N+1 en local, Larastan para análisis estático, PHPUnit y Laravel Dusk para pruebas, y un hook
pre-pushque detiene un push cuando una guía de ayuda no tiene traducción. Ve Trabaja en el código y Despliega tu proyecto.
Sobre qué está construido
Las versiones mayores salen de composer.json y package.json; la versión menor que recibes es la que composer install y npm ci resuelvan ese día.
| Capa | Tecnología | Versión |
|---|---|---|
| Lenguaje | PHP | 8.2 o más reciente |
| Framework | Laravel | 12 |
| Interfaz dinámica | Livewire | 4 |
| Componentes de formulario y layout | WireUI | 2 |
| Modales | Wire Elements Modal | 3 |
| Estilos | Tailwind CSS | 4 |
| Comportamiento en el navegador | Alpine.js, incluido con Livewire | 3 |
| Compilación de assets | Vite | 7 |
| Panel de administración | Laravel Front | 3 |
| Utilidades compartidas de Livewire y Blade | Weblabor TALL Utils | 1 |
| Cobros | Laravel Cashier, Stripe PHP | 15, 16 |
| Roles y permisos | Spatie Laravel Permission | 6 |
| Auditoría | Spatie Laravel Activity Log | 4 |
| Web push | Laravel Notification Channels WebPush | 10 |
| PWA | silviolleite/laravelpwa | 2 |
| Traducción con IA | Laravel AI | 0.6 |
| Números de teléfono | Propaganistas Laravel Phone | 6 |
| Verificación telefónica | Telnyx PHP, o Amazon SNS con el AWS SDK | 7 |
| Países, estados y ciudades | Weblabor World y World UI | 1, 2 |
| Slugs y orden manual | Spatie Sluggable, Spatie Eloquent Sortable | 3, 4 |
| Iconos | Blade Icons | 1 |
| Gráficas | Livewire Charts sobre ApexCharts | un fork en dev-master |
| Imágenes | Intervention Image | 3 |
| Archivos | Flysystem AWS S3, AWS SDK para PHP | 3, 3 |
| Visor de logs | rap2hpoutre/laravel-log-viewer | 2 |
| Lightbox de imágenes e iframes | Fancyapps UI | 6 |
| Barra de progreso y scrollbars | NProgress, SimpleBar | 0.2, 6 |
| Bases de datos | MySQL, MariaDB, PostgreSQL, SQLite, SQL Server | las que soporte Laravel 12 |
Dependencias de desarrollo: Laravel Debugbar 3, Query Detector 2, Larastan 3, PHPUnit 11, Laravel Dusk 8, Playwright 1, Laravel Pail 1, Laravel Sail 1 y el paquete de estándares de código de Weblabor. El paquete de cobros, weblabormx/billing-core, no se descarga: vive en packages/billing-core dentro del repositorio y Composer lo enlaza desde ahí.
Para qué sirve
Un SaaS con cuentas, panel de administración y una suscripción mensual o anual. Un producto que vende un plan base y extras opcionales. Una herramienta interna que necesita usuarios de verdad, roles de verdad y una auditoría. Un producto que tiene que hablar dos idiomas y funcionar entre zonas horarias desde el primer día. Una aplicación web que la gente va a instalar en su teléfono.
Para qué no
Un sitio estático o un blog: cargarías con un sistema de autenticación y un paquete de cobros que nunca usas. Un producto sin cuentas. Un backend sólo de API, porque la interfaz es Livewire y las rutas son páginas, no endpoints. Un código que ya vive en otro framework, porque esto es Laravel hasta el fondo y cada convención lo asume.