Git Product home page Git Product logo

bluewave-labs / bluewave-hrm Goto Github PK

View Code? Open in Web Editor NEW
27.0 3.0 6.0 147.81 MB

Human resources management application with time off, employee self service and employee management

Home Page: https://bluewavelabs.ca

License: GNU Affero General Public License v3.0

HTML 15.87% CSS 3.88% JavaScript 80.26%
hr hrm people hrms human-resources human-resources-department human-resources-management-system people-management good-first-contribution good-first-issue

bluewave-hrm's Introduction

An open source human resource management application

Github social

Features

The BlueWave HRM is a people and resource management application for your organization. It has the following features:

  • Team management
  • Employee management
  • Time off & vacation management
  • Reporting

Tech stack

This application doesn't rely on any 3rd party proprietary software to run.

Contributing

We love contributors. Here's how you can contribute:

  • Check Contributor's guideline.
  • Have a look at our Figma designs here. We encourage you to copy to your own Figma page, then work on it as it is read-only.
  • Open an issue if you believe you've encountered a bug.
  • Make a pull request to add new features/make quality-of-life improvements/fix bugs.

Additional links:

bluewave-hrm's People

Contributors

fazlul-01 avatar gabrielchan1 avatar gorkem-bwl avatar gorkemcetin avatar louisv20 avatar olusegunawowole avatar sejunpark2002 avatar zaidi201 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bluewave-hrm's Issues

Implement email templates

Implement email templates for the following actions. This requires writing an HTML template with proper wording/sentences.

Signup/sign in related

  • When an HRM manager starts the employee activation process
    An email to the employee
  • When a new employee/HR manager signs up (welcome email)
    An email to the HRM manager
    An email to the employee
  • When employee forgets email
  • Activation email

HRM application related

  • When an employee changes job description
    An email to the employee
    An email to the HRM manager
    An email to the employee's manager (if exists)
  • When an employee leaves the company
    An email to the HRM manager
    An email to the employee's manager (if exists)
  • When an employee asks for a leave
    An email to the HRM manager
    An email to the employee's manager (if exists)
  • When a time off request is created
    An email to the HRM manager
    An email to the employee
    An email to the employee's manager (if exists)
  • When a leave is accepted/denied
    An email to the HRM manager
    An email to the employee
    An email to the employee's manager (if exists)

Time off API coding logic

Create a timeoff API to show how the timeoff works in the application. The API should have the following.

  • How the different entities communicate

  • How are requests sent

  • The reasons for timeoff

  • Number of days time off is allowed in a year

Make sure the permission table is honored in the code

@malenacaroline @fazlul-01 @ergunesra @sejunpark2002 Please go over the Permissions list to check your code, and make necessary parts of the interface completely invisible/immutable to the manager and/or the employee. If the data is tagged as invisible, it should never be retrieved from the server.

When you are done, click on the task below so @zaidi201 and @olusegunawowole would know this part is finished. This task should be completed before the MVP release.

  • Malena is done on her part.
  • Fazlul is done on his part.
  • Esra is done on her part.
  • Sejun is done on his part.

Backend for terminating/offboarding an employee

Explanation of the features for the backend tasks:

Terminating an employee

It means ending their employment with a company. There can be various reasons (eg poor performance, company downsizing, or misconduct). When the HR admin wants to terminate an employee, the following steps should be taken:

  1. HR Admin goes to the employee's page.

  2. Selects "End employment" From the drop down button which is only shown to the HR admin:

Screenshot 2024-08-21 at 5 37 55 PM
  1. Fills in the following popup menu, and the employee should be terminated on the backend, not allowing to be able to login anymore.
Screenshot 2024-08-21 at 5 41 23 PM
  1. The backend also keeps a list of the terminated employees, together with reason, date and notes.
  2. If employee is not terminated immediately, then the system should terminate based on the date selected.

--

Offboarding

It is the process of managing the departure of an employee. Currently it only sends a survey to the employee, expecting the employee to finish it.

Steps taken:

  1. HR admin initiates the offboarding process by clicking on the "Send survey" option under the employee's page.
Screenshot 2024-08-21 at 5 37 55 PM
  1. The employee gets an email that includes the link to the survey (everyone sees the same survey).

  2. Upon finishing, HR admin and manager gets a copy of the email which is crafted using MJML. It includes an opening paragraph and all QAs filled in by the employee.

  3. The database stores this information (e.g is_sent_exit_survey). We can use it later, but not now.

After the survey is completed, the employee is not automatically terminated.

For your information as well: @ergunesra @fazlul-01

Implementing user registration, login, and logout functionalities

Schema design:

  • Define the schema for the user table, including fields such as username, email, password (hashed), etc.

Registration endpoint:

  • Create an endpoint to handle user registration
  • Validate incoming user data (e.g., username uniqueness, password strength)
  • Hash and store passwords securely in the database

Login endpoint:

  • Implement an endpoint for user login
  • Verify user credentials against the stored data.
  • Generate and return a JWT (JSON Web Token) upon successful authentication.

Logout Endpoint:

  • Implement an endpoint for user logout.
  • Invalidate or expire the JWT token.

Session management:

  • Handle user sessions securely (e.g., token expiration, token refreshing)

Time Off logic requirements

The time off requirements are as follows:

  1. Any employee can create a time off request, but the approval for the time off request is done by the manager.
  2. Time off request can be done for either half day or full day. For a half day time off its 4 hours and for a full day time off it is 8 hours
  3. Once a time of request is made, The request is notified to the manager in email and should take the manager to the time off request approval popup. The manager accepts/rejects the time off as needed.
  4. Afterwards, a confirmation email is sent back to the employee and the manager about the time off decision from the manager
  5. If the employee decides to edit or delete any upcoming time off, then on clicking the delete/edit button, the changes to the time off will again be notified to the manager through an email and afterwards depending on the managers decision the request to the changed time off will be made. But if the employee does not have enough time off time left then she/he cannot edit and increase his time off. At the same time If the employee decides to delete any upcoming time off, then upon the decision of the manager the time off period will be reimbursed.

Send an email after the offboarding survey

The same email should be sent to HR admin and the manager. Both should include the survey q/a. Please get in touch with @gorkem-bwl once you are done with the simplest version and we'll work on the template, using MJML (mjml.io).

Settings page - updates for offboarding tab

Please check below pages on Figma and implement them as they are designed.

Page: Settings > Offboarding > Survey Questions
Updates: A vertical tab has been added in the page content.

Screenshot 2024-07-30 at 18 29 15

Page: Settings > Offboarding > Documents
Updates: The whole page is newly added.

Screenshot 2024-07-30 at 18 31 18

Thanks!

cc: @zaidi201 @gorkemcetin

Define colors, text, menu icons and popup menu

Implement the following with Reactjs & MUI:

  • Drop down with search
  • Selectable drop downs
  • Define colors
  • Define text used in the app
  • Implement menu and menu icons
  • Implement popover menu
Screen element 3

Email MJML templates

The outgoing email contents are written in this issue: #23

This document includes MJML templates for outgoing emails.

There may be more email templates we would prepare, but for now, those are the ones that are required for the MVP to function properly.

@zaidi201 assigning this to you temporarily.

Action buttons for offboarding and terminating an employee

An employee can be terminated. The termination process is initiated by the HRM admin. When the HRM admin goes to the employee's page, there is a dropdown button that has two actions:

  • Send offboarding survey
  • End employment

When "send offboarding survey" is selected, the employee receives an email that includes the link to the survey and offboarding documents. In 3 steps employee is asked to sign and upload termination documents, and answer offboarding questions (e.g exit survey). This is already being implemented by Fazlul.

Here is the dropdown menu attached to an employee page:

Screenshot 2024-07-12 at 11 11 25 PM

When "End employment" is selected, then the following popup appears. The HR admin must confirm 2nd time that the employment is terminated. An email of termination is sent to HR admin.

Note that an employment can be ended either immediately or at a later (or previous) date.

Screenshot 2024-07-12 at 6 52 21 PM

CC @bolatein @olusegunawowole @zaidi201

Time Off Request Sequence Diagram

Create a timeoff API sequence diagram to show how the timeoff works in the application. The sequence diagram should have the following.

  • How the different entities communicate

  • How are requests sent

  • The reasons for timeoff/ accrual policy

  • Maximum amount of time off that can be accrued.

  • Number of days time off is allowed in a year

  • What are the rules for carrying over unused time off to the next period? (carryover policy)

  • Track accrued, used and remaining time offs

UI fixes

There are a few UI fixes that need to be done:

  1. The left sidebar should have 100% height. Currently, it cuts off and doesn't reach the bottom.
  2. We can get rid of the top sidebar completely.

