Made by: Anes Smajic & Irena Vilic
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.
Clean Architecture approach is used.
Please refer to: Clean Architecture with ASP.NET Core 8
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()
.
Used to store all business rules and entities. Everything else depends on Core project.
Defines database (tables, views, procedures) and access to that database.
Entity Framework Core is used for database integration.
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
Use Flutter for desktop and mobile app development.
To generate models run:
flutter pub run build_runner build --delete-conflicting-outputs
IdentityServer4 is used for user authentication.
Integration with RabbitMQ which is used for notification system.
Use credentials admin
/ admin
to access administration module.
Integration with MailSlurp which is used for sending emails.
This web application connects to RabbitMQ and listens for any requests for sending emails.
- 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
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
1.) Update .env file in root folder
2.) Run 'docker compose up'
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
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.
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
Email: [email protected]
Pass: admin
Email: [email protected]
Pass: manager
Email: [email protected]
Pass: employee
Format code: CTRL + K + D
Sort usings: CTRL + R + G
Format code: SHIFT + ALT + F
Sort imports: SHIFT + ALT + O
*Use relative import paths.
Project is licensed under the GNU General Public License v3.0