# 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-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`                                                                                                                                                                                                                         |
| [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. |
| [core](https://github.com/strongloop/loopback-next/tree/master/packages/core)                                          | @loopback/core                        | Define and implement core constructs such as Application and Component                                                                                                                                                                                                                           |
| [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-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-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-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                                                                                                                                                                                                                                             |
| [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                                                                                                                                                                                        |
| [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-types](https://github.com/strongloop/loopback-next/tree/master/packages/openapi-v3-types)                  | @loopback/openapi-v3-types            | TypeScript type definitions for OpenAPI Specifications                                                                                                                                                                                                                                           |
| [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                                                                                                                                                                                                           |
| [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.
