# libmodulor

[![npm version](https://img.shields.io/npm/v/libmodulor.svg?style=for-the-badge&color=blue)](https://www.npmjs.com/package/libmodulor)
[![license](https://img.shields.io/badge/license-LGPL-green.svg?style=for-the-badge)](https://github.com/c100k/libmodulor/blob/master/LICENSE)

A TypeScript library to create platform-agnostic applications.

## Links

- [Website](https://libmodulor.c100k.eu)
- [Documentation](https://libmodulor.c100k.eu/docs)
- [Concepts > Philosophy](https://libmodulor.c100k.eu/docs/concepts/philosophy)
- [Examples > Playground](https://libmodulor.c100k.eu/docs/examples/Playground)
- [Guides > Playground](https://libmodulor.c100k.eu/docs/guides/create-project)

## Getting Started

As described in the [Architecture](https://libmodulor.c100k.eu/docs/concepts/architecture) concept, `libmodulor` follows a 4-layer architecture with `UseCase`, `App`, `Product`, and `Target`.

Here is how to easily create all of them, in a brand new project :

```sh
# Create a project
pnpx libmodulor CreateProject --projectName my-super-project
cd my-super-project

# Create an app
pnpm libmodulor CreateApp --appName Banking

# Create a use case
pnpm libmodulor CreateUC --appName Banking --ucName CreateAccount

# Create a product
pnpm libmodulor CreateProduct --productName CustomerPortal

# Create a target
pnpm libmodulor CreateTarget --productName CustomerPortal --targetName node-express-server
pnpm libmodulor CreateTarget --productName CustomerPortal --targetName node-hono-server
pnpm libmodulor CreateTarget --productName CustomerPortal --targetName node-core-cli
pnpm libmodulor CreateTarget --productName CustomerPortal --targetName node-mcp-server-stdio
```

For more params, checkout the help section : `pnpm libmodulor --help`.

And for more details on the code, follow the ad-hoc guides in the documentation.

## 👨‍💻 Contribute

If you think you can help in any way, feel free to contact me (cf. `author` in `package.json`). I'd love to chat.

## ⚖️ License

[LGPL-3.0](https://github.com/c100k/libmodulor/blob/v0.32.0/LICENSE)
