Skip to content
/ HRMS Public

Human Resource Management Software / Seminar work

License

Notifications You must be signed in to change notification settings

Smayke95/HRMS

Repository files navigation

HRMS

Human Resource Management Software

Seminar work - Software development 2 - Faculty of Information Technologies
Made by: Anes Smajic & Irena Vilic

About

Human Resource Management Software (HRMS) is an application solution for employee records, department records, position records, employee employment management, vacation records, project and task records, employee communication, reporting, etc.
It uses .NET Api for backend and Flutter for frontend.


Architecture

Clean Architecture approach is used.
Please refer to: Clean Architecture with ASP.NET Core 8

HRMS - Web

Defines all API endpoints, also security and error handling for that endpoints. It uses .NET 8.

Serilog is used for logging. Logs are saved in folder Logs separated for each day.

SignalR is used for chat between employees.

Swagger is used for documenting and testing API endpoints. To open Swagger UI go to /swagger.

RateLimiter is used to limit API calls to prevent abusive actions on service.

Hangfire is used as worker and handles Recurring Jobs and Fire-and-Forget Jobs.
To open Hangfire Dashboard go to /hangfire.

All Recurring Jobs are defined in HRMS.Extensions.HangfireExtensions.AddHangfireRecurringJobs().

HRMS.Core - Core

Used to store all business rules and entities. Everything else depends on Core project.

HRMS.Database - Infrastructure

Defines database (tables, views, procedures) and access to that database.
Entity Framework Core is used for database integration.

Entity Framework database creation and migration:

1.) Set HRMS.Database as Startup Project
2.) In Package Manager Console set Default project to HRMS.Database
3.) Run commands:

Add migration: add-migration <migration name>
Create database: update-database

HRMS.Desktop - Desktop and Mobile

Use Flutter for desktop and mobile app development.
To generate models run:

flutter pub run build_runner build --delete-conflicting-outputs

HRMS.IdentityServer - Web

IdentityServer4 is used for user authentication.

HRMS.RabbitMQ - Infrastructure

Integration with RabbitMQ which is used for notification system.
Use credentials admin / admin to access administration module.

HRMS.SMTP - Web

Integration with MailSlurp which is used for sending emails.
This web application connects to RabbitMQ and listens for any requests for sending emails.


Development

Requirements

- Visual Studio 2022
- Visual Studio Code (with Flutter extension)
- MS SQL Server 2022 (Database Engine with Full-Text Extractions for Search)
- Flutter SDK (version 3.0.5 - 4.0.0)
- Android Studio
- Docker Desktop

ISS Express (Development):

1.) Open solution HRMS.sln with Visual Studio
2.) Update appsettings.Development.json in project HRMS
3.) Update appsettings.Development.json in project HRMS.IdentityServer
4.) Configure multiple startup projects: HRMS and HRMS.IdentityServer
5.) Click Start to run application
6.) Run docker image rabbitmq to enable notifications

Docker (Production):

1.) Update .env file in root folder
2.) Run 'docker compose up'

Flutter (Development & Production):

1.) Open folder HRMS.Desktop with Visual Studio Code
2.) Get all packages
3.) Update configuration to match development or production urls
4.) Choose desktop, mobile or web build
5.) Run application with F5 (HRMS and HRMS.IdentityServer must be running)
6.) For notifications RabbitMQ must be running

Testing

Development:

WebApi HTTP      WebApi HTTPS
Swagger HTTP     Swagger HTTPS
Hangfire HTTP     Hangfire HTTPS
Identity HTTP       Identity HTTPS
RabitMQ HTTP     RabitMQ HTTPS
SMTP HTTP          SMTP HTTPS

To test HRMS.IdentityServer use:
https://localhost:44301/[email protected]&password=admin

To test HRMS.SMTP use:
https://localhost:44302/test?message=This%20is%20test%20message

To test mobile application on real device use Dev Tunnels.

Production:

WebApi HTTP      WebApi HTTPS
Swagger HTTP     Swagger HTTPS
Hangfire HTTP     Hangfire HTTPS
Identity HTTP       Identity HTTPS
RabitMQ HTTP     RabitMQ HTTPS
SMTP HTTP          SMTP HTTPS

To test HRMS.IdentityServer use:
https://localhost:51443/[email protected]&password=admin

To test HRMS.SMTP use:
https://localhost:52443/test?message=This%20is%20test%20message


Credentials

Administrator:

Email: [email protected]
Pass:  admin

HR manager:

Email: [email protected]
Pass:  manager

Employee:

Email: [email protected]
Pass:  employee

Code hygiene

Visual Studio

Format code: CTRL + K + D
Sort usings: CTRL + R + G

Visual Studio Code

Format code: SHIFT + ALT + F
Sort imports: SHIFT + ALT + O

*Use relative import paths.


Licence

Project is licensed under the GNU General Public License v3.0

About

Human Resource Management Software / Seminar work

Resources

License

Stars

Watchers

Forks