Feature based admin file structure

Hey all. I need a bit of help… Thinking out loud. As some of you know, I’m setting up an ‘ideal’ boilerplate admin for Vue. Its backed by Meteor. Since it needs to be scalable I want the file structure to be feature based. Therefore I’ve come up with the approach where I have the following file structure:

./src/core // Contains Initialization code to load the Vue app, the store and route logic
./src/features // Contains the features
./src/features/auth / 
./src/features/auth/components
./src/features/auth/components/LoginForm.vue
./src/features/auth/components/RegistrationForm.vue
./src/features/auth/components/ForgotPasswordForm.vue
./src/features/auth/components/ResetPasswordForm.vue
./src/features/users
./src/features/users/components
./src/features/users/components/UserList

As you can see I have 2 features. One does all the auth related stuff, the other the user management. However, both features ofcourse overlap, because users are managed on the users feature, but that also contains who gets to access what. I’m stuck at this thought. Should they be part of one feature? Should I keep them separate? Maybe i’m forgetting something? Should there be any hierarchy between features where one feature depends on another?

Following DDD I would say yes, because the ‘account’ feature would be an aggregate root of the bounded context ‘User’. Account ofcourse has a relation with ‘Auth’ and ‘ACL’ - just like ‘Profile’.

What do you think? Any preferences?

1 Like