# Monorepo overview

The [loopback-next](https://github.com/strongloop/loopback-next) repository uses
[lerna](https://lernajs.io/) to manage multiple packages for LoopBack 4.

<!-- PLEASE KEEP THE TABLE ROWS SORTED ALPHABETICALLY BY PACKAGE NAME-->

| Package                                                                                                                       | npm                                        | Description                                                                                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [acceptance/repository-cloudant](https://github.com/strongloop/loopback-next/tree/master/acceptance/repository-cloudant)      | _(private)_                                | Acceptance tests for `@loopback/repository` + `loopback-connector-cloudant`                                                                                                                                                                                                                      |
| [acceptance/repository-mongodb](https://github.com/strongloop/loopback-next/tree/master/acceptance/repository-mongodb)        | _(private)_                                | Acceptance tests for `@loopback/repository` + `loopback-connector-mongodb`                                                                                                                                                                                                                       |
| [acceptance/repository-mysql](https://github.com/strongloop/loopback-next/tree/master/acceptance/repository-mysql)            | _(private)_                                | Acceptance tests for `@loopback/repository` + `loopback-connector-mysql`                                                                                                                                                                                                                         |
| [acceptance/repository-postgresql](https://github.com/strongloop/loopback-next/tree/master/acceptance/repository-postgresql)  | _(private)_                                | Acceptance tests for `@loopback/repository` + `loopback-connector-postgresql`                                                                                                                                                                                                                    |
| [authentication](https://github.com/strongloop/loopback-next/tree/master/packages/authentication)                             | @loopback/authentication                   | A component for authentication support                                                                                                                                                                                                                                                           |
| [booter-lb3app](https://github.com/strongloop/loopback-next/tree/master/packages/booter-lb3app)                               | @loopback/booter-lb3app                    | A booter component for LoopBack 3 applications to expose their REST API via LoopBack 4.                                                                                                                                                                                                          |
| [boot](https://github.com/strongloop/loopback-next/tree/master/packages/boot)                                                 | @loopback/boot                             | Convention based Bootstrapper and Booters                                                                                                                                                                                                                                                        |
| [build](https://github.com/strongloop/loopback-next/tree/master/packages/build)                                               | @loopback/build                            | A set of common scripts and default configurations to build LoopBack 4 or other TypeScript modules                                                                                                                                                                                               |
| [cli](https://github.com/strongloop/loopback-next/tree/master/packages/cli)                                                   | @loopback/cli                              | CLI for LoopBack 4                                                                                                                                                                                                                                                                               |
| [context](https://github.com/strongloop/loopback-next/tree/master/packages/context)                                           | @loopback/context                          | Facilities to manage artifacts and their dependencies in your Node.js applications. The module exposes TypeScript/JavaScript APIs and decorators to register artifacts, declare dependencies, and resolve artifacts by keys. It also serves as an IoC container to support dependency injection. |
| [context-explorer](https://github.com/strongloop/loopback-next/tree/master/extension/context-explorer)                        | @loopback/context-explorer                 | Visualize context hierarchy, bindings, configurations, and dependencies                                                                                                                                                                                                                          |
| [core](https://github.com/strongloop/loopback-next/tree/master/packages/core)                                                 | @loopback/core                             | Define and implement core constructs such as Application and Component                                                                                                                                                                                                                           |
| [cron](https://github.com/strongloop/loopback-next/tree/master/extensions/cron)                                               | @loopback/cron                             | Schedule tasks using cron-like syntax                                                                                                                                                                                                                                                            |
| [docs](https://github.com/strongloop/loopback-next/tree/master/docs)                                                          | @loopback/docs                             | Documentation files rendered at [https://loopback.io](https://loopback.io)                                                                                                                                                                                                                       |
| [eslint-config](https://github.com/strongloop/loopback-next/tree/master/packages/eslint-config)                               | @loopback/eslint-config                    | ESLint configuration for LoopBack projects                                                                                                                                                                                                                                                       |
| [example-access-control-migration](https://github.com/strongloop/loopback-next/tree/master/examples/access-control-migration) | @loopback/example-access-control-migration | An access control example migrated from the LoopBack 3 repository `loopback-example-access-control`                                                                                                                                                                                              |
| [example-context](https://github.com/strongloop/loopback-next/tree/master/examples/context)                                   | @loopback/example-context                  | Standalone examples to illustrate features provided by @loopback/context                                                                                                                                                                                                                         |
| [example-express-composition](https://github.com/strongloop/loopback-next/tree/master/examples/express-composition)           | @loopback/example-express-composition      | A simple Express application that uses LoopBack 4 REST API                                                                                                                                                                                                                                       |
| [example-file-transfer](https://github.com/strongloop/loopback-next/tree/master/examples/file-transfer)                       | @loopback/example-file-transfer            | An example showing how to expose APIs to upload files                                                                                                                                                                                                                                            |
| [example-greeter-extension](https://github.com/strongloop/loopback-next/tree/master/examples/greeter-extension)               | @loopback/example-greeter-extension        | An example showing how to implement the extension point/extension pattern using LoopBack 4                                                                                                                                                                                                       |
| [example-hello-world](https://github.com/strongloop/loopback-next/tree/master/examples/hello-world)                           | @loopback/example-hello-world              | A simple hello-world application using LoopBack 4                                                                                                                                                                                                                                                |
| [example-lb3-application](https://github.com/strongloop/loopback-next/tree/master/examples/lb3-application)                   | @loopback/example-lb3-application          | An example LoopBack 3 application mounted in a LoopBack 4 project.                                                                                                                                                                                                                               |
| [example-log-extension](https://github.com/strongloop/loopback-next/tree/master/examples/log-extension)                       | @loopback/example-log-extension            | An example showing how to write a complex log extension for LoopBack 4                                                                                                                                                                                                                           |
| [example-metrics-prometheus](https://github.com/strongloop/loopback-next/tree/master/examples/metrics-prometheus)             | @loopback/example-metrics-prometheus       | An example to illustrate metrics provided by @loopback/extension-metrics and Prometheus.                                                                                                                                                                                                         |
| [example-multi-tenancy](https://github.com/strongloop/loopback-next/tree/master/examples/multi-tenancy)                       | @loopback/example-multi-tenancy            | An example to illustrate how to enable multi-tenancy with LoopBack's IoC and DI container                                                                                                                                                                                                        |
| [example-rest-crud](https://github.com/strongloop/loopback-next/tree/master/examples/rest-crud)                               | @loopback/example-rest-crud                | An example showing how to use @loopback/rest-crud to define default repository and controller classes                                                                                                                                                                                            |
| [example-rpc-server](https://github.com/strongloop/loopback-next/tree/master/examples/rpc-server)                             | @loopback/example-rpc-server               | An example RPC server and application to demonstrate the creation of your own custom server                                                                                                                                                                                                      |
| [example-soap-calculator](https://github.com/strongloop/loopback-next/tree/master/examples/soap-calculator)                   | @loopback/example-soap-calculator          | A tutorial demonstrating integration with a SOAP webservice                                                                                                                                                                                                                                      |
| [example-todo-list](https://github.com/strongloop/loopback-next/tree/master/examples/todo-list)                               | @loopback/example-todo-list                | Continuation of the todo example using relations in LoopBack 4                                                                                                                                                                                                                                   |
| [example-todo](https://github.com/strongloop/loopback-next/tree/master/examples/todo)                                         | @loopback/example-todo                     | A basic tutorial for getting started with Loopback 4                                                                                                                                                                                                                                             |
| [example-validation-app](https://github.com/strongloop/loopback-next/tree/master/examples/validation-app)                     | @loopback/example-validation-app           | An example demonstrating how to add validation in a LoopBack 4 application                                                                                                                                                                                                                       |
| [express](https://github.com/strongloop/loopback-next/tree/master/packages/express)                                           | @loopback/express                          | Integrate with Express and expose middleware infrastructure for sequence and interceptors                                                                                                                                                                                                        |  | [extension-health](https://github.com/strongloop/loopback-next/tree/master/extensions/health) | @loopback/extension-health | Expose health check related endpoints |
| [extension-logging](https://github.com/strongloop/loopback-next/tree/master/extensions/logging)                               | @loopback/extension-logging                | Add Winston Logger and Fluentd integration                                                                                                                                                                                                                                                       |
| [extension-metrics](https://github.com/strongloop/loopback-next/tree/master/extensions/metrics)                               | @loopback/extension-metrics                | Report metrics to Prometheus                                                                                                                                                                                                                                                                     |
| [fixtures/mock-oauth2-provider](https://github.com/strongloop/loopback-next/tree/master/fixtures/mock-oauth2-provider)        | _(private)_                                | An internal app to mock the OAuth2 authorization flow login with a social app like facebook, google etc                                                                                                                                                                                          |
| [http-caching-proxy](https://github.com/strongloop/loopback-next/tree/master/packages/http-caching-proxy)                     | @loopback/http-caching-proxy               | A caching HTTP proxy for integration tests. NOT SUITABLE FOR PRODUCTION USE!                                                                                                                                                                                                                     |
| [http-server](https://github.com/strongloop/loopback-next/tree/master/packages/http-server)                                   | @loopback/http-server                      | A wrapper for creating HTTP/HTTPS servers                                                                                                                                                                                                                                                        |
| [metadata](https://github.com/strongloop/loopback-next/tree/master/packages/metadata)                                         | @loopback/metadata                         | Utilities to help developers implement TypeScript decorators, define/merge metadata, and inspect metadata                                                                                                                                                                                        |
| [model-api-builder](https://github.com/strongloop/loopback-next/tree/master/packages/model-api-builder)                       | @loopback/model-api-builder                | Types and helpers for packages contributing Model API builders.                                                                                                                                                                                                                                  |
| [openapi-spec-builder](https://github.com/strongloop/loopback-next/tree/master/packages/openapi-spec-builder)                 | @loopback/openapi-spec-builder             | Builders to create OpenAPI (Swagger) specification documents in tests                                                                                                                                                                                                                            |
| [openapi-v3](https://github.com/strongloop/loopback-next/tree/master/packages/openapi-v3)                                     | @loopback/openapi-v3                       | Decorators that annotate LoopBack artifacts with OpenAPI v3 metadata and utilities that transform LoopBack metadata to OpenAPI v3 specifications                                                                                                                                                 |
| [repository-json-schema](https://github.com/strongloop/loopback-next/tree/master/packages/repository-json-schema)             | @loopback/repository-json-schema           | Convert a TypeScript class/model to a JSON Schema                                                                                                                                                                                                                                                |
| [repository](https://github.com/strongloop/loopback-next/tree/master/packages/repository)                                     | @loopback/repository                       | Define and implement a common set of interfaces for interacting with databases                                                                                                                                                                                                                   |
| [repository-tests](https://github.com/strongloop/loopback-next/tree/master/packages/repository-tests)                         | @loopback/repository-tests                 | A shared test suite to verify `@loopback/repository` functionality with a given compatible connector                                                                                                                                                                                             |
| [rest](https://github.com/strongloop/loopback-next/tree/master/packages/rest)                                                 | @loopback/rest                             | Expose controllers as REST endpoints and route REST API requests to controller methods                                                                                                                                                                                                           |
| [rest-crud](https://github.com/strongloop/loopback-next/tree/master/packages/rest-crud)                                       | @loopback/rest-crud                        | REST API controller implementing default CRUD semantics                                                                                                                                                                                                                                          |
| [service-proxy](https://github.com/strongloop/loopback-next/tree/master/packages/service-proxy)                               | @loopback/service-proxy                    | A common set of interfaces for interacting with service oriented backends such as REST APIs, SOAP Web Services, and gRPC microservices                                                                                                                                                           |
| [testlab](https://github.com/strongloop/loopback-next/tree/master/packages/testlab)                                           | @loopback/testlab                          | A collection of test utilities we use to write LoopBack tests                                                                                                                                                                                                                                    |
| [tsdocs](https://github.com/strongloop/loopback-next/tree/master/packages/tsdocs)                                             | @loopback/tsdocs                           | An internal package to generate api docs using Microsoft api-extractor and api-documenter                                                                                                                                                                                                        |

We use npm scripts declared in
[package.json](https://github.com/strongloop/loopback-next/blob/master/package.json)
to work with the monorepo managed by lerna. See
[Developing LoopBack](./DEVELOPING.md) for more details.
