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: adds an installation guide #479

Merged
merged 13 commits into from
Sep 25, 2023
127 changes: 127 additions & 0 deletions docs/pages/installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
title: 'Installation guide'
weight: 30
---

## Glee Installation

Before installing Glee into your project, make sure you have pre-installed NPM, NodeJs and [AsyncAPI CLI](https://github.com/asyncapi/cli) tools on your system.

### Automatic Installation

The best way to get started with Glee is by using AsyncAPI CLI, which sets up everything automatically for you.
To create a project, run:

```sh
asyncapi new glee
```

> For more information on how to install the AsynAPI CLI, you can review the [CLI installation guide](https://www.asyncapi.com/docs/tools/cli/installation).

On installation, you'll find next steps after your project created:

```
Your project "project" has been created successfully!

Next steps:

cd project
npm install
npm run dev

Also, you can already open the project in your favorite editor and start tweaking it
```

While making twists to your application, you can follow along with our getting started guide on the relevant page.
Copy link
Member

Choose a reason for hiding this comment

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

I think adding the link will be useful.

Copy link
Contributor Author

@afzal442 afzal442 Sep 19, 2023

Choose a reason for hiding this comment

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

Yes! I will do that once page rendered or reviewed with a link on the website itself


### Manual Installation

To manually create a new app, create a new folder e.g. `myapp` so the folder structure would look like below;

```
├─ functions (required)
│ ├─ onHello.js
│ └─ ...
├─ lifecycle (optional)
│ ├─ onConnect.js
│ └─ ...
├─ .env (optional)
├─ asyncapi.(yaml | yml | json) (required)
├─ glee.config.js (optional)
├─ package.json (required)
```

Install the required packages inside a new folder:

```js
npm init -y
npm install @asyncapi/glee
```

Open your package.json file and add the following scripts:

```js
{
"scripts": {
"docs": "glee docs",
"dev": "glee dev",
"start": "glee start",
}
}
```

These scripts refer to the different stages of developing an application.

- `glee docs`: This script generates documentation for your project using the "Glee" documentation tool. This documentation includes information about your project's APIs, modules, and usage instructions.

- `glee dev`: This script is used for starting a development server. It launches a local development server, build your project in development mode, or perform other development-related tasks.

- `glee start`: This script is responsible for starting your project or application. It is used to launch a production-ready server or application instance.

#### Creating `asyncapi.yaml` file and other required directories

Create a yaml file that supports capable of receiving a "hello {name}" message with the protocol as `ws` and the channel name as `hello` the hello API will subscribe to. The operationId property is `onHello` that's the name of function and the payload property is type string publishing to that channel.

```yaml
asyncapi: 2.6.0
info:
title: Hello, Glee!
version: 0.1.0

servers:
websockets:
url: ws://0.0.0.0:3000
protocol: ws

channels:
hello:
publish:
operationId: onHello
message:
$ref: '#/components/messages/hello'
subscribe:
message:
$ref: '#/components/messages/hello'

components:
messages:
hello:
payload:
type: string
```

Create an operation function `onHello.js` inside `myapp/functions`:

```js
export default async function (event) {
return {
reply: [{
payload: `Hello from Glee! You said: "${event.payload}".`
}]
}
}

afzal442 marked this conversation as resolved.
Show resolved Hide resolved
#### Run the Development Server

- Run `npm run dev` to start the development server.
- Connect to `ws://localhost:3000/hello` and send a WebSocket request with a payload e.g. {"john"}
Loading