A management-system for EasyLFS
Since I will, with the next release, move all the EasyLFS-information over to the new site which has be gratefully sponsored by the Nuxified community I want to be this site more than a mere presentation- and download-platform for my little project.
I also want to use it as a development-tool. No, I don't want to run test-builds on the server, but I want to have an easy way to manage all information related to EasyLFS, like the documentation, package-list and things like that.
Since I'm a guy who likes to do things myself I started thinking about how this could be done in a way that this project might not only be suited for EasyLFS, but also for other projects, or at least other distro-projects.
What I have until now (after about a week of work, mostly in the bus, or in the evening after work) is a DB-design with so far 11 tables, which will house more or less everything. Even the menus, except for login and logout, will be stored in the DB.
There are different permissions which can be assigned to groups, which then can be assigned to a project (yes, more than one project is possible with that little tool). Users of course can be in more than one group and through that can have different permissions in different projects.
A group can also be associated with no project, which makes it a "global group", which of course only makes sense with the site-management-permissions, like creating projects and things like that.
Each permission is represented by a certain bit, which makes it easy to combine permissions from different groups (a global and a project-group) to determine the actual permissions of the user.
Finding the right set of permissions actually was the hardest part. I already did some sites that use databases, and also my website is entirely coded by myself.
A big focus there always goes towards security, so that everything that comes in is checked and validated. I don't want anybody mess with my stuff.
My website actually is a project that took me more than 3 years to "complete" (it's still not complete, for example there's hardly any "design"), because I wrote code, and always learned new stuff, which made me change passages, and sometimes rewrite entire scripts. One big workover included rewriting nearly all scripts, but it was a big step forward in terms of security.
So now, after 6 or 7 years of work with PHP, where I always tried to learn and try new things, I can take all what I have learned and put it into this management-system for EasyLFS.
Most of the content will be handled as what I call "documents". This is a pretty generic term, and that's the way I want it, because these documents can be more or less everything.
Through document-types it is possible to specify what these documents actually are and what they look like, because every document-type can have its own template.
The flexible menu-system even makes it possible add a link to a document right into the main menu, so that important pages can be displayed there.
Also it is possible to include documents into a newsfeed. There I'll possibly also offer having different feeds, one with site-infos (documents not associated to any project) and one per project. The database-design and the code allow this to be done easily.
One exception from the document-standard are packages. Each package can have two versions, a release-version (the one that is included in the last release) and a development-version (the one that's currently residing on my hard-drive to be included into the next release). The packages then make up the package-list, which will show the packages included in the current release, and some information on a tracking-page which will, among other information, display new and updated packages.
By the way, many functions of this site rely on some of my classes, like the newsfeed, which is created with my RSS2-class, or all the DB-handling, which is done with my class MultiSQL.
Well, that's what I have in mind so far. I'll keep you posted about this because for sure more stuff is coming up as the system grows. I'm still in a quite early stage of development, there are still some scripts to be written. So far it is only possible to manage the menu, and to create and delete projects.