Hi there, @deeknee… there are many ways you could structure your database, of course, but here is what comes to mind based upon the description in your post.
Even though you refer to a company as a user (core users), I can’t see why you wouldn’t want a company to be a thing, so I would very likely have a
Company data type.
You will want to associate users to companies, so you could have a
users field on the
Company data type that is a list of users, you could have a
company field on the
User data type to store the company to which each user belongs, or you could have both in order to have easy access to that association from both data types.
Finally, you are going to want a way to differentiate users who can create companies and customer accounts from the customers themselves, and I would likely do that via a
role field on the
User data type that is tied to an option set that defines the roles. With that field in place, you can control the functionality and pages that each role can access, such as your mention of a separate dashboard for customers.
Anyway, that’s one way to go, and I hope this helps, even if it’s just food for thought.