Git Product home page Git Product logo

hermes's Introduction

Hermes v1.5.5

Hermes is a FastAPI powered employee management web application.
It allows you to manage your employees, their roles, and their onboarding/offboarding status. Capture of Hermes

Features

  • Add, edit, and delete employees
  • Assign roles to employees
  • Onboard and Offboard employees
  • View and search employee details and history
  • Upload employee contracts
  • Generate reports on employee data
  • Create test admin account with unique employee checks and confirmation boxes
  • Automated Slack and E-mail triggers with employee onboarding, updating or offboarding
  • Security notification for access to privileges data
  • API call for generating active employee lists
  • Customise Hermes with your company's logo and color scheme

Installation

You can install the project locally, and run it as you see fit, or you could run it in a docker container.

Local installation

  1. Clone the repository: git clone https://github.com/DarthTigerson/Hermes.git
  2. Install the dependencies: pip install -r requirements.txt
  3. Create a .env file and set the environment variables (see .env.example for an example)
  4. Give executable permissions to the launcher script: chmod +x run.sh
  5. Run the application: ./run.sh

Run on production mode (with HTTPS)

To run this over HTTPS, you will need your cert files. You can read more about that here.

  1. Clone the repository: git clone https://github.com/DarthTigerson/Hermes.git
  2. Install the dependencies: pip install -r requirements.txt
  3. Create a .env file and set the environment variables (see .env.example for an example)
  4. Give executable permissions to the launcher script: chmod +x run.sh
  5. Execute the run.sh script with the following parameters: run.sh <KEYFILE_PATH> <CERTFILE_PATH>

This way, Hermes will be running, available to your network, on port 443, with HTTPS.

Build Docker image

It is possible to build your own docker image from the Dockerfile in this repository.
Although, the preferred way to do it is to pull a prebuilt image.
This project creates a local database on your system. So in order to use this in a container, you need to link an empty directory from your host system to the container.

  1. Clone the repository: git clone https://github.com/DarthTigerson/Hermes.git
  2. Build the image from the Dockerfile docker build --tag <YOUR_TAG> .
  3. Create and run a container from the image:
    docker run --mount type=bind,source=<DB_FILE_PATH>,target=/hermes/db -p 8000:8000 <YOUR_TAG>

Learn more on running docker containers.

Run prebuilt image

  1. Pull the image from Dockerhub: docker pull w3edd/hermes:latest
  2. Run the docker image and set the forwarding web port:
    docker run --mount type=bind,source=<DB_FILE_PATH>,target=/hermes/db -p 8000:8000 w3edd/hermes:latest

Learn more on running docker containers.

Usage

Note

If running manually, on the first run, you need to set the database by running the python startup.py script.
The default username and password for the admin user are hermes and hermes, respectively.

  1. To start the server, execute the run.sh script. You can optionally, run uvicorn manually instead: uvicorn main:app --reload
  2. Open your web browser and go to http://localhost:8000
  3. Use the navigation menu to access the different features of the application
  4. To add a new employee, click the "Add Employee" button and fill out the form. Click "Save" to add the employee.
  5. To edit an existing employee, go to the employee details page and click the "Edit" button. Make the necessary changes and click "Save" to update the employee.
  6. To delete an employee, go to the employee details page and click the "Delete" button. Confirm the deletion when prompted.
  7. To assign a role to an employee, go to the employee details page and select a role from the dropdown menu. Click "Save" to assign the role.
  8. To create a test admin account, click the "Create Test Admin" button and follow the prompts.

Note

When running uvicorn manually, you need to set the ip address and port where the service will be running.
For example: uvicorn main:app --reload --host 0.0.0.0 --port 8000
To make the service available for your network, you have to set the host to 0.0.0.0

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue on GitHub. If you want to contribute code, please fork the repository and create a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

hermes's People

Stargazers

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

Watchers

 avatar  avatar

Forkers

w3edd

hermes's Issues

Create an internal scheduler

Internal Scheduler can be used for sending offboarding notifications, slack webhook, scheduled tasks such as monthly automated reports and GDPR user deletion.

New generate reports

All Current Employees
Generate report by manager
Generate report by department
Generate report by country of origin
Generate report by working country
Generate report by site
Generate report by contract type

Improve onboarding

Change it so that when an new onboarding is being done. the start date is automatically set to the created date.

Create a DockerHub account for Hermes

If we want to make a public Docker image for Hermes, available for anyone to download, we need a permanent DockerHub account for Hermes, or for an organization that will handle this project and others.

Once the account is done, a couple of GitHub secrets need to be set.
As included in the PR to build and publish the image, the secret DOCKERHUB_ID needs to hold the ID of the DockerHub account, and the secret DOCKERHUB_TOKEN will have a secret token to identify against DockerHub when pushing an image.

Improve Reporting

setup so that the only available dropdown options have users assigned to them.

example: in Reporting 'by country' England may be present in the drop down if an employee has England selected. However if no employee has England, the country will not appear in the reporting dropdown field.

Re-design Home Page

Re-design Home Page to accommodate for the following:

Left Side 30%
Offboarding Panel:

  • consolidate Missed Offboarding, Todays Offboarding and Upcoming Offboardings into one panel.

Starting Panel:

  • Create a new panel that will show onboarding starting soon.

Birthday Panel:

  • Show upcoming Birthday Panels.

Right Side 70%
Upcoming posting system

Add E2E testing

It would be great to add end to end testing, to ensure the user experience is kept working and as expected across all the changes.

By adding test cases that run against the user interface, we can check for any problem or unexpected behavior. This way, we can keep working on new features without worrying about accidentally damaging something that was already there.

UI Improvements

Make page more apparent when redirecting to user already exists page.

Email Issues

  • Emails only being sent to the first email address in the list. Implement option to use ; as well as ,

  • When password is being saved blank, it is being saved as empty (When making changes)

Publish docker image

To allow system admins to get the newest features easier, lets create a public docker image and automatically publish it to DockerHub.

This will require setting some github secrets to store key and tokens to log onto DockerHub and upload the images as they are built.

Help from @DarthTigerson would be great to create an Hermes account on DockerHub and set these secrets on the repo.

Windows sizing issue on Home page

On the Home page, under the "Today's Birthdays" , the box (Div card-body probably) with the users details goes into the total onboarded/offboarded/users section when reducing the width of the chrome window.

image

Add ability for Managers as Users

Features needed:

  • managers need to be able to login as a user
  • UI needs to only display his employee details
  • have the ability for manager to approve leave

Table View changes

  • Keep header to the top of the page. (when scrolling down this will readability for long lists)
  • Freeze employee unique identifier (such as e-mail) column to the left hand side. (if too much of the page is taken you should modify the hover to show the employee identifier
  • Alternate pigment of each row.

Posting System

Build a posting system so that HR users can post details that can later be viewed on the home page.

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.