radarsu / radarsu

Node.js server-side TypeScript framework with one thing in mind - removing code is easier than writing it. Auto-generated Swagger docs, REST, GraphQL, WebSockets and others - have it all, delete what you don't need πŸ™ˆπŸ™‰πŸ™Š

Home Page:https://radarsu.radrat.pl/radarsu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Work in progress...

radarsu logo
Simplicity is the ultimate sophistication.

Node.js server-side TypeScript framework with one thing in mind - removing code is easier than writing it.
Auto-generated Swagger docs, REST, GraphQL, WebSockets and others - have it all, delete what you don't need.

Inspired by: sails.js, feathers.

npm license stars social twitter

Description

When you choose your perfect stack quite often you realize that setting things up, well-configured and working takes a lot of time. Everything is far from perfect and you need to write tons of code to make all the awesome features work your way according to your needs.

Maybe you have tried meteor, loopback, sails.js and nothing suits your needs. Lack of WebSocket integration? No auto-generated swagger docs, CRUD, issues with GraphQL subscriptions? Overcomplicated structure with many concepts you do not really want to implement? Simple solution comes here.

Built on top of nestjs, flexible, ready-to-go.

Installation

npm i radarsu

Features

  • Integrated REST, GraphQL and WebSocket API.
  • Automatic validation of incoming requests.
  • Pretty logging to console and files with a well-configured Winston.

radarsu logo

  • Auto-generated swagger docs and GraphQL panel.
  • Auto-generated CRUD client for all the models powered by Angular and Primeng.
  • CLI for generating various components based on templates that you can easiely modify.
  • RadarsuSocket Client and Server library allowing easy WebSocket communication between Client and Server:
// client side
const result = await ws.emit({
	action: `user/login`,
	args: [{
		login: `test`,
		password: `test`,
	}],
});
console.log(result); // 'NOT YET IMPLEMENTED';
// requests goes to the server through validation and other middleware
interface ILoginRequest {
	login: string;
	password: string;
}

@RadarsuController
@RadarsuMiddleware(exampleMiddleware, exampleGuard)
export class UserController {

	// body parameters are automatically validated based on ILoginRequest interface
    public login(@Body() body: ILoginRequest, rs: RadarsuSocket) {
	    return 'NOT YET IMPLEMENTED';
    }
}
  • Simple approach leaves everything as simple as possible, no coding redundancy, simple file structure:
  • src
    • 1-helpers - utility functions you like, your own little libraries.
    • 2-interfaces - types and interfaces.
    • 3-config - configuration of application and various libraries.
    • 4-entities - database models powered by sequelize-typescript.
    • 5-services - additional logics and storing data in server memory.
    • 6-middleware - filters, guards, interceptors, whatever you like as a middleware.
    • 7-controllers - routing and application entry point for all the REST, GraphQL and WebSocket Requests.
    • import - barrel import of every library and object you may need.
    • index.ts - application entry point (bootstrap).
  • data - place for logs and some server assets (like a favicon).
  • templates - place for templates that you can modify accodring to your needs, used to auto-generate components. Powered by ejs.

Drawbacks

In order to provide you with a well-configured setup of various libraries perfectly working together radarsu framework does not yet have adapters for other popular libraries. If you wish to switch from Winston to Bunyan or from Sequelize to other database, you need to rewrite initLogger, initDb, (...), methods.

import {
    Radarsu, config, radarsuLogger,
} from './import';

const log = radarsuLogger(__filename);

(async () => {
    config.app = new Radarsu();
    config.app.initLogger((options) => {
        // you are on your own here to return other logger you like
        return {};
    });
    await config.app.launch(config);
})();

About

Node.js server-side TypeScript framework with one thing in mind - removing code is easier than writing it. Auto-generated Swagger docs, REST, GraphQL, WebSockets and others - have it all, delete what you don't need πŸ™ˆπŸ™‰πŸ™Š

https://radarsu.radrat.pl/radarsu

License:MIT License


Languages

Language:TypeScript 58.2%Language:HTML 20.7%Language:CSS 20.1%Language:JavaScript 1.0%