System Component Listing

Here we begin documenting the system in detail, moving away from purely conceptual discussions to examining more concrete implementation details.

Overview

The listing below shows the currently existing Elixir components which make up the application server (app_server), their dependencies, and their relationship with each other.

Each listed Component includes links to its application API documentation. If the Component depends on the database, a link to the Component specific database documentation and ERD is also included. Note that the inclusion of the database documentation at the Component level is not meant to imply that each Component requires its own database, but rather to ensure that only the relevant database documentation is presented in the Component context.

Platform

Msplatform

Msplatform is an Elixir/Phoenix umbrella project which provides the runtime environment for its hosted user applications and defines the user interfaces (web/external API). The umbrella itself exists to support these application/Subsystem runtime boundaries including the conditional inclusion/exclusion of various Subsystems in any given client specific build/release. The apps of the Msplatform umbrella are:

Subsystems

Component Documentation

These Components are listed in “Lower Level Component” to “Higher Level Component” order. Lower Level Components offer more simple, base level functionality whereas Higher Level Components will offer more complex functionality closer to the final business logic. Often times Higher Level Components will depend on Lower Level Components.

  • MscmpSystAuthn

    (API Docs) / (Database Docs & ERD)

    API for the management of user authentication.

    This Component provides a global method of authentication for users wishing to use the system.

  • MscmpSystDb

    (API Docs)

    A database management library for developing and managing database-per-tenant oriented systems. To achieve this we wrap and extend the popular Ecto and EctoSql libraries with a specialized templated migration system and add additional, opinionated abstractions encapsulating the tenant model as it relates to development, data access, and runtime concerns.

  • MscmpSystEnums

    (API Docs) / (Database Docs & ERD)

    A framework for user configurable ’list of values’ type functionality.

  • MscmpSystError

    (API Docs)

    This module defines a nested structure for reporting errors in contexts where a result should be represented by an error result. By capturing lower level errors and reporting them in a standard way, various application errors, especially non-fatal errors, can be handled as appropriate and logged for later analysis.

    • First Party Dependencies

      (none)

    • Third Party Dependencies

      (none)

  • MscmpSystForms

    (API Docs)

    The MscmpSystForms module provides a standard methodology for authoring application user interface forms in support of business management system development.

  • MscmpSystInstance

    (API Docs) / (Database Docs & ERD)

    “Instances” are instances of running application environments. Instances are established to host the application for different purposes, such as for running the application for production, training, and testing purposes; or as a means to implement multi-tenancy where each tenant application environment is an Instance.

    Each Instance also requires supporting data in order to facilitate runtime actions, such as defining database roles with which to access database data. Such supporting information is also managed via this component.

  • MscmpSystLimiter

    (API Docs)

    This component limits the rate at which targeted services can be called by any one caller to a level which preserves the availability of resources to all users of the system, or makes brute force information gathering prohibitively time intensive to would be attackers of the system.

  • MscmpSystMcpPerms

    (API Docs) / (Database Docs & ERD)

    Implements MscmpSystPerms related functionality for the MssubMcp subsystem.

  • MscmpSystNetwork

    (API Docs)

    Simple IP address handling and convenience functionality.

  • MscmpSystOptions

    (API Docs)

    API for retrieving and working with option files stored in the application server file system.

  • MscmpSystPerms

    (API Docs) / (Database Docs & ERD)

    Provides a generalized foundation for user permission system implementations.

    The principle idea of this component is to organization permissions in a way that higher level components can introduce the concept of user and establish contexts of applicability while keeping a cohesion in permissioning capability. To this end this component provides the core concepts for use in any permissioning system using this ecosystem of components.

  • MscmpSystSession

    (API Docs) / (Database Docs & ERD)

    Session Management API & Runtime

  • MscmpSystSettings

    (API Docs) / (Database Docs & ERD)

    The Settings Service provides caching and management functions for user configurable options which govern how the application operates. Multiple Settings Service instances may be in operation depending on the needs of the application; for example, in the case of multi-tenancy, each tenant will have its own instance of the Setting Service running since each tenant’s needs of the application may unique.

  • MscmpSystUtils

    (API Docs)

    Common utility functions generally useful across components.

    • First Party Dependencies

      (none)

    • Third Party Dependencies

      (none)