wendelladriel/slidewire
SlideWire lets you build beautiful presentation decks in Laravel with Livewire. Write slides in Blade and get a full-page experience with keyboard, swipe, and hash navigation, themes, fragments, code highlighting, diagrams, vertical stacks, backgrounds, and auto-slide timers.
Architecture fit
SlideWire is not a presentation product — it is a rendering layer inside a Laravel application. Decks are Blade files (Markdown since v1.4.0) resolved from config('slidewire.presentation_roots') and rendered through a full-page Livewire component. That means it inherits the host app's routing, middleware, auth, layouts, config cache, and Tailwind pipeline instead of standing up a parallel stack. For a TPM, that is the entire value proposition: presentation infrastructure that costs one composer require and no new deployment surface.
The features it supplies are the commodity mechanics you would otherwise have to spec and staff: keyboard/click/swipe/hash navigation, horizontal slides with nested vertical groups, fragments, transition presets, auto-animate, progress and fullscreen controls, auto-slide timers with config → deck → slide precedence, Phiki syntax highlighting, diagrams, Reveal-style color/image/video backgrounds, theme presets with typography controls, and a growing first-party component set (title-slide, two-column-slide, media-split-slide, timeline-slide, steps-slide, agenda-slide, panel). That component vocabulary is what makes a reusable deck template a realistic deliverable — one shell, one theme, one authoring convention, many decks.
The differentiating capability is data binding. Because decks are Livewire/Blade, a slide can read current pricing, feature flags, roadmap status, or live metrics directly from the application. That solves deck drift and stale-collateral problems in a way Google Slides or Keynote structurally cannot. This is the argument to lead with internally.
Where it does not fit: pixel-perfect brand collateral, PDF/PPTX handoff, offline delivery, SCORM/LMS distribution, and SEO-critical public pages. It is an HTML/JS runtime requiring JavaScript. Scope it to internal enablement, onboarding, architecture walkthroughs, roadmap/release comms, and product demos behind existing auth.
Integration feasibility
Mechanically low-friction for the target stack: install via Composer, scaffold with php artisan make:slidewire demo/product-launch --title="...", register a route via Route::slidewire(). No additional frontend build beyond Livewire's existing assets. A competent Laravel engineer gets a working deck inside a day.
Three non-obvious integration items must be on the checklist, not in tribal knowledge:
resources/css/app.css needs @source entries for vendor/wendelladriel/slidewire/resources/views/**/*.blade.php and src/**/*.php. Without them, first-party components render with correct markup and missing styles — a confusing failure mode that reads like a package bug.php artisan config:cache must be an explicit test case, not an assumption.npx playwright install chromium), which pulls Node and Chromium into CI. It validates the package, not your deck template or your data bindings — plan your own smoke coverage.Hard requirements: Livewire 3.x and a modern Laravel/PHP baseline. Teams on Livewire 2.x, legacy Laravel, or Inertia/Vue/React front ends are looking at a migration project, not a package adoption.
Technical risk
Key questions
TPM verdict: run a narrow pilot for internal or semi-public decks inside an existing Laravel/Livewire app. Do not standardize broadly until authoring time saved, theming compatibility, accessibility expectations, and maintenance ownership are proven.
Stack fit
Adopt only where the application is already Laravel + Livewire and decks can sit behind existing auth. Reuse the app's middleware, layouts, asset pipeline, and design tokens rather than creating a second presentation surface. If the org is Inertia/Vue/React or non-PHP, the cost shifts from setup to platform migration — rarely justifiable for presentations.
Keep deck content thin: Blade/Markdown composing first-party components, with data pulled through explicit, bounded queries passed in from the route or a small presenter class. No business logic inside slides. This is what preserves the exit ramp if SlideWire is ever replaced — the content survives, only the wrapper is rewritten.
Migration path
make:slidewire, wire the route with Route::slidewire() behind existing auth middleware, and confirm the Tailwind @source entries and config:cache behavior in a staging deploy.Compatibility
Verify against the host app's actual versions before pinning: Laravel version, PHP floor, Livewire 3.x, Tailwind version, and the existing asset build. Confirm the installable Packagist version given the anomalous release date metadata. Check whether the team already runs a headless browser in CI; if not, decide whether to adopt test:browser at all or rely on a small custom smoke suite for the deck template.
Sequencing
Pilot deck (1–2 weeks) → theming/brand spike in parallel → template codification → 2–3 additional internal decks → review gate on authoring model (who writes, who approves) → decide on broader rollout or stop. Do not open authoring to non-engineers before the review gate exists.
Maintenance
Low runtime footprint, but real ownership. Someone must own: version pinning and upgrade testing (the package is moving quickly through 1.x), the @source wiring in resources/css/app.css, config-cache regression checks after theme changes, and the deck template itself as a shared asset. Budget a fractional engineer, not zero. Track upstream releases and read the changelog before bumping — a slide-offset correctness bug shipped in a patch release is a signal about the release cadence.
Support
No vendor, no SLA, MIT license, single maintainer. Support is your own team plus GitHub issues. Escalation path is: read the docs at slidewire.dev → check recent release notes → vendor or patch locally. Have an explicit policy on forking if upstream goes quiet. For non-engineer authors, support burden lands on whichever engineer owns the template — plan for office hours or a short internal guide rather than ad-hoc Slack questions.
Scaling
Scales fine along the axes that matter here: number of decks (each is a route + a Blade file), content volume, and page weight (all static assets). It does not scale into high-traffic public delivery — every view is a Livewire round-trip and requires JavaScript, and there is no CDN/static-export story. If a deck needs to be viewed by thousands of unauthenticated visitors, that is a different problem. Also watch the compiled Tailwind output as package sources are added to @source: it is a modest growth, but it affects every page in the host app, not just decks.
Failure modes
@source entries absent → components look broken. Highest-probability first-day failure.php artisan optimize:clear in the runbook and a cache-clear step in deploy.Ramp-up
Engineers: hours to a first deck, a day to understand theming and component composition. Designers and enablement staff: days, and only after the template is codified — they should be composing existing components, not writing new Blade. Expect a one-to-two-week pilot to produce a trustworthy estimate of authoring time saved; that number, plus a theming verdict and a named owner, is the gate for any broader rollout.
How can I help you explore Laravel packages today?