finds.dev← search

// the find

aesmail/kaffy

★ 1,419 · Elixir · MIT · updated Oct 2025

Powerfully simple admin package for phoenix applications

Kaffy is a Phoenix admin interface package that mounts a full CRUD dashboard into your existing app with minimal configuration — think Django's built-in admin, but for Elixir. It auto-detects Ecto schemas, handles associations and embedded schemas, and adds customization hooks at every layer without requiring generated files. Target audience is Phoenix developers who need an internal admin panel without building one from scratch.

Auto-detection of schemas and admin modules works well for standard Phoenix context layouts, so you can have a functional admin panel with just three config lines. The callback chain (before_insert, after_save, etc.) runs inside a transaction, which is the right call — you won't end up with partial state if an after_save hook fails. Custom actions at both the single-resource and list level are genuinely flexible, including multi-step list actions with user-provided inputs, which covers the 80% case of 'I need a button that does something custom.' Extension points for custom CSS/JS and fully custom pages via your own views mean you're not trapped in Kaffy's UI when you need to break out of it.

many_to_many associations are explicitly unsupported, which will hit you sooner than you'd expect in a real app — the README admits it in a single-line note. The support policy is harsh: only the latest minor version gets bug fixes, so if a regression ships in a new release, you're forced to upgrade or fix it yourself. Still uses Phoenix Views and .eex templates in a world that's moved to LiveView and .heex, and the Phoenix 1.7 workarounds (manually re-enabling router helpers) signal this is carrying legacy debt. The scheduled tasks feature stores state in GenServer memory, which means a node restart silently resets task run counts and timing — fine for toy use, not fine if you're relying on it for anything that matters.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →