Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Web Laravel Package

eveseat/web

Laravel package that supplies the SeAT web interface for EVE Online: routes, views, assets, menus, and user-facing pages for managing corporations, alliances, and authenticated pilots. Integrates with SeAT core services and permissions.

Deep Wiki
Context7

Getting Started

eveseat/web is the UI layer of SeAT — not a standalone app. It ships controllers, routes, Blade layouts, Vue components, and the sidebar/menu wiring that the rest of SeAT renders into. You'll almost always consume it as part of a full SeAT install rather than in isolation.

Minimal steps:

  1. composer require eveseat/web (or install SeAT, which pulls it in), then php artisan vendor:publish and php artisan migrate if the package registers its own assets/migrations.
  2. Run the asset pipeline the package expects (npm install && npm run prod from the SeAT root) so Vue components and CSS land in public/.
  3. Confirm routes are live with php artisan route:list | grep -i seat.

Where to look first:

  • The service provider (EveSeat\Web\WebServiceProvider and any nested providers). It is the map: it registers routes, loads views, binds the sidebar/menu, registers ACL permissions, and publishes assets. Read boot() and register() before touching anything else.
  • src/Http/Routes/ — every URL and its middleware stack (web, auth, acl:...).
  • src/Resources/views/ — the master layout and page Blade files.
  • src/Resources/assets/js/ (or js/) — Vue entry points and component registration.

First use case: add a page to the sidebar. Register a route → point it at a controller → return a Blade view that @extends the package layout → add a menu entry via the package's sidebar/menu service in a service provider. That loop exercises every integration point you'll need later.

Implementation Patterns

Thin controllers, domain logic in eveseat/services. The web package is presentation + HTTP. Business rules (ESI calls, character/Corporation data) belong in eveseat/services or your own plugin; controllers should resolve, authorize, and delegate.

Sidebar/menu registration. Rather than editing the package, register entries from your own service provider's boot() using the menu/sidebar facade or handler the package exposes. This keeps plugin navigation upgrades-safe.

Views extend the master layout. Page views use the package's layout (@extends('web::layouts.app')-style) and fill @section('content'). Publish views if you need to override, and load them with a higher-priority namespace so yours win.

ACL middleware + Blade gates. Routes use acl:<permission> in the middleware group; views use @can('<permission>'). Define new permissions in your provider so they appear in SeAT's role management UI — don't hardcode role checks.

Vue where it's interactive, Blade elsewhere. Mount components into Blade divs (<div id="app-x"></div>) and hit JSON routes with axios. Keep the axios base URL aligned with the route group's prefix so CSRF and auth middleware apply consistently.

Route grouping mirrors the package. Follow the same grouping conventions (web vs api, prefix, middleware arrays) so your plugin routes behave identically to core ones and show up correctly in route:list.

Feature-test against real routes. Because routing, middleware, and views are all wired through the provider, a plain Laravel feature test that $this->actingAs($user)->get(route(...)) catches most integration mistakes early.

Gotchas and Tips

  • Caches lie. After changing routes, menus, or permissions, run php artisan route:clear && php artisan view:clear && php artisan config:clear. A missing sidebar entry is almost always a stale cache.
  • Assets are compiled, not hot-reloaded in production. npm run prod after any JS/CSS change; if the package publishes assets, re-publish. Stale assets are the second most common "why isn't my change showing" cause.
  • Watch middleware order. auth must precede acl:*; reversing them produces confusing redirects instead of 403s.
  • Version-pin the SeAT stack. eveseat/web is tightly coupled to eveseat/services, the ACL package, and the Laravel major it was built for. A minor bump on one can break the others — pin and upgrade together.
  • Never edit vendor/. Use the package's publish hooks for views/assets, service providers for registration, and events/view composers for injection. Direct edits vanish on composer update.
  • Extension points to prefer: service providers (register/boot), the sidebar/menu handler, view composers, and Laravel events fired by the package. These are the sanctioned seams; anything else is fragile.
  • Debugging checklist: php artisan route:list (is the route there?), middleware stack (is it blocked?), view:clear (is the view stale?), then browser console (did the Vue component mount?). That order resolves most issues fast.
  • GPL-2.0 means derivatives are GPL too. If you're building a commercial plugin on top, get that reviewed before shipping.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect
youbar/easy-crud
c-point-labs/laravel-hostyourai
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo