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

Docs: Plugins Overhaul #393

Merged
merged 11 commits into from
Nov 5, 2023
52 changes: 52 additions & 0 deletions docs/getting-started/official-plugins.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: Official Plugins
sidebar_label: Official Plugins List
slug: /plugins-list
pagination_next: "plugins/overview"
pagination_prev: getting-started/plugins
---

# Official Amplication Plugins

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dericksozo I dont think we should call these plugins official. on the pricing pages we refer to them as community plugins

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GreenMachine01 I just renamed this to "Community Plugins".


The following plugins are currently available.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we might have more plugins not listed in the docs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GreenMachine01 I added a note to take care of this in the most recent commit.

Additional plugins will be added in future releases of Amplication.

### MongoDB

[MongoDB](https://www.mongodb.com/) is a free and open-source cross-platform document-oriented database program. It is classified as a NoSQL database program, meaning that it does not use the traditional SQL relational database management system. Instead, it uses JSON-like documents with optional schemas to store data.

MongoDB is used to store and retrieve large amounts of data in real-time, and it is often used in situations where high performance and horizontal scaling are required.

### PostgreSQL

[PostgreSQL](https://www.postgresql.org/) is a free and open-source relational database management system that is designed to be highly scalable, reliable, and powerful. It is known for its ability to handle large amounts of data and a high volume of queries.

PostgreSQL can handle complex data structures and relationships. It supports a wide range of data types, including arrays, JSON, and XML, and it has robust support for stored procedures, triggers, and views.

### MySQL

[MySQL](https://www.mysql.com/) is an open-source relational database management system that is widely used in web applications and other software platforms. It is known for its reliability, simplicity, and performance. It is a powerful tool for storing and managing data in a structured and organized way.

### Kafka

[KafkaJS](https://kafka.js.org/) is a distributed streaming platform, used for building real-time data pipelines and streaming applications. It is a publish-subscribe messaging system that allows for the creation of high-throughput and low-latency systems.

In the Apache Kafka messaging system, processes known as producers write data to Kafka topics, and processes known as consumers read data from Kafka topics.

### NestJS Auth Module

The NestJS Auth Module plugin provides all the basic modules required for authentication of the service.
Installation of this plugin is mandatory for the service to be authenticated, and must be installed together with the JwT Auth Provider plugin or the Basic Auth Provider plugin, as follows:

### JWT Auth Provider

[Passport](https://www.passportjs.org/) based JWT authentication involves the client sending a request to the server with a user's credentials in the form of a username and password. The server then authenticates the user and issues a JWT if the credentials are valid. This allows the client to authenticate subsequent requests to the server using the JWT.
Read more about authentication [here](https://docs.nestjs.com/security/authentication).

### Basic Auth Provider

Basic authentication is a simple authentication scheme built into the HTTP protocol that involves sending a request to a server with a user's credentials in the form of a username and password. The credentials are encoded in base64 and included in the Authorization header of the request.

### Prettier

[Prettier](https://prettier.io/) is an opinionated code formatter that automatically formats your code to ensure adherence to a consistent style. Code is automatically formatted every time it is committed.
70 changes: 16 additions & 54 deletions docs/getting-started/plugins.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,22 @@
---
id: plugins
title: How To Use Plugins
sidebar_label: Use Plugins
sidebar_label: How To Use Plugins
slug: /getting-started/plugins
pagination_next: plugins/overview
pagination_prev: getting-started/official-plugins
---

## Overview
Plugins are custom code that extend the functionality of your generated application.

Use plugins to extend the functionality of your generated application.
Some plugins are included in Amplication by default. To add more functionality, you can develop your own plugins, or can use plugins developed by the community, as they become available.
Amplication includes [official plugins](//plugins-list) by default. To add more functionality, you can [develop your own plugins](/plugins/overview), or can use plugins developed by the community, as they become available.

The published plugins are available on the _All Plugins_ screen.
The installed plugins are shown on the _Installed Plugins_ screen.
All the official plugins are available on the _All Plugins_ screen in the Amplication dashboard.
Your installed plugins for a particular service are shown on the _Installed Plugins_ screen.

## Available Plugins
This guide will teach you how to install a plugin, manage plugin versions, and access the plugins list.

The following plugins are currently available. Addition plugins will be added in future releases of Amplication.

### MongoDB

[MongoDB](https://www.mongodb.com/) is a free and open-source cross-platform document-oriented database program. It is classified as a NoSQL database program, meaning that it does not use the traditional SQL relational database management system. Instead, it uses JSON-like documents with optional schemas to store data.

MongoDB is used to store and retrieve large amounts of data in real-time, and it is often used in situations where high performance and horizontal scaling are required.

### PostgreSQL

[PostgreSQL](https://www.postgresql.org/) is a free and open-source relational database management system that is designed to be highly scalable, reliable, and powerful. It is known for its ability to handle large amounts of data and a high volume of queries.

PostgreSQL can handle complex data structures and relationships. It supports a wide range of data types, including arrays, JSON, and XML, and it has robust support for stored procedures, triggers, and views.

### MySQL

[MySQL](https://www.mysql.com/) is an open-source relational database management system that is widely used in web applications and other software platforms. It is known for its reliability, simplicity, and performance. It is a powerful tool for storing and managing data in a structured and organized way.

### Kafka

[KafkaJS](https://kafka.js.org/) is a distributed streaming platform, used for building real-time data pipelines and streaming applications. It is a publish-subscribe messaging system that allows for the creation of high-throughput and low-latency systems.

In the Apache Kafka messaging system, processes known as producers write data to Kafka topics, and processes known as consumers read data from Kafka topics.

### NestJS Auth Module

The NestJS Auth Module plugin provides all the basic modules required for authentication of the service.
Installation of this plugin is mandatory for the service to be authenticated, and must be installed together with the JwT Auth Provider plugin or the Basic Auth Provider plugin, as follows:

### JWT Auth Provider

[Passport](https://www.passportjs.org/) based JWT authentication involves the client sending a request to the server with a user's credentials in the form of a username and password. The server then authenticates the user and issues a JWT if the credentials are valid. This allows the client to authenticate subsequent requests to the server using the JWT.
Read more about authentication [here](https://docs.nestjs.com/security/authentication).

### Basic Auth Provider

Basic authentication is a simple authentication scheme built into the HTTP protocol that involves sending a request to a server with a user's credentials in the form of a username and password. The credentials are encoded in base64 and included in the Authorization header of the request.

### Prettier

[Prettier](https://prettier.io/) is an opinionated code formatter that automatically formats your code to ensure adherence to a consistent style. Code is automatically formatted every time it is committed.

## Installing plugins

To install a plugin:
## How To Install A Plugin

1. In the _All Plugins_ page, click **Install** for the required plugin.

Expand All @@ -71,6 +28,11 @@ To install a plugin:

3. To see the plugin on gitHub, select **View on GitHub**.

## Access the Official Plugins List

You can view all official plugins on the _All Plugins_ page.
They're also available on the [Official Plugins](/plugins-list) page here on the Amplication documentation.

## Order of Plugin Execution

The plugins are executed when Amplication generates code, according to their order on the *Installed Plugins* page.
Expand All @@ -80,7 +42,7 @@ If a plugin execution is a prerequisite for another plugin, it must be located e
- To change the order of the installed plugins, click the up or down arrow to the right of the plugin bar.
- To activate or deactivate the plugin, click the toggle switch.

## Managing Plugin Versions
## How To Manage Plugin Versions

Amplication plugin developers may release several versions of a plugin over time. By default, the latest version will be available when installing the plugin.

Expand All @@ -104,7 +66,7 @@ By default, the latest version of the plugin will be available in the list of pl
Each version of the Plugin has its own settings, so when you replace the version you also replace its settings.
:::

## Creating Plugins
## How To Develop Custom Plugins

To add more functionality, you can develop your own plugins, or can use plugins developed by the community, as they become available.

Expand Down
4 changes: 2 additions & 2 deletions docs/plugins/developing-a-plugin.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: how-to-create-plugin
title: How to Create a Plugin
sidebar_label: How to Create a Plugin
title: How to Create a Custom Plugin
sidebar_label: How to Create a Custom Plugin
slug: /plugins/how-to-create-plugin
---

Expand Down
2 changes: 2 additions & 0 deletions docs/plugins/plugindev-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ id: overview
title: Plugin Development Overview
sidebar_label: Overview
slug: /plugins/overview
pagination_next: plugins/plugin-architecture
pagination_prev: plugins/event-hierarchy
---

# Plugin Development Overview
Expand Down
4 changes: 2 additions & 2 deletions docs/plugins/publish-your-plugin.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: publish-plugin
title: Publishing Your Plugin
sidebar_label: Publishing Your Plugin
title: How To Publish a Custom Plugin
sidebar_label: How To Publish a Custom Plugin
slug: /plugins/publish-plugin
---

Expand Down
4 changes: 2 additions & 2 deletions docs/plugins/testing-a-plugin.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: how-to-test-plugin
title: How to Test a Plugin
sidebar_label: How to Test a Plugin
title: How to Test a Custom Plugin
sidebar_label: How to Test a Custom Plugin
slug: /plugins/how-to-test-plugin
---

Expand Down
26 changes: 12 additions & 14 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ const sidebars = {
},
items: [
"getting-started/deploy",
"getting-started/plugins",
{
type: "category",
label: "Sync With a Git Provider",
Expand Down Expand Up @@ -119,16 +118,20 @@ const sidebars = {
},
{
type: "category",
label: "Plugin Development",
label: "Plugins",
link: {
type: "doc",
id: "plugins/overview",
type:"doc",
id: "getting-started/plugins"
},
items: [
"plugins/overview",
"getting-started/plugins",
"getting-started/official-plugins",
"plugins/how-to-create-plugin",
"plugins/how-to-test-plugin",
"plugins/publish-plugin",
{
type: "category",
label: "Architecture",
label: "Custom Plugin Architecture",
items: [
"plugins/plugin-architecture",
"plugins/plugin-events-before-after",
Expand All @@ -138,12 +141,7 @@ const sidebars = {
},
{
type: "category",
label: "Developing Plugins",
items: ["plugins/how-to-create-plugin", "plugins/how-to-test-plugin", "plugins/publish-plugin"],
},
{
type: "category",
label: "Plugin Events - Reference",
label: "Custom Plugin Events - Reference",
items: [
"plugins/plugin-events/create-server",
"plugins/plugin-events/create-server-docker-compose",
Expand All @@ -164,8 +162,8 @@ const sidebars = {
"plugins/plugin-events/create-message-broker-topics-enum",
"plugins/plugin-events/create-prisma-schema",
],
},
],
}
]
},
{
type: "category",
Expand Down