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

Akin Laravel Package

lara-zeus/akin

Akin is a lightweight Laravel package from Lara Zeus for surfacing related and similar content across your models. Define the relationships in seconds and let Akin handle the matching, so visitors discover more of what you publish without extra tables or complex queries.

View on GitHub
Deep Wiki
Context7

Getting Started

First, confirm what lara-zeus/akin actually is in the version you pulled. The package metadata is contradictory: the tagline and the single release note ("fix version for tabler icons") describe a Filament panel theme, while the bundled description.md describes an Eloquent relationship / "related records" library. Those are two different packages with two different day-to-day workflows. Spend five minutes settling it before you write any code.

composer show lara-zeus/akin
cat vendor/lara-zeus/akin/composer.json | jq '{require, extra, version}'
find vendor/lara-zeus/akin -maxdepth 3 -type d | head -30

Read three signals:

  • require — if filament/filament is present, it's a theme. If it's illuminate/database only, it's the relationship library.
  • extra.laravel.providers — themes ship an auto-discovered provider; a query/relationship package usually does not.
  • Directory layout — resources/css, resources/views, compiled dist/*.css → theme. src/Concerns, Relations/, query builders → relationship library.

The rest of this assumes the theme reading, which the tagline, repo name, and release notes support.

Wire it in on a spike branch. Don't touch main.

git checkout -b spike/akin-theme
composer require lara-zeus/akin

Filament themes are typically attached via ->viteTheme() in the panel provider. Check the README for the exact hook the package expects — some Lara Zeus plugins ship a ready-to-use theme entry, others expect you to author one:

// app/Providers/Filament/AdminPanelProvider.php
public function panel(Panel $panel): Panel
{
    return $panel
        ->id('admin')
        ->path('admin')
        ->viteTheme('resources/css/filament/admin/theme.css');
}
/* resources/css/filament/admin/theme.css */
@import '../../../../vendor/lara-zeus/akin/resources/css/akin.css';
npm run build
php artisan filament:assets
php artisan optimize:clear

Your first real use case is a screenshot grid, not a feature. Apply the theme to one panel, then capture before/after of the screens you actually ship: a dense table with filters and bulk actions, a create form with a repeater and rich editor, a modal, the login screen, a notification, and one third-party plugin page. That grid is the evaluation. It takes an hour and it answers every question you'll otherwise argue about in standup.

If it turns out to be the relationship library, your first use case flips: pick a model where "you may also like" is genuinely useful (Post, Product), attach two records, and inspect how the query is built — which columns it compares, whether ranking is SQL or PHP, and whether the source record is excluded.

Implementation Patterns

Give the theme its own CSS entry point. Keep it out of app.css. Admin and public-site Tailwind configs have different content globs and different design tokens; mixing them means every front-end tweak is a potential admin regression.

resources/css/filament/admin/theme.css   ← import package, then your overrides
resources/css/app.css                    ← public site, untouched

Order matters — put your overrides below the @import. If the cascade is inverted, half your tweaks silently lose.

Treat Akin as a baseline skin, then build the brand layer yourself. The realistic day-one-to-day-two workflow is: adopt the base, then spend a day on ->brandLogo(), ->brandLogoHeight(), ->colors(), ->font(), and a favicon. That gets you from "stock Filament" to "looks intentional," which is the actual goal.

->brandLogo(asset('images/logo.svg'))
->brandLogoHeight('1.75rem')
->font('Inter')
->colors(['primary' => Color::Indigo])

Scope it to one panel on the first pass. Filament supports a distinct Vite theme per panel. Apply Akin to admin only, leave customer alone. You get a stakeholder A/B without a git revert.

Run the dev loop properly.

npm run dev       # watch mode
php artisan serve # in another terminal

If the package ships a tailwind.config.js with content paths for its own Blade views, copy those entries into yours — otherwise classes used only inside the package get purged and components render half-styled. If it ships pre-compiled CSS in dist/, skip this entirely.

Pin from day one. Zero dependents, a single maintainer, no vendor with an SLA. "lara-zeus/akin": "3.0.*" in composer.json is the only thing between you and a Tuesday-morning surprise. Commit the lockfile and record the pinned Filament version next to it.

Decide the fork path before you need it. Two cheap options under MIT:

  • Fork-and-vendor — fork to your org, point at it via a Vite path repository, patch there.
  • Extract-and-own — copy the CSS selectors you like into resources/css/filament/admin/ and drop the dependency. The selectors are the value; the package is a convenience.

Write down which you chose and who owns it, while nobody is under pressure.

If it's the relationship library, the daily pattern looks like: a scope on the model that feeds a related-content block or a Filament RelationManager, plus a check that the comparison columns are indexed. The leverage is that the ranking logic is already written; the work is confirming it doesn't full-table-scan on every render.

Gotchas and Tips

Version mismatches fail silently. A v3-era Filament theme on a v4 panel, or Tailwind 3 CSS in a Tailwind 4 build, doesn't throw — it renders slightly wrong. Colors fall back, spacing drifts, dark mode breaks on two screens out of twenty. CI stays green. Gate on an explicit visual QA pass covering dark mode, RTL, dense tables, modals, and empty/error states.

"fix version for tabler icons" is a real signal. It means the package pins @tabler/icons. If your app or another Lara Zeus plugin pulls tabler icons at a different version, expect a duplicate or conflicting lockfile entry and possibly broken icon rendering. Check package.json before you blame the theme.

Verify the freshness claim. The listed release date is in the future. That may be a registry artifact, but it means "recent release" is not evidence of active maintenance. Read the actual commit log.

Selector specificity is your main debugging tax. Two themes in one panel resolve non-deterministically by cascade order. Layering Akin over another theme or a heavily customized app.css means DevTools time hunting which rule won. This is why modifying someone else's theme costs more than writing your own — budget for it when the first design-change request lands.

Third-party plugin views are the usual unstyled gap. A theme covers Filament's core components; a plugin shipping its own Blade templates may not inherit the look. Enumerate every plugin in the panel and check each one's main screen during the spike, not after launch.

Watch for external font/icon CDNs. If the theme references one, that's a data-residency review item and a hard failure in air-gapped environments. Check before it reaches staging.

filament:assets is your reset button. When styling looks stale after a change, run php artisan filament:assets && php artisan optimize:clear && npm run build. It fixes a surprising share of "the theme isn't applying" reports. Confirm the CSS is actually being served before you start editing selectors.

Add a line to your Filament upgrade runbook now. A theme is coupled to Filament's internal markup and class conventions, so every Filament major — and realistically every Tailwind major — forces a cosmetic re-validation. The runbook entry is: "diff the panel screenshot grid before/after." Without it, the regression lands on a user.

Note the Arabic framing in the tagline. Akin was written by a team that ships RTL-first. Test with an RTL locale and an Arabic admin user early — that's where spacing and icon mirroring issues surface first.

Name an owner or drop it. Four stars, zero dependents, single maintainer, no commercial backing. The code is fine as code; it is not a dependency with a support relationship behind it. If nobody on the team would fork it when upstream goes quiet, the honest answer is to lift the CSS you like into your own theme now and skip the dependency entirely.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log