Skip to content

Maestro V5 - Modular application #281

@leoraba

Description

@leoraba

Part of #279

Summary of request

The goal is to modularize the logic to enable the core functionality to be exposed through REST endpoints as well as invoked programmatically when the project is used as a library. This separation will ensure that the project is flexible, reusable, and maintainable, catering to both application and library use cases.

Details

  • Monorepo Structure: Organize the project as a monorepo with a clear separation between deployable applications and shared libraries:
    • apps/ Folder: This folder will contain all deployable applications, such as the REST API or any other services that leverage the core functionality for production use.
    • packages/ Folder: This folder will house shared libraries that contain reusable logic, utilities, and core functionality. These packages will be consumed by the applications in the apps/ folder and can also be reused or extended by other projects.
  • Provider/Client for Configuration:
    • Develop a provider/client module to manage initial configuration. This module will serve as the primary entry point for accessing all core functionalities.
    • The provider/client should handle configuration settings, such as database connections, API keys, or environment-specific parameters, ensuring that applications and libraries can be easily initialized and managed.
  • Core Functionality Accessibility:
    • Ensure that the core functionality is exposed via REST endpoints for HTTP-based communication.
    • Make these functionalities accessible programmatically, so that developers can leverage them directly when using the project as a library in other codebases or services.

This approach promotes a clean and scalable project architecture, allowing for easier maintenance and the potential for future expansion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions