I'm currently in the planning phase / feasability study of a rather big web application which is meant to be implemented using Laravel. My own experience on the matter is rather limited but I'd like to take the opportunity to further my skills and, if successful, release the basis of the code under MIT license for anyone to use.
The task at hand (sorry for the essay but it's rather complex):
I'm working for a company with a rather complex customer and service structure: We offer multiple services, ranging from risk assessment to education (online and on-site) in workplace safety, security data sheets for products, environmental questions, data protection etc. and want to create a platform that allows us to manage our customer and service structure while also giving our customers access to these services online, including API support. Customers may have entirely different company hierarchies, ranging from a small company of 10 employees that just distinguishes between regular employees and management to companies with thousands of employees with complex hierarchies including multiple branches, departments, sites and project management.
Some of our services are specific to sites, some to departments, some to branches, some to projects (e.g. a construction project) and/or to the whole company. We wish to have different access levels for different employees of the customers and the optional ability for customer admins to manage their own users/permissions.
The idea was to create a global management platform which manages the whole customer, user and permission structure with the individual services being split up into different apps which are included in the global platform but can individually be assigned to each customer with the ability to assign certain roles for users and groups to each app, also users can have multiple group memberships and different roles in different groups. These apps not only include our services, but also basic functionality like user and group management. The management of the platform should be separate from the user part, meaning our employees should have access via an administrative dashboard while also having the ability to assign a certain customer to a certain employee of ours with the permission to manage one or more specific service for this customer.
Here is the idea for a database structure I had: The individual services/apps will have their own respective tables except for the ones which are there for global management functionality like user management.
The questions I have:
- Is this even feasible to do with Laravel? If not, what are the alternatives?
- Is my database structure ok or compeletely stupid for the task at hand?
- Which are the Laravel plugins I should look into?
- Any other directions, e.g. folder structure within the laravel project folder etc.?