Skip to content
This repository has been archived by the owner on Oct 26, 2022. It is now read-only.

keawade/framethework

Repository files navigation

Note: I built this to play around with code patterns and abstractions not as a serious attempt at building a good framework. Please don't use it.

Framethework

GitHub Workflow Status GitHub

Framethework is a microservices framework built on top of NATS.

Using Framethework requires a NATS server. All examples assume a NATS server is already running unless otherwise specified.

Usage

This basic example shows how to create a small math service to add two numbers and call it locally.

import { action, Broker, Service } from '@keawade/framethework';

// Write a service
class MathService extends Service {
  public name = 'math';

  @action()
  public add(params: { a: number; b: number }): number {
    return params.a + params.b;
  }
}

// Create a broker
const broker = new Broker();

// Register your service(s) with the broker
broker.registerService(MathService);

// Start the broker
broker
  .start()
  // Call the service
  .then(() => broker.call('math.add', { a: 5, b: 3 }))
  // Print the response
  .then((res) => console.log('5 + 3 =', res))
  .catch((err) => console.error(`Error occurred! ${err.message}`));

framethework-runner

Framethework Runner is a utility that helps you run Framethework services. With it you don't need to create a Broker instance. Instead you can simply call the framethework-runner with paths to your service class files and it will automatically create a broker and load your services.

framethework-runner ./path/to/MyService.js

Check out the examples/ directory for some example services.

Things I want to implement

  • Middlewares
  • Not found errors
  • API gateway
  • Action JSON schema param validation
  • OpenAPI docs generation from action params

About

Microservices framework built on NATS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published