System Component Listing
Example Documentation
If you are reading this documentation to see and/or evaluate examples of this project’s documentation, we recommend looking at theMscmpSystAuthn
Component documentation. This documentation is reasonably complete and representative of the documentation standards this project hopes to achieve.
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.
Dependency Listings
Note that only dependencies which are active at runtime in production are listed below. Excluded are those dependencies that are only present to support development or testing.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:
-
MsappMcp
(API Docs)
Provides the MCP “controller” level logic which responds to user input from the view layer and invokes logic from the
MssubMcp
Subsystem.MsappMcp
also defines the abstract configuration of the various user interface forms according to form development standards set by theMscmpSystForms
Component.-
First Party Dependencies
mscmp_syst_error
,mscmp_syst_forms
,mscmp_syst_network
,mscmp_syst_options
,mscmp_syst_perms
,mssub_mcp
-
Third Party Dependencies
-
-
MsappMcpWeb
(API Docs)
Defines the Phoenix user interface “view” layer used by users of the Master Control Program (MCP) application. In addition, operational issues such as request routing and other typical Phoenix web related functions are handled here as well. This component invokes
MsappMcp
functionality in order to carry out user wishes.-
First Party Dependencies
-
Third Party Dependencies
gettext
,jason
,phoenix
,phoenix_ecto
,phoenix_html
,phoenix_live_view
,phoenix_live_dashboard
,plug_cowboy
telemetry_metrics
,telemetry_poller
,
-
Subsystems
-
MssubBms
(API Docs) / (Database Docs & ERD)
A business logic subsystem implementing the Muse Systems Business Management Systems. An Msplatform application delivering a complete small to mid-sized business management solution.
-
First Party Dependencies
mscmp_syst_enums
,mscmp_syst_error
,mscmp_syst_settings
,mscmp_syst_utils
-
Third Party Dependencies
(none)
-
-
MssubMcp
(API Docs) / (Database Docs & ERD)
The “Master Control Program” subsystem which provides global user authentication and environment/tenant administration for all applications running on the MuseBMS platform.
-
First Party Dependencies
mscmp_syst_authn
,mscmp_syst_enums
,mscmp_syst_error
,mscmp_syst_instance
,mscmp_syst_mcp_perms
,mscmp_syst_options
,mscmp_syst_perms
,mscmp_syst_settings
,mscmp_syst_session
,mscmp_syst_utils
-
Third Party Dependencies
(none)
-
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.
-
First Party Dependencies
mscmp_syst_db
,mscmp_syst_enums
,mscmp_syst_error
,mscmp_syst_instance
,mscmp_syst_limiter
,mscmp_syst_network
,mscmp_syst_options
,mscmp_syst_utils
-
Third Party Dependencies
-
-
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
andEctoSql
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.-
First Party Dependencies
-
Third Party Dependencies
-
-
MscmpSystEnums
(API Docs) / (Database Docs & ERD)
A framework for user configurable ’list of values’ type functionality.
-
First Party Dependencies
-
Third Party Dependencies
(none)
-
-
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.-
First Party Dependencies
-
Third Party Dependencies
-
-
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.
-
First Party Dependencies
mscmp_syst_db
,mscmp_syst_enums
,mscmp_syst_error
,mscmp_syst_options
,mscmp_syst_utils
-
Third Party Dependencies
(none)
-
-
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.
-
First Party Dependencies
-
Third Party Dependencies
-
-
MscmpSystMcpPerms
(API Docs) / (Database Docs & ERD)
Implements
MscmpSystPerms
related functionality for theMssubMcp
subsystem.-
First Party Dependencies
mscmp_syst_authn
,mscmp_syst_db
,mscmp_syst_error
,mscmp_syst_perms
,mscmp_syst_utils
-
Third Party Dependencies
(none)
-
-
MscmpSystNetwork
(API Docs)
Simple IP address handling and convenience functionality.
-
First Party Dependencies
-
Third Party Dependencies
-
-
MscmpSystOptions
(API Docs)
API for retrieving and working with option files stored in the application server file system.
-
First Party Dependencies
-
Third Party Dependencies
-
-
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.
-
First Party Dependencies
-
Third Party Dependencies
(none)
-
-
MscmpSystSession
(API Docs) / (Database Docs & ERD)
Session Management API & Runtime
-
First Party Dependencies
-
Third Party Dependencies
(none)
-
-
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.
-
First Party Dependencies
-
Third Party Dependencies
(none)
-
-
MscmpSystUtils
(API Docs)
Common utility functions generally useful across components.
-
First Party Dependencies
(none)
-
Third Party Dependencies
(none)
-