hawkiq/livewire-starter-kit
A Laravel starter kit built around Livewire, offering ready-made scaffolding for auth, layouts, and common UI patterns so you can skip boilerplate and start building interactive apps fast.
Understand what you're adopting first. This is a Laravel application scaffold, not a runtime library. The day-to-day mental model is "generate once, then own the code," not "composer require and track releases." If you're expecting upstream fixes to flow into your app, you'll be disappointed — there is no supported upgrade path into an already-scaffolded project.
Minimal path to a running app:
composer create-project hawkiq/livewire-starter-kit my-app
cd my-app
cp .env.example .env && php artisan key:generate
php artisan migrate
npm install && npm run dev # Tailwind build
php artisan serve
Verify the install method before you script anything: the docs say "simple installation via Composer" without specifying create-project vs. a package that installs into an existing app. Confirm from the repo README which one it is — the two have completely different upgrade semantics (scaffold vs. dependency).
Where to look first, in order:
composer.json — the PHP floor and the Laravel/Livewire major constraints. This is the single most important file for a go/no-go decision; a kit pinned behind your target Laravel major is a scheduling problem, not a code problem.routes/web.php and whatever routes/auth.php exists — this is your map of the auth surface you're now responsible for.resources/views/layouts/ — the base layout(s) every page inherits from. Change conventions here, not per-page.resources/views/components/ and app/Livewire/ — the reusable primitives and page components.tests/ — run php artisan test immediately. A scaffold whose tests don't start green is a warning sign about the rest of it.First use case: take one of the scaffolded auth-adjacent screens (profile, dashboard) and turn it into a real feature. That single exercise tells you whether the kit's conventions — component namespace, layout slot pattern, Tailwind class strategy — match how your team writes Livewire. If you spend that task fighting the kit, stop and reconsider.
Commit the pristine scaffold as commit #1 before you change a single line. That one commit gives you a permanent baseline to diff future upstream releases against, which is the only cheap way to cherry-pick later.
Build on top of the kit's conventions, not beside them. The kit ships an opinionated component namespace and layout structure. New feature work should live in the same namespace and use the same layout component, or you end up with two dialects in one repo and the kit's value evaporates.
Treat kit components as primitives. The reusable Blade/Livewire components are the vocabulary. Compose feature screens from them (<x-…> / @livewire(…)) rather than writing bespoke markup per page; when a primitive doesn't fit, extend it in place and note the change, since you own the fork now.
Extend auth rather than rebuild it. The standard flow is: keep login/registration/password-reset as scaffolded, then layer your domain requirements on top — extra registration fields, profile attributes, roles/teams if needed. Do a written security pass in the same PR: password rules, rate limiting on login and reset, email verification enforcement, session cookie config, and mail transport in .env.example. That review is a first-week obligation, not a later hardening ticket.
Full-page Livewire components for routes, nested components for interaction. Keep the kit's page-level components as route targets with the layout attribute, and use child components for interactive fragments. This preserves the "server-rendered with Livewire interactivity" shape the kit is built around and avoids SPA-ifying a monolith scaffold.
CI from day one. Take the scaffolded test suite, run it in your pipeline, and add at minimum: an authentication smoke test (Livewire::test() / actingAs() against the login and registration components), a route-resolution test over php artisan route:list, and a frontend build step. The frontend toolchain (Node version, build command, Tailwind pipeline) is the most common mismatch with an existing CI image — check it in the first hour.
Detach deliberately. Once the spike is green, move the scaffold into your own repository/namespace, add ownership metadata (CODEOWNERS, an internal README stating the upstream commit you forked from), and pin Laravel/Livewire versions in composer.json. Upstream becomes reference material for occasional cherry-picks.
wire:key in every @foreach — omit it and you get stale DOM state on re-render.wire:model is deferred by default in Livewire 3; use .live with a debounce for search/filter inputs, and don't sprinkle .live on every field.unset() the property first.rules() + $this->validate()), not in the Blade form; the scaffold's forms may validate only at submit, so add inline updated() hooks if you need field-level feedback.php artisan route:list to confirm which components are actually mounted where; a dd() in mount() reveals whether the component is even instantiated; for auth issues, check config/session.php and the guard in config/auth.php before suspecting Livewire.content paths in the CSS config are where global conventions are enforced; change them centrally rather than per-view, or the fork becomes unmaintainable within a quarter.How can I help you explore Laravel packages today?