This folder contains the ideal directory structure for each kind of system, app or project. It has been freely inspired by Filesystem Hierarchy Standard (FHS) and various other projects. It can be used for all kind of projects and languages (PHP, Java, C++, Nodejs etc.) but even for Operating Systems. Of course, depending on the purposes, some directories can be avoided/changed (e.g. some frameworks can force you to use some directories not expected by this standard).
Feel free to use our issue tracker to send suggestions and opinions.
Awareness level: it defines which components can access to others. Components with equal or higher level (top) can access to components with equal or lower level (bottom). Not following this rules can probably cause a bad and no modular software architecture.
conf: configuration files
apps: Utilities and applications with an higher level of awareness compared to modules.
modules: A module can be everything you need to compose a “system”. Such as an addon,plugin,framework etc. Normally this folder should be handled by a package manager or git submodule.
deps: Static dependencies, instead of modules they are pre-installed (eventually can be handled by git subtree). If you don’t need this kind of separation you can use modules folder for both essential dependencies and addons.
Note: plural form of folder above is used to emphasize the modular purpose.
env: container of sub environments
<name of your system/app> : you could create an extra environment for your app creating extra levels of awareness.
users: folder that can be used by user for its workspace files or second level context
sys: could be used and standardized by an operating system to handle directories related to hardware devices etc.
[…]
Since DIRS 2.0 can be used for a simple application package, a developing workspace or even an operating system, You can use varius subsets of this standard that follow your needs. Read some example HERE
First version of this standard was limited to offer directories where store files and components for each kind of needed situations.
Version 2 instead adds multiple specifications to improve modular software design. Introducing concepts such as: