DEV Community

Cover image for eOffice - Collaboration through microservices using Redis
Alice
Alice

Posted on

eOffice - Collaboration through microservices using Redis

Table of contents

Overview
Submission Category
Video
Link to the application
Link to code
Architecture
How the data is stored
Functionalities

Overview of My Submission

eOffice is human resources platform that provides processes to onboard a new employee and to manage the benefits of the employees distributing the responsibilities between the different rolls.

Submission Category

The submission category is Microservices Mavens using for communication between services the pubSub feature from Redis.

Video

Architecture & Technologies

Link to the application

The application is hosted in Azure.
Link to the application

Link to Code

e-office | Redis Hackathon on Dev

Link to the application

Overview video

Youtube

Project description

eOffice is human resources platform that provides processes to onboard a new employee and to manage the benefits of the employees distributing the responsibilities between the different rolls.

Functionalities

  • See all onboardings
  • Create an onboarding
  • See details of an onboarding
  • See all system accounts requests
  • Resolve a system account request

Architecture and technologies

a03d589d-d34d-403d-86fd-13e09f55e688

  • Presentation project: Server Blazor Application using .Net 6.0
  • Microservices: Web API using .Net 6.0
  • Databases: SQL Server
  • Microservices communication: Redis pub/sub

Flow diagrams:

  1. Create the onboarding CreateOnboarding Flow

  2. Resolve a system account request resolve-sysytem-accounts-request-flow

How to run it locally?

Prerequisites

  1. .Net 6.0
  2. 3 SQL server databases
  3. A redis database

Local installation

  1. Add the connection strings in the appsettings.josn for each module for the databases
  2. Set as startup projects: eOffice, eOffice.Onboardings.API, eOffice.Leave.API, eOffice.SystemAccounts.API
  3. Run the projects

How it works

How the data is

Architecture

Image description

  • Presentation project: Server Blazor Application using .Net 6.0
  • Microservices: Web API using .Net 6.0
  • Databases: SQL Server
  • Microservices communication: Redis pub/sub

Language Used

C# - .Net 6.0

Flow diagrams

  1. Create the onboarding
    CreateOnboarding Flow

  2. Resolve a system account request
    resolve-sysytem-accounts-request-flow

How the data is stored

The microservices are communicating with each other using the pub/sub from Redis, for each type of communication a different channel will be used.
3 channels

  • SystemAccount_Channel
    • Publisher: Onboardings Module
    • Subscriber: SystemAccounts Module
  • Leave_Channel
    • Publisher: Onboardings Module
    • Subscriber: LeaveBalance Module
  • Onboarding_Channel
    • Publisher: SystemAccounts Module, LeaveBalance Module
    • Subscriber: Onboardings Module

Publis code

var modelAsString = JsonConvert.SerializeObject(model);
_pubSub.Publish("channel_name", modelAsString);
Enter fullscreen mode Exit fullscreen mode

Subscribe code

connection.GetSubscriber()
    .Subscribe("channel_name", (channel, message) =>
    {
        // DO something
    });
Enter fullscreen mode Exit fullscreen mode

Functionalities

  • Dashboard

Image description

  • See all onboardings

Image description

  • Create an onboarding

Image description

  • See details of an onboarding

Image description

  • See all system accounts requests

Image description

  • Resolve a system account request

Image description


Top comments (0)