Directory Hierarchy

After a ailtire project is created a standard directory hierarchy contains several directories and files. The directory hierachy is a convention that is used to design, document and simulate the architecture. There are several commands that can be run to automatatically create parts of the directory structure based on the types of elements being created. Example: Usecases, packages, models etc…

The top directory of every ailtire project has the following structure.

  • actors - Contains the actors of the system.
  • api - Contains the packages/subsystems of the system.
    • deploy - How the system is deployed in several environments.
      • microservice - Microservice definition
        • Dockerfile - image definition for the microservice
        • package.json - package file for the nodejs application
        • server.js - entry point for the nodejs application implementing the microservice.
      • buildEngine.js - Build script for containers
      • deploy.js - Deployment defintion of the stack defined in the docker-compose.yaml file.
      • docker-compose.yaml - Definition of the stack of micro-services, networks, and storage.
    • doc - Contains the additional documernation for the system. Generated documentation will include this system documentation.
    • handlers - definition of event handles for the subsystem.
    • interface - REST, CLU, and web interface for the subsystem.
    • models - Data Model for the Subsystem.
    • usecases - Use cases of the Subsystem.
    • index.js - definition of the subsystem.
    • - Name of the subsystem of the system and contains all design elements of the subsystem.
      • deploy - deployment design of the subsystem. This include microservice definitions.
      • doc - Additional documentation for the subsystem. This is where you place your own documentation. Will be included in the document generation.
      • handlers - same as above but for this subsystem.
      • interface - same as above but for this subsystem
      • models - same as above but for this subsystem
      • usecases - same as above but for this subsystem
      • index.js - same as above but for this subsystem
      • - Directory containing all sub systems. This can continue as deep as needed in the architecture.
  • assets - Contains all assets used in the web interface for the architecture.
  • bin - Contains command line binary for the system.
  • deploy - Contains design of how the system is deployed and its environments
  • docs - Generated for github pages. Do not put files in this directory it is autogenerated.
  • physical - Physical architecture of the system
    • environments -
      • dev.js - Development environment physical architecture.
      • test.js - Test environment physical architecture.
      • prod.js - Production environment physical architecture.
    • modules - Reusable modules of the system including compute, storage, network.
      • compute - directory with reusable compute elements
      • storage - directory with reusable storage elements
      • network - directory with reusable network elements
  • templates - Contains any files used for the generation of complex or simple objects in the system.
  • test - Contains test for the system.
    • bin - Test the CLI
    • actors - Test the Actor interactions One Test Suite per Actor with each use case
    • usecases - Test the Scenarios as described. One Test Suite per Scenario with tests for each different path through the scenario.
    • packages - Test of each subsystem. One Test Suite for each SubSystem, a test for each of the interface calls.
  • views - Contains different web interface views of the system.