Skip to content
@gaming-SaaS

gaming-SaaS

Description

Introduction

I analyzed the system and put some time to understand how the requested ecosystem must be. The communication, safety, speed, and scalability.

Tools:

  • NestJs - Node + TypeScript + Fastify
  • REST API - Communicate from outside of ecosystem
  • GRPC - Faster communication for internal communications
  • Graph QL - Get data from database
  • PostgreSQL
  • TypeORM - Nest uses to communicate with database
  • Jest - Nest uses to create test cases
  • Github
    • projects
    • issues
    • standard git-flow for branching

Services:

  1. Managing users - Oxygen (Because users are the important part of a LIVE system)
  2. Messaging - Rhenium (Because this chemical element used in electrical contact materials)
  3. Wallet - Nickel (Because it is a money unit)
  4. Grouping(club) - Carbon (Because it creates very strong groups like diamonds)
  5. Readable data provider - Francium (Because it likes to give the electrons)
  6. Writable data provider - Fluorine (Because it like to receive electrons)

nest-plus

This is a wrapper on the Nestjs server, it provides all common filters, middlewares, interceptors, guards, and... It is published on NPM, so for services, you can use it without being worried about common feature implementations.

You can find it here, nest-plus.

Middlewares:

Guard:

  1. Authorizer
  2. Access control

Pipe:

  1. Validator
  2. Extractor

Interceptor:

  1. Logging

Filter:

  1. Invalid request
  2. Endpoint NotFound
  3. Internal error
  4. Operation failed

Naming

Services and parts of systems need name. so I decided to choose chemical elements for services as a metaphor for elements that create the system. Also tried to choose elements which has similar usage with the server itself.

Services

I divided the whole system into 6 services which every one of them has only one porpose and responsibility.

These services are:

  1. Managing users - Oxygen
    • This service manages the users who can be any type of entity; Real, legal or fictional.
  2. Messaging - Rhenium
    • This service broadcast a message or receive messages.
  3. Wallet - Nickel
    • This service manages the assets belonging to an entity. Assets can be anything and they all connect to a unique code.
  4. Grouping(club) - Carbon
    • This service can put several entities in an abstract group and perform activities on it.
  5. Readable data provider - Francium
    • This service responsible for fetching data as fast as possible.
  6. Writable data provider - Fluorine
    • This service responsible for registering data fast and sync with readable data provider.

communications

JWT

JWT generated by a PEM secret key.

Popular repositories Loading

  1. oxygen oxygen Public

    Manages users who might be real, legal or fictional.

    TypeScript

  2. nest-plus nest-plus Public

    Plugin for nest framework to set common modules and services including middlewares, filters, pipes, interceptors, and guards.

    TypeScript

  3. carbon carbon Public

    Manages any type of entities which need to gather and create a group (or club)

    TypeScript

  4. nickel nickel Public

    Provides wallet functionalities

    TypeScript

  5. rhenium rhenium Public

    Manages functionalities to broadcast and receive messages.

    TypeScript

  6. fluorine fluorine Public

    Communicate with the database that dedicated to only writing commands

    TypeScript

Repositories

Showing 8 of 8 repositories
  • .github Public
    gaming-SaaS/.github’s past year of commit activity
    0 MIT 0 0 0 Updated Jul 22, 2022
  • francium Public

    Manages APIs to fetch data from data provider using GraphQL

    gaming-SaaS/francium’s past year of commit activity
    TypeScript 0 MIT 0 1 0 Updated Jul 22, 2022
  • rhenium Public

    Manages functionalities to broadcast and receive messages.

    gaming-SaaS/rhenium’s past year of commit activity
    TypeScript 0 MIT 0 0 0 Updated Jul 22, 2022
  • nickel Public

    Provides wallet functionalities

    gaming-SaaS/nickel’s past year of commit activity
    TypeScript 0 MIT 0 0 0 Updated Jul 22, 2022
  • carbon Public

    Manages any type of entities which need to gather and create a group (or club)

    gaming-SaaS/carbon’s past year of commit activity
    TypeScript 0 MIT 0 0 0 Updated Jul 22, 2022
  • fluorine Public

    Communicate with the database that dedicated to only writing commands

    gaming-SaaS/fluorine’s past year of commit activity
    TypeScript 0 MIT 0 0 0 Updated Jul 22, 2022
  • nest-plus Public

    Plugin for nest framework to set common modules and services including middlewares, filters, pipes, interceptors, and guards.

    gaming-SaaS/nest-plus’s past year of commit activity
    TypeScript 0 MIT 0 1 0 Updated Jul 22, 2022
  • oxygen Public

    Manages users who might be real, legal or fictional.

    gaming-SaaS/oxygen’s past year of commit activity
    TypeScript 0 MIT 0 0 0 Updated Jul 22, 2022

Top languages

Loading…

Most used topics

Loading…