Kaffy - a quick and flexible admin interface for phoenix applications

Just released v0.7.0. The main feature in this release is scheduled tasks.

Check out the demo and the README section.

def scheduled_tasks(_) do
      name: "Cache Product Count",
      initial_value: 0,
      every: 300,
      action: fn _v ->
        count = Bakery.Products.count_products()
        {:ok, count}
      name: "Delete Fake Products",
      every: 60,
      initial_value: nil,
      action: fn _ ->
        {:ok, nil}

Kaffy v0.8.0 has been released with a better UI, custom pages, and more.

New Features

  • ability to add custom links to the side menu.
  • ability to add add custom pages.
  • ability to order records per column in the index page.


  • a placeholder value for :map textarea fields to indicate that JSON content is expected.
  • enhanced “humanization” of field names in index page.
  • improved checkbox form control UI (thanks @areski).
  • new and improved design (thanks @areski).
  • include checkboxes in index page to clearly indicate records are selectable.
  • pagination, filtration, and searching are now bookmarkable with querystring parameters.
  • count query result is now cached if the table has more than 100,000 records (thanks @areski).
  • add option to hide the dashboard menu item.
  • add option to change the root url to be something other than the dashboard.
  • removed render warnings when running under phoenix 1.5.
  • add a much improved date/time picker (thanks @areski).

I’m extremely pleased to announce Kaffy v0.9.0. This has been the biggest release yet with so many contributions from the community.

The main features in this release:

  • Introducing extension modules to add custom css and javascript.
  • Custom form fields for specialized form functionality.
  • List actions now can have an intermediary step for more input from the user.
  • Improved layout for mobile screens.
  • Ability to override Kaffy’s insert, update, and delete functions to customize how Kaffy talks to the repo.
  • Moved scheduled tasks to their own modules and they have their own option in config.
  • Ability to customize the query Kaffy uses for the index and show pages.
  • A more flexible and customizable way to define resources and admin modules.

For a complete list of changes, you can check the repo’s README and CHANGELOG files.
Please note that this is a backwards-incompatible release, but modifications should be quick and minimal.

Many thanks to everyone who contributed in this release.


Oh this is AMAZING – how did I only find out about that now?? :slight_smile:

I remember having this conversation with a ton of developers - most of them maintain this is not needed, they can write it themselves, it’s a blackbox, etc. etc.

But in my experience, in all webapps you need 1) user management and 2) admin interface. And barely ever are your requrements so specific that they justify rewriting all this from scratch over and over again. Therefore I’ve always been a fan of Python/Django having the admin interface included out of the box. In Ruby/Rails there was ActiveAdmin and one more simiar project, but there have always been some problems with them and they had pretty opinionated ugly design :slight_smile: Recently I’ve been a fan of Strapi (built on Koa.js) for quick bootstraping apis (hence the name “stapi”) when prototyping.

What I’m trying to say is thank you, and keep up the great work, it’s worthy!


Thank you! It’s a team effort. Kaffy wouldn’t have reached this stage without the community’s contributions.

I couldn’t agree more :+1:t3:

1 Like