Coder Social home page Coder Social logo

asyncapi / website Goto Github PK

View Code? Open in Web Editor NEW
353.0 16.0 533.0 71.08 MB

AsyncAPI specification website

Home Page: https://www.asyncapi.com

License: Apache License 2.0

JavaScript 8.39% CSS 0.78% HTML 0.01% TypeScript 89.50% Dockerfile 0.04% MDX 1.29%
nextjs react tailwindcss hacktoberfest nodejs

website's Introduction

AsyncAPI Banner and Logo



Overview

This repository contains the sources of AsyncAPI website:

  • It's powered by Next.js,
  • It uses Tailwind CSS framework,
  • It's build and deployed with Netlify,
  • It uses Storybook as a frontend workshop and for dociuenting UI components.

Requirements

Use the following tools to set up the project:

Run locally

  1. Fork the repository by clicking on Fork option on top right of the main repository.

  2. Open Command Prompt on your local computer.

  3. Clone the forked repository by adding your own GitHub username in place of <username>. For multiple contributions it is recommended to have proper configuration of forked repo.

    git clone https://github.com/<username>/website/
  1. Navigate to the website directory.
    cd website
  1. Install all website dependencies.
    npm install
  1. Run the website locally.
    npm run dev
  1. Access the live development server at localhost:3000.

  2. To run the storybook locally:

    npm run dev:storybook
  1. Access the live storybook development server at localhost:6006.

Compose new blog post

To bootstrap a new post, run this command:

    npm run write:blog

Follow the interactive prompt to generate a post with pre-filled front matter.

Spin up Gitpod codespace

In order to prepare and spin up a Gitpod dev environment for our project, we configured our workspace through a .gitpod.yml file.

To spin up a Gitpod codespace, go to http://gitpod.io/#https://github.com/asyncapi/website.

Build

  1. To build a production-ready website, run the following command:
npm run build

Generated files of the website go to the .next folder.

  1. To build the production-ready storybook, run the following command:
npm run build:storybook

Generated files of the storybook go to the storybook-static folder.

Run locally using Docker

Prerequisites:

After cloning repository to your local, perform the following steps from the root of the repository.