Settings page - updates for popup windows

Please check Settings > Departments action popup windows for any updates:

Screenshot 2024-07-12 at 8 29 15 PM

Please check Settings > Job titles action popup windows for any updates:

Screenshot 2024-07-12 at 8 29 29 PM

Please check Settings > Employee fields action popup windows for any updates:

Screenshot 2024-07-12 at 8 29 55 PM

Thanks!

CC @zaidi201 @bolatein

Implement profile pages

The profile page of the HRM application has the following tabs:

  • Profile: The user can set first name, last name and photo. Email address is immutable. Here the user can also remove the username from the database.

  • Password: The user can give the current password and then set a new password. The new password must contain at least 8 characters and must have at least one uppercase letter, one number and one symbol.

  • Team: This is only visible to the admin - the first logged-in user. The admin can invite a new user or an admin, change the role or remove other users/admins. The organization name can also be changed here. Initially, the organization name can be a random string, like "Stark Industries", and then can be modified by the admin.

The link to Figma is here.

You can also copy and implement some of the code from the Uptime Manager team, as they have almost completely implemented Profile pages.

Tasks:

  • Implement profile tab

    • General layout
    • 3 Text field for names
    • Note that 1 there is one immutable text field for password
    • Update link by clicking on the picture functionality
    • "Delete" button
    • "Update" button
    • "Save" button
    • "Delete account" button
  • Implement password tab

    • General layout
    • 3 Text field for password and confirmation
    • Text information what is required at the alert box text location (that is currently showing on Figma)
    • Alert text box when requirements are not met
    • "Save" button
  • Team section

    • General layout
    • Organization name edit button (pen icon)
    • "Invite team member" button
    • List of members
    • Role selection: a dropdown menu for setting the member's role
    • Bulk action > Delete action for selected members

Time off request: Editing and removing a time off

When a time off request is generated, it is available on the Time off requests table for each employee. The employee can edit or remove a time off request.

When a time off request is edited, the manager is informed and it requires another approval from the manager. The manager is informed via email. An information email is also sent to the employee.

When a time off request is removed, the manager is informed and it requires approval. If the approval is taken, hours/days in the time off request is granted back to the employee. The employee is informed about the manager's decision.

The time off request edit screen:

Screenshot 2024-07-12 at 12 31 04 AM

The time off request delete screen:

Screenshot 2024-07-12 at 12 53 20 AM

CC @olusegunawowole @shidrath

New logo (big and small)

There are two product logos:

  1. The big one is used on the main login screen
  2. The small one is used on the dashboard.

Attaching both of them here.

BlueWave HRM_big

BlueWave HRM_small

Time off request backend logic

  • Implementing workflows for approval processes related to leave requests
  • Writing backend logic to handle time off requests

Logging and troubleshooting methods

  • Implementing logging mechanisms to track HRM system activities and errors for troubleshooting purposes

This implementation needs an API backend as it will be visible from the user interface, for example:

  • When a user's department type changes
  • When the status of a user changes from onboarding to active
  • When a user's salary has changed
  • When there is a time off policy requested
  • When a time off policy is accepted

The first login process right after installation

BlueWave HRM is an open-source product. When installed, the HRM admin should be the first person to see the onboarding screen. This onboarding screen should be called once and never be seen again, as all the required company information (name, web page, and logo) is already in the database to be used later.

Now, when the server is installed, the user must go to the URL (http://URL or https://URL depending on whether the admin installed Let's Encrypt (via https://certbot.eff.org/) or not. There, the HR admin needs to see a form with the following inputs:

  • Name
  • Surname
  • Email
  • Password
  • Password (again)

Upon entering this information, the onboarding screen should show up. As soon as the onboarding begins, the form above should not be reachable, as the HRM admin has already logged in. Instead, our usual login pages should appear.

I am writing this here as it will probably require some backend logic (?) as well as the first login page for the HRM admin as well.

Here's the Figma file for the initial account setup page for the HRM admin:

Screenshot 2024-07-11 at 1 45 47 AM

Setting up / implementing the database schema

  • Designing the database schema to store user data, employee information and organization structure
  • Implementing data models for entities like users, employees, departments, positions, salary details, etc.
  • Building RESTful APIs to interact with the frontend and perform CRUD operations on various entities.
  • Defining endpoints for functionalities such as user management, employee management, department management and leave management

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.