laravel-frontend-presets/uikit3
A Laravel frontend preset that replaces the default Bootstrap scaffolding with UIkit 3, providing prebuilt authentication views, layouts, and assets so new apps start with a clean UIkit foundation. Install via Composer, run the preset command, and begin building.
Architecture fit
php artisan preset uikit3; the command copies stub files into the host app — package.json, webpack.mix.js, resources/assets/{js,sass}, the base Blade layout, and the auth views (login, register, password reset). Nothing survives on the request path once the command finishes.Integration feasibility
composer require --dev laravel-frontend-presets/uikit3 followed by php artisan preset uikit3. Auto-discovery registers the provider; no manual wiring.preset command itself, removed in Laravel 7 in favor of laravel/ui's ui command. On 7+ the package's primary entry point does not exist, and "integration" degrades to manually instantiating the preset class or, more sensibly, reading the stubs straight out of the repo.webpack.mix.js, the mix() helper). On Laravel 9+ the default is Vite, so the asset-pipeline half of the deliverable is obsolete for any current LTS target. The Blade layout and auth views remain portable; the build config does not.Technical risk
npm install/npm run dev against current Node toolchains — a predictable Day-1 friction point on any new machine.Key questions
composer.json actually constrain? Verify the laravel/framework and illuminate/support ranges before committing a plan to a version band.Stack fit
preset command; harvest stubs or use laravel/ui + manual npm i uikit).Migration path
git diff the output, lift the artifacts we want (uikit in package.json, the SCSS @import set, the JS bootstrap, the base layout, the auth views) into the app repo, then remove the Composer requirement. The package does its job once and exits the dependency graph.vite.config.js, @vite([...])), pin UIKit explicitly, publish under an internal namespace. Only justify this if two or more apps are queued — one app does not amortize a fork.laravel/ui for auth/asset scaffolding plus npm i uikit and a two-line SCSS/JS import. Functionally equivalent to this preset, backed by a maintained dependency. For most teams this is the better default, and the TPM should ask why it isn't.Compatibility
composer.json framework ranges before promising anything; expect a cap at 5.5–6.x.Sequencing
git diff, and inventory every file touched. This diff is the deliverable estimate.app.scss and one app.js — and confine UIKit markup to one base layout plus a small set of Blade partials, so a future UI-kit swap is a contained cost.npm ci && npm run build, auth flow smoke test, cross-browser check on UIKit JS components (modals, dropdowns, off-canvas).Maintenance
Support
uk- attribute/class API and the UIkit.util.on component model differ enough from Bootstrap that a mid-level developer needs roughly 1–2 days to become productive. Ecosystem coverage (Stack Overflow, tutorials, AI-assisted suggestions) is materially thinner than Bootstrap or Tailwind, which raises per-ticket resolution time for the life of the app — a cost that never appears on the initial estimate.Scaling
Failure modes
package.json — highest probability, highest blast radius. Mitigate by running only on a clean tree with a committed baseline, or by harvesting via git diff rather than running in place.Command "preset" is not defined on Laravel 7+ — a silent blocker during onboarding. Document the version ceiling in the repo README, not just in a ticket.Ramp-up
TPM recommendation: treat this as a scaffold source, not a dependency. Run it once on a throwaway branch, harvest the stubs into the app, pin UIKit ourselves, target the current asset pipeline, and delete the Composer requirement. The package's only durable value is the Blade layout and auth-view templates — a day or two of engineering — and that value is captured entirely on Day 1. Bounded downside, compressed time-to-demo, no inherited maintenance obligation.
How can I help you explore Laravel packages today?