Steps:

  1. Build the Docker image:
    docker build -t asyncapi-website .`
  2. Start the container:
    docker run --rm -it -v "$PWD":/async -p 3000:3000 asyncapi-website

Now you're running AsyncAPI website in a development mode. Container is mapped with your local copy of the website. Whenever you make changes to the code, the website will refresh and changes visible in localhost:3000.

Lint the code

To lint the code, run the following command:

npm run lint

To fix the linting issues, run the following command:

npm run lint:fix

To lint the mdx files, run the following command:

npm run lint:mdx

Start the production server

To build and run a production-ready website, run the following command:

npm run build && npm run start

Generated files of the website go in the .next folder.

Start the netlify production server

Start a local development server for the build tool using the configuration and environment variables set for local development with the Netlify CLI:

netlify dev

To start the server using the configuration and environment variables set for dev or all deploy contexts, run the following command:

netlify dev --context production

Updating information about project finance

AsyncAPI Financial Summary page aims to provide transparency and clarity regarding the organization's financial activities. It serves as a platform to showcase how donations are accepted, different sponsorship options, and how the generated funds are utilized.

How to update information

  • YAML files must be stored in the config/finance directory.

  • Create separate folders for each year under config/finance, such as config/finance/2023. Inside each year's folder, include two YAML files: Expenses.yml and ExpensesLink.yml.

  • In Expenses.yml, record expenses for each month, specifying the Category and Amount.

  • In ExpensesLink.yml, provide discussion links related to expense categories.

  • When a new year begins, create a corresponding folder for that year under config/finance and place the YAML files inside the folder for that specific year. For example, create a folder named config/finance/2024 for the year 2024 and config/finance/2025 for the year 2025. Place the YAML file for each respective year inside its designated folder.

  • Modify the years within the scripts/finance/index.js , lib/getUniqueCategories.js and components/FinancialSummary/BarChartComponent.js to handle data for different years effectively.

Case studies

Overview

A case study is a special document that any end-user company can provide. An end-user company is a company that uses AsyncAPI to solve technical challenges. A case study is not a document where a vendor company can describe how they build their commercial AsyncAPI-based product. On the other hand, it is completely fine if a case study of some end-user mentions some commercial tools that helped them to work with AsyncAPI or event-driven architecture. An example of such a case can be a case study from an end-user where at some point, Confluent Schema Registry is mentioned in an explanation about schemas and runtime message validation.

How to add a case study

A case study is documented in the form of a YAML file. Anyone can open a pull request with a new case study.

  • YAML file must be located in config/casestudies.
  • To make it easier for you to create such a YAML file you can use:
  • All additional files for the case study, like complete AsyncAPI document examples, should be located in the public/resources/casestudies directory.
  • Company logo and other images that will be rendered in the website should be located in public/img/casestudies.

Once you collect all information and create a case study, open a pull request. It must be authored or at least approved by a representative of the given company. Such a representative is probably already a contact person mentioned in the case study.

A case study becomes publicly available right after merging and rebuilding the website.

JSON Schema definitions

All AsyncAPI JSON Schema definition files are being served within the /definitions/<file> path. The content is being served from GH, in particular from https://github.com/asyncapi/spec-json-schemas/tree/master/schemas. This is possible thanks to the following:

  1. A Netlify Rewrite rule located in the netlify.toml file, which acts as proxy for all requests to the /definitions/<file> path, serving the content from GH without having an HTTP redirect.
  2. A Netlify Edge Function that modifies the Content-Type header of the rewrite response to become application/schema+json. This lets tooling, such as Hyperjump, to fetch the schemas directly from their URL.
    Please find a flowchart explaining the flow this edge function should accomplish:
flowchart TD
  Request(Request) -->schema-related{Is it requesting Schemas?}
  schema-related -->|No| req_no_schemas[Let the original request go through]
  req_no_schemas --> Response(Response)
  schema-related -->|Yes| req_schemas[Fetch from GitHub]
  req_schemas-->req_json{Was requesting a .json file?}
  
  req_json -->|No| Response(Response)
  req_json -->|Yes| response_status{Response Status?}
  
  response_status -->|2xx| response_ok[OK]
  response_status -->|304| response_cached[Not Modified]
  response_status -->|Any other| response_ko

  response_ok --> set_headers[Set Response Content-Type header to application/schema+json]
  set_headers --> send_metric_success[Send success metric]
  response_cached -- cached:true --> send_metric_success
  response_ko --> send_metric_error[Send error metric]

  send_metric_success -- file served from raw GH --> Response(Response)
  send_metric_error --the errored response --> Response(Response)
Loading

Project structure

This repository has the following structure:

  ├── .github                                  # Definitions of GitHub workflows, pull request and issue templates
  ├── assets                                   # Various assets
  |    ├── docs                                # Documentation assets
  |        | fragments                         # Docuentations for CLI installation and contribution.
  ├── components                               # Various generic components such as "Button", "Figure", etc.
  ├── config                                   # Transformed static data to display on the pages such as blog posts etc.
  ├── context                                  # Various React's contexts used in website
  ├── locales                                  # Translations for the website
  ├── markdown                                 # Markdown files for the website
       ├── about                               # Markdown files for the /about page
       ├── blog                                # Markdown files for the blog posts
       ├── docs                                # Markdown files for the /docs/* pages
  ├── netlify                                  # Contains Netlify serverless functions to run on Netlify
  ├── pages                                    # Website's pages source. It includes raw markdown files and React page templates.
  │    ├── about                               # Raw blog for /about page
  │    ├── blog                                # Blog posts
  │    ├── docs                                # Blog for /docs/* pages
  │    └── tools                               # Various pages to describe tools
  ├── public                                   # Data for site metadata and static blog such as images
  ├── scripts                                  # Scripts used in the build and dev processes
  ├── styles                                   # Various CSS files
  ├── templates                                # Various template markdown files
  ├── types                                    #  Various typeScript types used in the website
  ├── utils                                    # Various JS code for preparing static data to render in pages
  ├── next.config.mjs                          # Next.js configuration file
  ├── README.md                                # Project's README file
  ├── tailwind.config.js                       # TailwindCSS configuration file
  └── tsconfig.json                            # TypeScript configuration file

Connect with AsyncAPI Community

AsyncAPI Twitter AsyncAPI LinkedIn YouTube AsyncAPI Twitch

AsyncAPI Contributors ✨

Thanks goes to these wonderful people (emoji key):

Fran Méndez
Fran Méndez

💻 📖 🐛 🎨 🚧 🚇 🤔 👀 📝
Lukasz Gornicki
Lukasz Gornicki

💻 📖 🐛 🎨 🚧 🚇 🤔 👀 📝
Maciej Urbańczyk
Maciej Urbańczyk

💻 📖 🐛 🎨 🚧 🚇 🤔 👀 📝
Alejandra Quetzalli
Alejandra Quetzalli

📖 👀 📢
Aayush Kumar Sahu
Aayush Kumar Sahu

💻 🐛 🎨
David Boyne
David Boyne

💻 🎨
Jesse Menning
Jesse Menning

📝
Dimitrios Dedoussis
Dimitrios Dedoussis

📝
Jonas Lagoni
Jonas Lagoni

📝 💻 👀
Sergio Moya
Sergio Moya

💻 📝 👀
Bodo Graumann
Bodo Graumann

📖
Damilola Randolph
Damilola Randolph

💻
Barbanio González
Barbanio González

📝 🤔
Hargun Kaur
Hargun Kaur

💻
Chris Eich
Chris Eich

👀
Simone Fumagalli
Simone Fumagalli

📖
Missy Turco
Missy Turco

💻 🎨 🤔 👀
Ritik Rawal
Ritik Rawal

💻
Akshat Nema
Akshat Nema

💻
David Pereira
David Pereira

💻 📖
Debajyoti Halder
Debajyoti Halder

💻
Juan A.
Juan A.

💻
Muhammad Rafly Andrianza
Muhammad Rafly Andrianza

📖
Harish
Harish

💻
Paul Goldsmith
Paul Goldsmith

💻 🐛
Tabah Baridule
Tabah Baridule

📖
Karuna Tata
Karuna Tata

️️️️♿️
Joseph Mawa
Joseph Mawa

👀
Viacheslav Turovskyi
Viacheslav Turovskyi

📖 💻
Helen Kosova
Helen Kosova

📖
V Thulisile Sibanda
V Thulisile Sibanda

📖
Manav Desai
Manav Desai

📖
Mohd Toukir Khan
Mohd Toukir Khan

📖
Anisat Akinbani
Anisat Akinbani

📖
sambhavgupta0705
sambhavgupta0705

💻
Ankit Chaudhary
Ankit Chaudhary

💻
samz
samz

💻
Bhaswati Roy
Bhaswati Roy

📖
AISHAT MUIBUDEEN
AISHAT MUIBUDEEN

🎨
Nawed Ali
Nawed Ali

💻
Olaleye Blessing
Olaleye Blessing

💻 ️️️️♿️
niranjan-kurhade
niranjan-kurhade

💻
Benjamin Rukundo
Benjamin Rukundo

💻
tthijm
tthijm

🚇
Cynthia Peter
Cynthia Peter

📖
Florence Njeri
Florence Njeri

💻
Ansh Goyal
Ansh Goyal

💻 👀
Sumant.xD
Sumant.xD

🚇
Shriansh Agarwal
Shriansh Agarwal

💻
Aadrika Bhargava
Aadrika Bhargava

💻
Vishvamsinh Vaghela
Vishvamsinh Vaghela

💻
Animesh Kumar
Animesh Kumar

📖 👀
Akshay Sharma
Akshay Sharma

💻
Yuvraj Singh Sisodiya
Yuvraj Singh Sisodiya

💻
Neutron
Neutron

💻
Sagar Kori
Sagar Kori

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

website's People

Contributors

aayushmau5 avatar acethecreator avatar akshatnema avatar allcontributors[bot] avatar ankitchaudharyy avatar annysah avatar anshgoyalevil avatar asyncapi-bot avatar bhaswatiroy avatar boyney123 avatar dependabot[bot] avatar derberg avatar devilkiller-ag avatar fmvilas avatar janvi01 avatar jessemenning avatar jonaslagoni avatar khudadad414 avatar magicmatatjahu avatar mcturco avatar mhmohona avatar olaleye-blessing avatar quetzalliwrites avatar reachaadrika avatar sagarkori143 avatar sambhavgupta0705 avatar smoya avatar starlightknown avatar thulieblack avatar vishvamsinh28 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

website's Issues

Tutorials: Correlation IDs

What?

Come up with an idea of a tutorial with the purpose of explaining correlation IDs and how to define them using AsyncAPI.

Ideally, there should be some working code at the end of the tutorial so people can see the value of both, having correlation IDs and having them defined on AsyncAPI.

Why?

To introduce the "correlation IDs" feature and its purpose.

Make our different communication channels more prominent on the landing page

Reason/Context

We have some information that is obvious for us a bit hidden for people that visit asyncapi.com

  • Slack link is hidden under Help
  • There is no info about our public meetings

Description

  • Communication channels should be more visible like for example remove Slack from under Help and just have a Slack icon next to GitHub -> explore
  • Maybe Help should become Join Us?
  • Footer should have link to Youtube channel and Slack
  • Embed a view of number of start the project has on GitHub using https://buttons.github.io/ -> example https://kyma-project.io/
  • Promote SIG meeting by embedding google calendar or some different noticeable way

Start gathering information about who uses the specification

Reason/Context

We know AsyncAPI is widely adopted by users but we do not have a way for users to tell us about it. Open question is if we should have one section with users or rather maybe Used by and Products integrations so community not only see how others use it but also how to integrate it to enrich products for their customers.

Description

  • Have a list of users and make it easy for anyone to be added to the list through PR
  • Such a list would feature the logo of the company, short description of use case or link to a blog post if possible. For example the logo of Axway with short description and link to https://devblog.axway.com/integration/asyncapi/. Something similar is on Kyma website https://kyma-project.io/#used-by.
  • Have list of users in README.md too?

Bug on playground in website

Currently, the playground triggers an error when there's an AsyncAPI 1.x document that was saved in your local storage. It's probably an error of the playground instead of the website but I'm leaving the issue here because it's where I experienced it.

Create a document that describes clearly core concepts of AsyncAPI

Reason/Context

We need a kind of concept doc or FAQ that explains basic concepts of the specification so it is easy to onboard to the spec to understand basics before further exploration

Description

Explain things like

  • AsyncAPI is for the application interface
  • It is protocol agnostic
  • publish/subscribe semantics
  • AsyncAPI is not always for broker-centric architectures

Improve overall performance of the website but especially Blog

Reason/Context

When I access the blog, I cry, like a baby 😄
Website is not fastest but blog performs like a 🐢

Description

[TOOLING] What about adding a 'Mocks & Tests' section ?

Hi AsyncAPI team !

I was looking at the Tooling page (https://www.asyncapi.com/docs/tooling) and would like to reference Microcks as a tool allowing you to:

  • Turn your AsyncAPI contract examples into ready to use mocks,
  • Use examples to test and validate implementations according schema elements.

I did not find any section that was fitting this category... so wondering about adding that new one: Mocks & Tests ?
As an inspiration, OpenAPI.tools has a Mock Servers section but I think that mocking is only one side of the coin.

What do you think ?

Get more GitHub stars

Reason/Context

I mean, who doesn't like GitHub stars? They increase the positive perception of the project at first sight. We have over 1k now but why not having 2k 😄

Description

Cannot find module '.bin/pub' on katoda streetlights demo

Hi,

Describe the bug

When i run command in step 2:

mqtt pub -t 'light/measured' -h 'localhost' -m '{"id": 1, "lumens": 3, "sentAt": "2017-06-07T12:34:32.000Z"}'

then, I get error in interactive console

Error: Cannot find module './bin/pub'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/lib/node_modules/mqtt/bin/mqtt.js:14:29)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

How to Reproduce

https://www.katacoda.com/asyncapi/scenarios/streetlight-tut
Go to Step 2 and run MQTT command

Cleanup GitHub Actions workflows

Context

  1. We want to make sure we have healthy community and people respec each other in GitHub. We want to monitor all comments in every repository and analyze sentiments to identify negative ones and get proper notification. Idea is to use GitHub Actions for it, to check sentiments with Google Natural Language API and post negative comments to Slack for review.

  2. We manage community files in global .github repo, and we have GitHub Funding config file there too. As a result we need to cleanup all the repos to remove .github/FUNDING.yml

  3. Start supporting new GitHub pull request event that allows gives access to GITHUB_TOKEN with write access. Fix welcome contributors workflow is needed.

  4. We want to automatically merge Pull Requests that are submitted by Dependanbot. New workflow needs to be added, or if already existins it needs to be modified

Description

  1. Add this workflow file called sentiment-analysis.yml to .github/workflows (create it if it doesn't exist yet) directory: https://gist.github.com/derberg/ab362e4b37f542e7e1813e67b7cb11ee
    Proper secrets are already added to GitHub organization so it is as simple as adding above file to workflows dir.
  2. Remove .github/FUNDING.yml if it exists
  3. If not done already rename pull_request from line 4 to pull_request_target in .github/workflows/welcome-first-time-contrib.yml file
  4. Create new file called automerge.yml with the following content: https://gist.github.com/derberg/024814a26959d54f683e7bd68d68f007
    If the repository already has a file called automerge-release-pr-bump.yml than rename it and adjust if statements to check github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' instead of github.actor == 'asyncapi-bot'

API Design Guide for Event-based APIs

I'd like to add a section to the AsyncAPI Website that covers API Design best practices. Here are over 15 examples of API Design Guidelines. Most of them are heavily based on RESTful APIs.

I'd like to collect and capture design guidelines for event/message/stream-based APIs. We can then submit the finalized guide as an example for Arnaud Laudet, Kin Lane, APIOps Cycles, and APIM vendors to include when API organizations create event-based APIs.

Readme.md is not up to date

It's not a bug / feature, rather suggestion issue :) Readme.md mentions about Hugo and has some tips for writing html in go templates. I think that Readme should be rewritten :)

  • Update information about tech stack used in website
  • Write how to run and develop website
  • Write how to create static content for website, especially how and where write the blog posts -> This will be covered in #90

[BUG] broken link on https://www.asyncapi.com/docs/tooling/

Describe the bug
Apologies if this is not the correct place to file it - if it ought to be filed elsewhere, please let me know! The link to generator templates does not work on https://www.asyncapi.com/docs/tooling/

To Reproduce
Steps to reproduce the behavior:

  1. open https://www.asyncapi.com/docs/tooling/
  2. ctrl+f "Please, check out the templates directory to get a list of the supported languages/formats."
  3. click hyperlink on "templates directory"

Expected behavior
Opens the templates directory in the generator github repo

Remove spec docs duplication

Reason/Context

With specification, we have at the moment the following situation.
1 https://github.com/asyncapi/spec/blob/2.0.0/versions/2.0.0/asyncapi.md is the location of official specification
2 https://github.com/asyncapi/spec/blob/2021-06-release/spec/asyncapi.md is the candidate for next release
3 https://github.com/asyncapi/website/blob/master/pages/docs/specifications/2.0.0.md 2.0 spec duplicate that should not be edited in website but automatically updated from spec repo

Description

In short, on every release in spec (no matter if official or pre-release) update website through PR so after automerge it is automatically published.

not in scope
Automation of spec release. The creation of GitHub releases for latest and candidates. Just assume it will be in place, so automation from this task should be based on GitHub release event. How you can tell that release is a release candidate? it is marked as Pre-release and the release tag will look something like v2.1.0-2021-06-release.1 (some example from another project https://github.com/asyncapi/asyncapi-react/releases/tag/v1.0.0-next.2)

Website repo

  • this link https://www.asyncapi.com/docs/specifications/latest should always display the latest spec version
  • link in the left-hand side navigation should point to the latest only
  • versions >=2.0.0 should be available on website too, there must be a toggle/dropdown that you can use to switch between versions. Direct links should also be available.
  • next version, the release candidate should also be available in the UI, marked as release candidate for next version, with release date
  • Edit this page on Github should not take you to website but to spec repository where spec is located and actually ug fixes can be suggested

Spec repo

  • we need update in the spec in https://github.com/asyncapi/spec/blob/2021-06-release/spec/asyncapi.md to support website features, frontmatter and anchors in sections
  • now how to get updates from spec repo into website? I suggest push approach rather then pull. In other words, spec repo pushes changes to website repo instead of website repo pulling for changes from spec. We need GitHub Action workflow that would be triggered on every release, it would pick up changes either from master (in case of official release when tag is createdor from the release branch (in case there is a pre-release). In the workflow you would need to pullwebsite`, add proper files there and then open a PR using proper GH action. Auto approve and merge is already in place, because you will use asyncapi bot here.

hints

Getting started: index page

What?

Use "Getting started" index page to explain what is and what is not AsyncAPI. Also, offer some help and guidance depending on previous knowledge of the reader. For instance, we could offer different itineraries based on the following information:

  • Do you already know and use OpenAPI/Swagger?
  • Are you new to event-driven architectures?
  • Are you new to JSON Schema?

Why?

To better understand our users and guide them to the next chapter they should be looking at.

Getting started: reusing components

What?

Write a chapter of the getting started guide on components reusability. It should go right after the "publishing" one.

We should keep it simple and explain how to reuse a message definition inside a document. Right after that show an example of schemas reusability inside a document too. Once this is done, we can explain how to reuse messages and schemas across documents.

We should not mention anything about other reusable components. At most, just provide a link to the spec for the curious. The whole idea is to keep it simple and to the point. No need to explain everything in a single chapter.

Why?

To introduce the components section and its purpose.

Improve visibility of tooling page

Reason/Context

After visiting website people ask if there is a specific tool available even though it is listed here https://www.asyncapi.com/docs/tooling/. Looks like they bypass somehow the link from the navigation.

Description

Make somewhere on the landing page section dedicated to tools, like list of official tools and link to community tools, or something like that.

Tutorials: "topics" should be replaced with "channels"

The tutorial follows on from the introduction to the spec which is based on version 2.0. Therefore channels should be used and not topics. Alternatively it should be made clear before following the link to the tutorial that it is based on version 1.2.0 and topics correspond semantically to channels.

Generate atom.xml for Blog section

Reason/Context

There are people out there that use feeds readers tools, but not only. I, for example, use https://blogtrottr.com/ to get an email whenever there is new post in GitHub Blog. We should enable users to subscribe to just Blog section if they do not want to subscribe to Newsletter, follow twitter or join Slack.

Description

  • Use Hugo plugins to make sure atom.xml is always regenerated during the build
  • Add somewhere well-recognized icon that indicates feeds are exposed
  • In case we have Google Search Console already enabled, make sure our feed file is configured there the same way as sitemap.xml

Update tutorials/documentation to reflect publish/subscribe semantics

There are several areas in the tutorials/documentation where publish/subscribe semantics are in need of correction or could be updated to be more clear:

  1. The Hello World https://asyncapi.io/docs/getting-started/hello-world/

    I would argue that the Hello World example, if we're starting with that, should initially be an example of an event publisher vs an event consumer. The most common 'hello-world' application prints out "Hello World" to the screen, so the first example should do the same IMO - e.g. publish a 'hello world' message to a queue.

  2. This line is a bit unclear:
    You can read the highlighted lines as “this is the payload of the message your app can publish to the «hello» channel”.

    When we say "your app", at this point we are not describing the 'hello-world' app, but rather a separate publisher app. that makes this example a bit confusing. I would suggest that reworking the example to focus on a publisher vs consumer would make this more clear.

  3. On this page, the code switches semantics to using a 'subscribe' vs 'publish' option - we should make this the same as the first part of the tutorial

  4. On this page, it defines a publisher that uses 'publish' actions - again we should make these all the same. IMO, that should be the examples are always about publishers, and they always use 'subscribe' actions.

  5. In the streetlights tutorial, it says the following:
    We’ll publish messages to the broker and that’s it. Our service don’t know who will receive them.
    However, this is a bit strange, because later on the page you are creating the service that will receive these events - and you aren't actually ever creating the services that send the events. This confused me for a while...

    Also the API is defined as follows:The Smartylighting Streetlights API allows you to remotely manage the city lights.

    However, as defined, this api is not really able to 'manage' the lights, it's only able to monitor them.

  6. I found this blog post really useful:
    However, it uses the old semantics - defining a userService that publishes (and uses the publish action). Now that 2.0 is out, and a decision has made to switch semantics, the old blog post should be IMO reworded with the right examples.

  7. We could even extend the hello-world example to have both a publisher and a consumer, sharing a common message definition. This way we can explain the idea of reuse of message contents in the tutorial itself.

  8. Finally the spec itself should have a clearly elaborated section describing the different between publish and subscribe in formal terms. Currently it just has A definition of the SUBSCRIBE operation.. This should be enhanced with clear description of when an API should define a SUBSCRIBE operation (namely, to tell "clients" of the API that they can subscribe to that channel in order to get messages sent by this publisher)

I made an initial PR, but I realize that some parts of it are incorrect now. So let's discuss here in this issue what needs to be done, then I will update the PR accordingly.

Make interactive Katacoda streetlights tutorial available without login

Reason/Context

The katacoda website requires users to log in before they can access the tutorial. This can be a barrier for people that just want to quickly see the tutorials in order to decide if they want to try AsyncAPI. I always check out the tutorials when researching new tools, so a login would probably land on my "do this later if I don't find something else" list. This is not a problem currently as there are enough examples without katacoda. However it is stated that you "plan to have all the docs written this way" (source: asyncapi.com/docs/tutorials/streetlights-interactive).

Description

My main concern is that examples wouldn't be accessible without katacoda login. I can think of a few ways to mitigate this:

  • Do not require a login:
    I am not sure if this is possible as katacoda is an external website. This would be the ideal solution
  • Keep a small non-interactive example:
    This would allow people to quickly see an example without a login. I understand that making all tutorials interactive seems really nice, but having at least a small easily accessible example would help people that quickly want to see an example without trying it live.

Configure Algolia search on website

Reason/Context

Algolia is an awesome search engine. User should be able to quickly search for the given phrase in the AsyncAPI documentation (not only the specification documentation). Algolia is a paid technology, but for open source, they have a free plan and it's used by several open source projects like React, Babel, Tailwind, TS etc -> https://docsearch.algolia.com/

