(Translated by https://www.hiragana.jp/)
GitHub - rogerinn/hermes: Hermes is a modular framework for node.js to make gRPC APIs.
Skip to content

rogerinn/hermes

Repository files navigation

Hermes

GitHub package.json version npm GitHub repo size GitHub issues GitHub pull requests

Hermes is a modular framework for node.js to make gRPC APIs.

We follow a documentation first philosophy, with the objective of quality delivery focusing on the developer’s experience.
Hermes is a tool made by devs for all devs, ranging all the way from college work to corporate level projects.

IntroductionContributorsExternal documentation



Table of contents

Introduction

Hermes is a modular framework for node.js based on gRPC that works as a Message Oriented Middleware (MOM) by using the Observable pattern, functioning as the observer between publisher and subscriber communication.

By acting simultaneously as the bridge for publisher and subscriber communication and as the notification handler, Hermes removes the need for a connection with a third party for sending and receiving messages, centralizing and simplifying these functionalities.



Hermes' core features, being fully compatible with gRPC, are:

  • Easy integration
  • Multi-language communication
  • High Performance
  • Trustworthy APIs

Our motivations

Our motivation is to turn coding into a more pleasant experience for the developer by making the process simpler, centralized, and better optimized.

The main premises Hermes was based on are:

  • DX (Development Experience)
  • Security
  • Scalability
  • Optimization

Why should you use Hermes?

Development cost

  • Usually, in the making of an API, you'd need to integrate a variety of different tools. Not with Hermes! What you have is what you need. Hermes' architecture is decoupled, making integrations a whole lot easier. Never again spend your precious time on unnecessarily complicated processes.

Contract automation

  • No need to build manually any machine-to-machine communication. Hermes is fully automated.

Security

  • You are safe with us! Hermes was thought out for security: its security module is programmed with Rust to reduce memory issues and common vulnerabilities. Plus, all communication is encrypted and authenticated with symmetrical signatures.

Compatibility

  • Compatible with ANY systems: desktop, web, mobile, embedded. You are the boss!

Availability

  • Hermes has many functionalities to ensure 24/7 availability for all your needs, including (but not limited to) monitoring, health check, health point, and logging. You will never be left in the dark.

Productivity

  • Hermes will save you time, money, and stress (we all know we need it).

Scalability

  • Hermes has native integration with tools for CI/CD and cluster control. This way, you can automate the build process of gRPC APIs and server applications.
    With only a few clicks, you can scale your application and avoid the dreadful problems of timeout or too many simultaneous users.

Extensibility with native and/or third party tools

  • Think of Hermes not as a marriage but as a "friends with benefits" relationship.
    You'll have a compilation of all features and functionalities needed at your disposal with no strings attached. Operate Hermes by itself or with external assistance alongside it, use it as it is or go crazy with customizations: your experience is what matters.

If you are unhappy after your experience with Hermes, we will give you all your money back! (Obs. We are open source)


Features

  • Authentication
  • Caching
  • Logging
  • Throttling
  • Debouncing
  • Message-broker
  • Health check
  • Health point
  • Protobuf compiler
  • Server-client implementation
  • Server-side streaming

Technologies used

Technologies How we used them Version
TypeScript Sole language used in the structuring of the library, architecture, communication, type checking, and functionality exporting latest version
NodeJs Base language for Hermes latest version
gRPC RPC communication mechanism latest version
ProtoBuf Contract creation mechanism for machine-to-machine communication latest version
RxJs Notification and observer handling tool latest version
Redis Cache management tool latest version
Rust Employed in the writing of the security modules, compilators, multithreading, and memory management latest version
NPM Package and library publishing latest version
GitHub Actions CI/CD pipeline and version monitoring latest version

Architecture


Branch flow


Be a part of our community!

Contributors

We thank these people

  • Andre Junior
  • Cibelli Oliveira
  • Gabriele Jorge
  • Gutem
  • Janaina Centini
  • Marcela Silva
  • Melissa Kilpp