asyncapi / cli

CLI to work with your AsyncAPI files. You can validate them and in the future use a generator and even bootstrap a new file. Contributions are welcomed!
https://www.asyncapi.com/tools/cli
Apache License 2.0
188 stars 164 forks source link

Mentorship 2024 Idea: Enhancing Developer Experience in CLI #1508

Open AayushSaini101 opened 2 months ago

AayushSaini101 commented 2 months ago

Inspired by the insights shared by @Amzani in the article How to Build an Awesome Developer Experience, I propose a project aimed at significantly enhancing the developer experience (DX) for the AsyncAPI CLI. The CLI is a critical tool within the AsyncAPI community, boasting a large number of downloads and an active user base. To maintain its relevance and usability, we need to continuously update it with new features, bug fixes, and improvements that make it more user-friendly and powerful.

image

Current Status of the CLI While the CLI is widely used, there are several areas where it can be improved to better serve the developer community:

*Proposed Ideas for upcoming mentorship program:**

  1. Documentation: After revamping the architecture of the CLI, we haven't updated or created documentation to describe the new design. This gap needs to be addressed to ensure developers can easily understand and contribute to the tool. Link to PR. New Design Architecture: https://github.com/asyncapi/cli/pull/1200#issue-2151403571
  2. Testing: Currently, running test cases locally is challenging due to outdated dependencies. We need to update these dependencies to enable proper debugging and execution of tests.
  3. Proxy Support: There is a need to add support for proxies, which is a common requirement for many users. Issue #862.
  4. UI/UX Improvements: The UI/UX for multiple CLI commands could be improved to provide a smoother and more intuitive experience for users. Issue #1384.
  5. Custom Validation: Implementing the ability to validate an AsyncAPI file against custom spectral rules would empower developers to enforce their own standards.
  6. Publish and Sync: We need to provide the ability to publish and sync AsyncAPI files with remote repositories, addressing a long-standing need within the community. This ties in with Issue #538.
  7. New Commands: Introducing new commands, such as an auto-formatting feature for AsyncAPI documents, would greatly enhance the usability of the CLI. Issue #1419.

By making these investments, we can significantly improve the developer experience, increase the visibility of the CLI, and ensure it continues to be a critical tool within the AsyncAPI ecosystem.

AayushSaini101 commented 2 months ago

@Souvikns @Shurtu-gal @Amzani If we need to add more feel free to suggest thanks: cc: @AceTheCreator

Souvikns commented 2 months ago

Great proposal, @AayushSaini101! It's really well put together. You can start with researching the solutions and ping me if you need any help.

Shurtu-gal commented 2 months ago

@Souvikns @Shurtu-gal @Amzani If we need to add more feel free to suggest thanks: cc: @AceTheCreator

Nice idea. Especially the sync feature, much need tbh.

AayushSaini101 commented 2 months ago

For this mentorship project Ideas:

  1. Proxy Support [ This is a very much required feature by multiple stack holders]
  2. New Command to format the document
  3. Documentation of the new CLI Structure

If time left we can take following:

  1. Testing: Currently, running test cases locally is challenging due to outdated dependencies. We need to update these dependencies to enable proper debugging and execution of tests.
  2. Publish and Sync: We need to provide the ability to publish and sync AsyncAPI files with remote repositories, addressing a long-standing need within the community. This ties in with Issue #538.
AayushSaini101 commented 1 month ago

Proposal for the project submitted

AayushSaini101 commented 2 weeks ago

@Souvikns In this week, i will start working on the documentation issue, i have created the below issue

AayushSaini101 commented 1 week ago

New Command to format the document [ Done ] 1 part completed