Description

image

For my opinion documentation pages (also tooling) should be indexed by Algolia, maybe also blog posts?

@derberg @fmvilas What do you think?

Invalid URL error with the current tutorial

First I used an older version of the generator which worked fine. Then I updated it and get this error:

Something went wrong:
Template render error: (\node_modules\asyncapi-generator\templates\nodejs\config\common.yml) [Line 29, Column 36]
  TypeError [ERR_INVALID_URL]: Invalid URL: test.mosquitto.org

Changing the url to http://test.mosquitto.org works.

Update about page to reflect current reality

Current contributors are:

  • Antonio Garrote
  • Bruno Pedro
  • Chris Wood
  • Dulce De La Rosa
  • Emmelyn Wang
  • Eva Morcillo
  • Jonas Lagoni
  • Jonathan Schabowsky
  • Jonathan Stoikovitch
  • Kin Lane
  • Lukasz Gornicki
  • Maciej Urbańczyk
  • Mike Ralphson
  • Víctor Romero

Anyone else I'm missing? @derberg

Also, we should probably update the list of contributors at github.com/asyncapi/asyncapi.

Investigate about paid online courses

Research how people are currently doing this:

  • What platforms? Udemy, Platzi, PluralSight, etc.
  • What do we have to offer? Help on email, chat, groups, etc.
  • What's a common structure for the script? Technology-focused, concept-focused, etc.
  • Prices?

