Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify/consolidate project structure #275

Open
DamianReeves opened this issue Jul 21, 2023 · 0 comments
Open

Simplify/consolidate project structure #275

DamianReeves opened this issue Jul 21, 2023 · 0 comments
Assignees

Comments

@DamianReeves
Copy link
Member

Feature Request

Simplify the project structure:

Description of Problem:

Today we have quite a few modules/projects, which is an artifact of how development has been done (trying some ideas, and wanting to not mix that with core Morphir, as well as previously having a Scala 3 compiler plugin as a goal while wanting to still Support Scala 2).

Today, it feels like there are a bit too many projects (at least for the core of what we are doing).

Potential Solutions:

Going to aim for something along the lines of the following:

.
└── morphir
    ├── build
    │   └── integration
    │       ├── mill
    │       └── sbt
    ├── interop
    │   ├── tapir
    │   ├── vulcan
    │   └── zio
    │       ├── json
    │       └── schema
    ├── knowledge
    ├── macros
    ├── main
    ├── testing
    └── web
        ├── client
        └── server

Let's discuss what we have here:

Here's as summary of the thinking here:

Project Description
morphir This project contains what you need to work with the Morphir data formats: IR & MDM (Morphir data model). It will also contain the implementation of the SDK and the runtime.
morphir/build/integration Projects contained in this folder house various build integrations morphir-scala intends on providing
morphir/interop Projects contained in this folder, are meant to house the different interop libraries we will provide with other libraries (i.e.): zio-json (for JSON), zio-schema, tapir (for API/OpenAPI), vulcan (for Avro), and others
knowledge An implementation of logic programming meant to eventually interop better with Morphir.
macros Macros needed to support the main morphir module.
main The main CLI that allows users to interact with Morphir.
testing Testing helpers used internally by the project
web/client Client-side code for the morphir develop/morphir live tooling you can run in the browser.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant