FluentKit provides the foundation for consistent application architecture and rapid development of projects.

In addition to the core functionality it provides a package system to allow you to seamlessly integrate features providing first class support for a CMS to include a ticket system, or a Project Management system to include page creation functionality. All without compromising these features to fit within a system designed for a different purpose.

This lowers the buy in for end users, and allows developers to focus on what matters in an application development. While still having direct access to the Laravel Framework for feature development.

Authentication & Users

FluentKit takes the same approach to core Laravel, included is an Eloquent User model which is all setup with the usual features like authentication, notifications and email validation.

Your login and register routes are all setup (if allowed by your configuration, more on that later). Your authentication routes also take advantage of the theming system backed into FluentKit.

Authorization, Roles & Permissions

Authorization can be a tricky subject. There are many choices and variations on the perfect system.

FluentKit provides pre built authorization via Roles and Permissions.

Users can be assigned many Roles. Roles can have many different Permissions. And for additional flexibility Users can also have permissions outside of their assigned Roles.

The Roles and Permissions system has been integrated with Laravel's own gate functionality. So you have one unified API for managing authorization in your application.

All of FluentKit's own features including administration take advantage of the authorization system.

Administration

With FluentKit's own VueJs powered administration panel developers and end users can manage there applications with ease.

Heavily inspired by Laravel's own Nova administration package, the FluentKit administration panel is built using a Sections, Screens, Fields and Actions API, all deeply integrated with the roles and permissions API.

For all but the most complex scenarios you can create usable administration areas with the conventional APIs. Of course when needed you can create your own components to have full control.

With Apps (Multi Tenancy), Users, Roles, Permissions, Media Management, Configuration and Services all pre built for you, you can focus on building the administration screens that matter.

Theming

Utilizing Laravel's elegant view system with blade syntax FluentKit provides a thin layer of theming to your application.

Your application can take advantage of the numerous theme configuration features of the built in theme. Or you can provide your own theme for more advanced styles and usage.

The core FluentKit features and additional packages utilize the theming system for maximum flexibility.

And for the occasions you may not want to use it, you don't have to. You can use Laravel views or your own templating system just like a usual Laravel Application.

Media Management

Media Management in applications can be difficult, sure uploading files and moving them around is super simple thanks to Laravel and flysystem integration for multi disk usage.

But organising them, providing a good user experience, referencing them across resources, historical management and updates is something you've got to build.

Not every application needs this flexibility, but its built right into the administration area so you get it out of the box and is there when you do need it.

Multi Tenancy

Multi Tenancy is a bit of a dirty word in the Laravel community, not because its difficult but because its such a generic term and there isn't a "right" answer.

Laravel is soo flexible you really can create a "multi tenant" application however way you choose. Again FluentKit aims to solve this by taking this complexity out of the equation when building your applications.

With FluentKit we have a chosen a system that incorporates "Applications" tied to domain name(s).

Each application provides its own configuration, has its own administration area, uploads and manages media in isolation, and finally has all its Eloquent models scoped to the current tenant using a foreign key.

If its not to your taste simply replace the multi tenant middleware with your own and you can still take advantage of FluentKit's other features.

Want to know more?

FluentKit isn't quite ready yet. We have all of the features mentioned validated and are busy adding the final touches.

Were expected to release an alpha in the coming weeks with a V1 later on in 2020.