Notes

The course is targeted for beginners (both on AsyncAPI and event-driven architectures) and should offer some guidance on how to get started and some use cases.

Getting started: adding security

What?

Write a chapter of the getting started guide on how to "add security" to your AsyncAPI document. It should go right after #7.

We should keep it simple and explain how to use basic security schemes like user/password.

We should not explain anything about other security schemes. At most, just provide a link to the spec for the curious. The whole idea is to keep it simple and to the point. No need to explain everything in a single chapter.

Why?

To introduce the security schemes and its purpose.

Tutorials: Review streetlights tutorial

There are some complaints that the tutorial is not working properly, specifically the "Running our code" section.

Ideally, we should provide the point of view of the streetlight and also the point of view of the "control panel" controlling all the streetlights in a city.

Cleanup Google Analytics setup

Reason/Context

We need to make sure we configure GA properly otherwise we can't fully rely on its data:

Description

  • Fix the location of the tracking script, move it to <head>
  • Make sure we have bots and other irrelevant visitors excluded from results
  • Try out some online tools for GA verification, so we fix issues like https://www.asyncapi.com/subscribe/ where we forgot to have GA and we cannot now identify how many people enter the view but do not subscribe.
  • Make sure we anonymize the IP of the client when gathering data for GA

https://cxl.com/blog/google-analytics-health-check/

Automate publishing on AsyncAPI website

Proposal

  • Remove https://github.com/asyncapi/website and rename https://github.com/asyncapi/asyncapi.github.io to website
  • We still, of course, do GitHub flow here but I suggest all PRs come from forks, even from the organization members, to keep branches clean and always have master only
  • Website repo needs a badge indicating we use Netlify + we need Netlify logo in the footer of the website
  • Every PR should be supported by a preview generated with Netlify
  • Merge to master triggers the build of the latest website and deploy to Netlify. With Netlify open-source plan, we will have 1000 free minutes and can use their build functionality instead of some separate tool for it like TravisCI or GitHub Actions
  • Build of the website is no longer stored in the repository, only on Netlify

