DEV Community

Cover image for MilkAdmin 0.9.0 - Toward a First Stable Version
giuliopanda
giuliopanda

Posted on

MilkAdmin 0.9.0 - Toward a First Stable Version

MilkAdmin is a lightweight PHP admin panel, designed to remain understandable even after a long time. With version 0.9.0, it officially enters beta phase: it's not yet a 1.0, but it's the point where this system now has a clear, coherent shape and, most importantly, will be used in a real project.

Why MilkAdmin Exists

MilkAdmin is a personal project, born from a very practical need.

I don't usually work on backends based on popular frameworks: I work on various PHP products developed for specific needs. However, I wasn't able to develop even simple backends.

I tried studying a backoffice like Filament, but after abandoning it for a while, when I tried to pick it up again I realized how difficult it was to re-orient myself. I would have had to start practically from scratch.

Hence the idea: create a system that remains understandable even after months of inactivity, a project that, once reopened, allows you to immediately understand what you had done and why.

At first it was just an idea, I didn't think I would ever complete it, also because it was objectively more work than studying Filament. So at the beginning I tentatively made small experiments on creating a framework, from there I started trying to understand how in my opinion a system should behave. Then over time it became a hobby, and eventually something much more mature than I expected.

The Philosophy: Simplicity and Control

The main goal of MilkAdmin is to remain understandable even after a long time.

The idea is that, when opening a module, it should be easy to understand how it's structured, what data it manages, how they are validated, how they are connected to other data, and how they are used in the backend - even if you don't remember how the framework works. However, I wanted the creation of a basic CRUD to be very concise, so I reformulated where concepts should be written.

namespace Local\Modules\Recipe;
use App\Abstracts\AbstractModel;

class RecipeModel extends AbstractModel
{
    protected function configure($rule): void
    {
        $rule->table('#__recipes')
            ->id()
            ->title('name')->index()
            ->text('ingredients')->formType('textarea')
            ->select('difficulty', ['Easy', 'Medium', 'Hard']);
    }
}
Enter fullscreen mode Exit fullscreen mode

Then I reflected on what the use case might be: In real business contexts, data often already exists, coming from Excel, SharePoint, or legacy flows, and cannot always be reorganized according to ideal schemas. MilkAdmin deliberately stays close to PHP, without excessive abstractions, leaving full control over queries, relationships, and flows.

Let's Be Realistic: I Don't Expect MilkAdmin to Be Adopted by Other Projects

An Admin Panel that doesn't use Laravel or Symfony doesn't attract the community's attention, and I'm perfectly aware of that.

I'm an "old-school" programmer: I prefer clear code over abstract code, even if it's less "elegant" by certain standards. Sometimes files are long, I still use static classes, and if the code is readable and works, that's fine by me.

What I care about, instead, is open source: sharing your own work and studies to create a dialogue that doesn't necessarily need to involve large numbers, but that can be useful even to just a few people.

At this point, if the project intrigues you, head over to GitHub, and if you'd like to leave a star - it would make me very happy.

GitHub Repository

These reflections come from the development of MilkAdmin, a PHP admin panel system I actively maintain. Code, demos, and documentation are available at milkadmin.org. MIT licensed.

Top comments (0)