aesmail

aesmail

Kaffy - a quick and flexible admin interface for phoenix applications

Hello guys,

I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the current global pandemic, I kind of had the mindset and time to work on a few things on that list.

The package is in its very early stages, but I started using it for my own projects.
The following is part of the README file.

Kaffy

Extremely simple yet powerful admin interface for phoenix applications

Why another admin interface

Kaffy was created out of a need to have a minimum, flexible, and customizable admin interface
without the need to touch the current codebase. It should work out of the box just by adding some
configs in your config.exs file (with the exception of adding a one liner to your router.ex file).

A few points that encouraged the creation of Kaffy:

  • Taking contexts into account.
    • Supporting contexts makes the admin interface better organized.
  • Can handle as many schemas as necessary.
    • Whether we have 1 schema or 1000 schemas, the admin interface should adapt well.
  • Have a visually pleasant user interface.
    • This might be subjective.
  • No generators or generated templates.
    • I believe the less files there are the better. This also means it’s easier to upgrade for users when releasing new versions. This might mean some flexibility and customizations will be lost, but it’s a trade-off.
  • Existing schemas/contexts shouldn’t have to be modified.
    • I shouldn’t have to change my code in order to adapt to the package, the package should adapt to my code.
  • Should be easy to use whether with a new project or with existing projects with a lot of schemas.
    • Adding kaffy should be as easy for existing projects as it is for new ones.
  • Highly flexible and customizable.
    • Provide as many configurable options as possible.
  • As few dependencies as possible.
    • Currently kaffy only depends on phoenix and ecto.
  • Simple authorization.
    • I need to limit access for some admins to some schemas.
  • Minimum assumptions.
    • Need to modify a schema’s primary key? Need to hide a certain field? No problem.

GitHub link
Hex package

All critique, criticism, PRs, and feedback are welcome.

Most Liked

aesmail

aesmail

v0.2.0 was just released

Changes

  • Kaffy now supports phoenix 1.4 and higher.
  • The :otp_app config is now required (breaking change).
  • Removed some deprecation warnings when compiling kaffy (apparently introduced some new warnings).
  • Massively simplified configurations. The only required configs now are otp_app , ecto_repo , and router .
  • Added a CHANGELOG file to communicate and track changes easily.
  • Kaffy will now auto-detect your schemas and admin modules if they’re not set explicitly. See the README file for more. This should get me closer to my original post’s points:

Can handle as many schemas as necessary

and

Should be easy to use whether with a new project or with existing projects with a lot of schemas

Thank you for your interest. I’m getting extremely motivated to work on this project with the current response/feedback.

14
Post #2
aesmail

aesmail

Hello everyone,

I’d like to thank everyone who’s used, provided feedback, submitted features and PRs, or just showed interest in Kaffy.

Open source software needs a community to grow. I think Kaffy has enough interest and potential.

<rant>
I have been extremely busy during this pandemic working full time on other software projects. I’m trying my best to avoid (or maybe deal with) the “burnout”.
</rant>

If you are interested in becoming a maintainer for Kaffy, please message me either here or privately with your GitHub account. A few members have already showed interest which I’m grateful for (and I’ll be in touch with you guys again). If you think you can actively (or semi-actively) maintain Kaffy, drop me a line.

Having said that, I have no intention of abandoning the project. Once I’m out of this busy phase, working on Kaffy again would be a pleasure. For the time being, the project needs to show that it’s not dead and it’s still being actively used.

Thank you all for your understanding and support.

aesmail

aesmail

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.

Enhancements

  • 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).
aesmail

aesmail

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.

aesmail

aesmail

I’m very pleased to announce kaffy v0.5.0 with dashboard widgets.

This was the biggest missing thing on my todo list. I’m not 100% done with it. This is hopefully the tip of the iceberg.

Thanks to everyone who provided comments, suggestions, and/or PRs.

As always, your feedback is highly appreciated.

Check the dashboard page section.

Where Next?

Popular in Announcing Top

belaustegui
Announcing ErrorTracker, an Elixir-based built-in error tracking solution. Features Basic, free, built-in error tracking solution. Trac...
New
ananthakumaran
An ExUnit formatter to visualize test execution and find bottlenecks in your test suite. I created a small library called ex_unit_spa...
New
MRdotB
Greetings Elixir community! Today, I’m thrilled to present you with resvg_nif, an open-source project that provides Elixir bindings for ...
New
New
garrison
Hobbes is a scalable, fault-tolerant transactional record store written in Elixir. Hobbes is designed to be: Scalable - Hobbes can sha...
New
victor23k
LiveViewPortal is a small library that allows third-party sites to embed LiveView apps. The library is distributed as an NPM package. On...
New
anuaralfetahe
Hello Published a new library - ProcessHub! ProcessHub is a library designed to manage process distribution within the Elixir cluster. ...
New
tmbb
Playfair (named after: William Playfair) is a data visualization/plotting library with the goal of being able to produce publication-qual...
New
Asd
Hi, I am happy to release the Repatch library for mocking and patching implementation in tests and anywhere else. It brings new possibili...
New
waseigo
DiskSpace Hi everyone, I needed this for a project I’ve been working on, and couldn’t find a simple solution that would work. The solutio...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
sergio
In Ruby, I can go: User.find_by(email: "foobar@email.com").update(email: "hello@email.com") How can I do something similar in Elixir? ...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement