@sam thats a very good point and I completely agree.
But in this particular app structure, you follow a “feature pattern” within the imports/_screens/ directory. A screen can be seen as a “mini” app as a composition of different components to provide “access” to a feature. The feature file for “that mini app” therefore be within that directory.
As this is pretty abstract, here an illustration.
App
├── ...
├── imports/
│ ├── #components/...
│ ├── _screens/ <---------------+ Directory structure
│ │ ├── _shared/ follow routes. Routes
│ │ │ ├── _auth.jsx follow features.
│ │ │ ├── _auth.less
│ │ │ ├── _notFound.jsx
│ │ │ └── _notFound.less
│ │ ├── join/
│ │ │ └── Join.jsx
│ │ ├── lists/ +-----+ Feature Lists (Specific)
│ │ │ ├── ListsContainer.jsx |
│ │ │ ├── _Header.jsx | lists are a Feature
│ │ │ ├── _Header.less | of the App and are
│ │ │ ├── _Lists.jsx | made available under
│ │ │ ├── _Lists.less | the app.com/lists route.
│ │ │ ├── _TodoItem.jsx |
│ │ │ └── _TodoItem.less | Acceptance Test tha
│ │ ├── signin/ +-----+ lists do work as expected
│ │ │ └── SignIn.jsx
│ │ ├── _App.jsx +-----+ Feature App (Global)
│ │ ├── _App.less |
│ │ ├── _ListList.jsx | feature of using
│ │ ├── _ListList.less | routes for navigation
│ │ ├── _Menu.jsx | welcome messages,
│ │ ├── _Menu.less | connectivity status
│ │ ├── AppContainer.jsx | etc.
│ │ └── routes.jsx +-----+
│ ├── api/...
│ ├── lib/...
│ ├── server/...
│ ├── stylesheets/...
│ ├── client.entry.jsx
│ ├── server.entry.js
│ └── style.entry.less
├── ...
Imagine you want to acceptance test the user story to be able to manage lists. That feature lives with the screen - placing the feature files there - having the benefit to immediately see when you are short on tests of a particular feature.
Right now I am just thinking how to aggregate all the files again for chimp. Could chimp digest a “feature.entry.js” that requires / imports all the files from the screens sub-folders?
I have to admit, I have not yet played around much with chimp. But I certainly value your feedback.