Code Organization

Below is visual description of system codebase tree. Be sure to click on folder name to reveal description of its content.

  • apps-commonApplication configuration files shared by more than one application
    • business-processesPre-configured collections of business processes
      • submittedBusiness processes in Part B
        • {service-name}.jsCollection of all business processes (in Part B) for given service
        • index.jsDictionary of all collections in folder
      • {service-name}.jsCollection of all business processes for given service
      • index.jsDictionary of all collections in folder
    • processing-stepsPre-configured meta data (and collections) of all defined processing steps
      • meta.jsMeta data of all defined processing steps
      • index.jsMeta data enriched with collections of all business processes being currently at given processing step status
    • business-process-list-computed-properties.jsList of business process computed properties needed for proper display of table of business processes in official part
    • business-process-list-properties.jsList of business process direct properties needed for proper display of table of business processes in official part
  • appsConfiguration of all applications in a system
    • {app-name}Configuration for given application
      • binSetup programs for given application
        • generate-client-modelGenerates optimized model file for given application
        • generate-client-programGenerates program bundle for given application
        • generate-html-indexGenerates HTML index file for given application
      • business-processesCollections and meta data of business processes in scope of this flow step (this folder can be found only in applications addressing official step processing)
        • get-default-order-index.jsReturns stamp by which table is sorted by default (used only for on-spot table resolution in client)
        • index.jsCollection of all business processes accessible at given step
        • map.jsMeta configuration enriched with business process collections residing at given statuses of step
        • meta.jsMeta configuration of all status filters applicable for given step. Additionally here we indicate which services given step handles
      • clientClient specific files for given application
        • legacyLegacy browser dedicated modules (this part is sometimes represented by singular `legacy.js` file)
        • css-print.indexIndex of CSS components to be bundled for print views exposed by this application
        • css.indexIndex of CSS components to be bundled for this application to present properly
        • dbjs-dom.jsConfiguration of DBJS DOM bindings needed for this application
        • model.jsLoads model definitions as needed by this application
        • program.jsMain program of this application (first module to be run within a browser)
      • controllerConfiguration of all form (POST) controllers needed for this application
        • client.jsClient (browser) specific configuration
        • index.jsMain configuration that applies to both client (browser) and server
        • server.jsServer specific configuration
      • serverServer specific files for given application
        • notificationsConfiguration of Email notifications specific to this application
        • routes.jsConfiguration of route -> controller map for server only GET routes. It's usually configuration of queries that need to be handled by server (e.g. large data queries or generation of PDF, CVS documents)
        • status-log.jsConfiguration of eventual status logs generated in context of step this application addresses
      • .lintLint configuration adjustments for app files
      • index.html.tplTemplate out of which index.html for application is generated
      • mano.jsApplication configuration file (it's old idea, now used only to back old functionalities)
      • routes.jsURL -> View map for application
  • binSystem setup and start programs
    • adapt-appAdapts newly created application (used only internally)
    • ciRuns all continuous integration scripts (used by configured CI service)
    • cloudfront-invalidateInvalidates cache for changed assets in CloudFront registry
    • create-users-adminCreates User Admin account (usually run after system initialization)
    • db-recomputeRecomputes dbjs rules for all stored records (used to fix eventual inconsistencies that can be caused by bugs or model changes)
    • db-recompute-slaveInitializes slave process for recompute operation (used internally by db-recompute)
    • generate-apps-client-cssGenerates CSS bundles for all applications
    • generate-apps-client-modelGenerates optimized model files for all applications
    • generate-apps-client-programGenerates program bundles for all applications
    • generate-apps-confGenerates applications configuration file (used only internally)
    • generate-apps-html-indexGenerates HTML index files for all applications
    • generate-client-envGenerates env.js for client applications
    • i18n-scanGenerates i18n-scan-map.generated.json which contains maps of all translatable messages from a system
    • ipc-evalAllows IPC communication with memory-db process. See [Debugging](/development/debugging/) chapter
    • lint-webstormLint aid for WebStorm editor
    • lint-webstorm.cmdLint aid for WebStorm editor (applicable on Windows)
    • lint-webstorm.confConfiguration as used by WebStorm linter
    • setupRuns system setup (generates all files needed for proper system run)
    • startStarts the system
  • cssCSS files specific to system. See [CSS organization](/framework/styles) for more info
  • modelSystem specific model definitions. See [Database Model](/framework/model-eregistrations/) for more info
  • node_modulesExternal dependencies of a system
  • publicSystem specific assets
  • scriptSystem specific scripts (usually run via `bin` programs)
    • adapt-appAdapts newly created application (used only internally)
    • generate-client-envGenerates env.js for client applications
    • i18n-scanGenerates i18n-scan-map.generated.json which contains maps of all translatable messages from a system
    • setupRuns system setup (generates all files needed for proper system run)
  • serverServer specific modules
    • appsApplications configuration files
      • conf.jsMap of applications configuration files
      • list.jsList of all system applications
      • routers.jsMap and initialization of server GET requests controller routers for all applications
    • dbDatabase configuration files
      • indexes.jsConfiguration of database indexes (all computed properties of which results we want to persistently store and all reduction mechanisms towards statistics)
      • views.jsConfiguration of reactive list snapshots (e.g. first pages of files pending at given step)
    • processesConfiguration of server processes
      • masterConfiguration of master process
        • apps-access-rules.jsCustomizations to access rules which dictate which data to applications is propagated reactively (via SSE channel)
        • apps-post-controllers.jsConfiguration of all applications POST controllers that are meant to be resolved in master process
        • index.jsProgram that initializes the process
        • process-query-routes.jsConfiguration of all queries that go to this process from memory-db process
        • query-memory-db.jsUtility through which this process can query (via predefined query list) memory-db process
      • memory-dbConfiguration of memory-db process
        • apps-post-controllers.jsConfiguration of all applications POST controllers that are meant to be resolved in memory-db process
        • index.jsProgram that initializes the process
        • process-query-routes.jsConfiguration of all queries that go to this process from master process
        • query-memory-db.jsUtility through which this process can query (via predefined query list) master process
    • tmpFolder for storing temporary files (initially empty)
    • viewSystem specific views and customizations to generic ones. For more information see [Views](/framework/views/) chapter
  • .gitignoreGit ignore rules for system codebase
  • .lintLint configuration settings for system codebase
  • .lintignoreLint ignore rules for system codebase
  • LICENSELICENSE at which system is covered
  • README.mdCover documentation file (It's documentation file as seen on GitHub when we enter the project)
  • circle.ymlCircle CI (Continuous integration) service settings
  • db.jsInitial setup of database instance (it's point from which it should be required in most places)
  • i18n-messages.jsonMap of translations
  • i18n.jsInitial setup of translations module (it's point from which it should be required in most places)
  • package.jsonSystem package configuration file, most importantly it contains configuration of npm scripts