asyncapi-website-automation(2)

At the moment I think that the preview build is needed only on the repository with sources of the website, this means it will not be used to many times. The build of the website takes less than 300ms (Hugo my new ❤️ ) which means we would have to go crazy to use all the 1000min of free build minutes. In the future, we might think about changing it and run builds on GitHub Actions for example.

Reason

At the moment publishing to Netlify is kind of manual as you need to rebuild the website locally and push to the asyncapi.github.io repo. We need to automate it and set it up properly so we can have proper previews generated on a PR level.

Configure website with Google Search Console

Reason/Context

Google Search Console is an awesome free offering that allows you to analyze how is your website performing in search results, how people find your website + sitemap config and crawl errors.

It is important tool to make sure AsyncAPI is searchable end visible to others

Description

  • Enable Search Console for the website
  • Pair it with Google Analytics
  • Configure where reports from GSC should be send
  • Configure sitemap with GCS

Make it clear to community that our Blog is opened for them to write posts

Reason/Context

AsyncAPI is not a company it is a standard that should be widely adopted and opened to community and community should also be able to share their use cases, their products, their tools in a form of a blog post to reach out entire AsyncAPI community.

Description

  • Make it clear in the UI that we allow people to publish the post under our domain
  • We should have instructions how to create a blog post
  • Add some clear guidelines on what content is allowed and what not

Update for whoever whats to contribute (20.09.2021):

  • In UI it is already clear that anybody can write articles, there is a link to this issue template. Also when you create issue in any AsyncAPI repo, you see a list of available options and the first one is a link to blog post template, check this link)

Just docs are missing, a kind of markdown file that we can easily share with anyone (and could be also mentioned in the template I wrote about above)

We just need few sentences there:

  • that any contribution is allowed, even reposting
  • that advantage is that we ask on community slack to help promoting article whenever it is released, we share it on official AsyncAPI twitter and LinkedIn + hackernews and reddit
  • it just needs to mention AsyncAPI
  • that best is always to start with issue to suggest topic
  • and that creation of article is the same as any other contribution (fork, PR, and once merged it goes directly to production)
    • markdown file with article content should go here
    • images should go here into a folder that has the same name as the markdown file created a step before
    • images must by lightweight and with .webp format and there needs to be a clear alt description provided for people that cannot see images
  • then we do language review, ask for improvement and merge

StreetLight tutorial - add generated code and output

Reason/Context

Please try answering few of those questions

  • Why we need this improvement?
  • How will this change help?
  • What is the motivation?

https://www.asyncapi.com/docs/tutorials/streetlights/
Having a way to browse the resulting generated code without having to run the commands ourselves is friendly

Being able to see the server output resulting of the publishing of the message, would also make the tutorial complete

Thanks for the hard work

Description

Please try answering few of those questions

  • What changes have to be introduced?
  • Will this be a breaking change?
  • How could it be implemented/designed?

How to map security to operations?

Hello,
Can you please explain in the v2.0.0 documentation how to map the security definition applicable to a specific operation? I couldn't find it..

Thanks for help

doc: getting started with traits

What?

Write a chapter of the getting started guide expanding on reusability. It should go right after #6.

We should keep it simple and explain how to reuse parts of a message or operation by using traits.

We should not mention anything about other reusable components. At most, just provide a link to the spec for the curious. The whole idea is to keep it simple and to the point. No need to explain everything in a single chapter.

Why?

To introduce the traits feature and its purpose.

Streetlights Tutorial Unexpected token error while executing npm start command

I installed the latest nodejs and npm versions but I keep getting the following error.

SyntaxError: Unexpected token (
at new Script (vm.js:84:7)
at createScript (vm.js:264:10)
at Object.runInThisContext (vm.js:312:10)
at Module._compile (internal/modules/cjs/loader.js:694:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
at Module.load (internal/modules/cjs/loader.js:626:32)
at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
at Function.Module._load (internal/modules/cjs/loader.js:558:3)
at Module.require (internal/modules/cjs/loader.js:663:17)
at require (internal/modules/cjs/helpers.js:20:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: node src/api/index.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users...\AppData\Roaming\npm-cache_logs\2019-11-08T18_45_39_216Z-debug.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.