opral / monorepo

lix (change control system) && inlang (globalization ecosystem for software built on lix)
https://opral.com
Apache License 2.0
1.2k stars 102 forks source link

rethink project folder structure #1274

Closed ivanhofer closed 1 year ago

ivanhofer commented 1 year ago

Sub-tasks

samuelstroschein commented 1 year ago

Agree, the folder structure is messy. A few observations:

Some proposals

Folder structure 1

.
├── lisa/
│   ├── source-code/
│   │   ├── client
│   │   ├── server
│   │   └── filesystem
│   ├── documentation
│   └── README.md
├── inlang/
│   ├── source-code/
│   │   ├── apps
│   │   ├── plugins
│   │   ├── lint-rules
│   │   └── libraries
│   ├── documentation
│   └── README.md
├── careers
├── documents
├── website
└── ...

Folder structure 2

.
├── lisa/
│   ├── client
│   ├── server
│   ├── filesystem
│   ├── documentation
│   └── README.md
├── inlang/
│   ├── apps
│   ├── plugins
│   ├── lint-rules
│   ├── libraries
│   ├── documentation
│   └── README.md
├── careers
├── documents
├── website
└── ...

Folder structure 3

.
├── source-code/
│   ├── lisa/
│   │   ├── client
│   │   ├── server
│   │   ├── filesystem
│   │   ├── documentation
│   │   └── README.md
│   ├── inlang/
│   │   ├── apps
│   │   ├── plugins
│   │   ├── lint-rules
│   │   ├── libraries
│   │   ├── documentation
│   │   └── README.md
│   ├── website/
│   │   └── README.md
│   ├── tsconfig.json
│   ├── package.json
│   └── package-lock.json
├── careers
├── documents
└── ...
ivanhofer commented 1 year ago

I would do it the other way around and don't put code into a source-code folder. Instead put non-code into a "not-source-code" folder. Feel free to suggest a name for it ;)

Another question: since inlang and lisa are two different things (companies) should we split those into two git repositories? Website could also be it's own repository but would also fit into the current inlang repository.

samuelstroschein commented 1 year ago

since inlang and lisa are two different things (companies) should we split those into two git repositories?

I would leave everything in a monorepo to leverage monorepo benefits.

For marketing, different repos likely make sense, but we would lose monorepo benefits such easy dependency sharing (inlang builds on lisa) and cross-project tests (npm run test captures both lisa and inlang tests). Maybe we can create a placeholder lisa repository just for marketing purposes. Same for inlang, actually. This repo would become x and x/inlang is the mirrored repo from x/monorepo/inlang.

Ugh, we should rename the organization to:

a) reflect and communicate that we are building multiple products. b) have dedicated marketing pages for each product

// x = labfrogs (placeholder)

labfrogs/monorepo

labfrogs/inlang     (mirrored from labfrogs/monorepo/inlang)
labfrogs/lisa       (mirrored from labfrogs/monorepo/lisa)
labfrogs/lisahub    (mirrored from labfrogs/monorepo/lisahub)
labfrogs/atelier    (mirrored from labfrogs/monorepo/atelier)
...

The structure above also entails that structure 1 or 2 are the way to go.

felixhaeberle commented 1 year ago

+1 leave everything in a monorepo.

samuelstroschein commented 1 year ago

Folder structure 3 makes most sense in anticipation of "a lix repository can have apps [like inlang]" where the apps store application data in repo/applications/*.

.
+|---- applications/inlang
├── source-code/
│   ├── lisa/
│   │   ├── client
│   │   ├── server
│   │   ├── filesystem
│   │   ├── documentation
│   │   └── README.md
│   ├── inlang/
│   │   ├── apps
│   │   ├── plugins
│   │   ├── lint-rules
│   │   ├── libraries
│   │   ├── documentation
│   │   └── README.md
│   ├── website/
│   │   └── README.md
│   ├── tsconfig.json
│   ├── package.json
│   └── package-lock.json
├── careers
├── documents
└── ...
felixhaeberle commented 1 year ago

@samuelstroschein can this be closed?