Home

Awesome

Payroll Processor

Sample HRIS application where a list of employees and their payroll information would be available in report format.

<p> <a href="https://github.com/KyleMcMaster/payroll-processor/graphs/contributors" alt="Contributors"> <img src="https://img.shields.io/github/contributors/KyleMcMaster/payroll-processor" /></a> <a href="https://github.com/KyleMcMaster/payroll-processor/stargazers" alt="Stars"> <img src="https://img.shields.io/github/stars/KyleMcMaster/payroll-processor" /></a> <a href="https://github.com/KyleMcMaster/payroll-processor/issues" alt="Issues"> <img src="https://img.shields.io/github/issues/KyleMcMaster/payroll-processor" /></a> <a href="https://github.com/KyleMcMaster/payroll-processor/blob/master/LICENSE" alt="License"> <img src="https://img.shields.io/github/license/KyleMcMaster/payroll-processor" /></a> </p>

Twitter Follow Twitter Follow

<img src="https://shields.io/endpoint?url=https://prod-nimble-metrics-appservice.azurewebsites.net/api/badge/kylemcmaster/payroll-processor"/>

Status of this Repository

This project was started as an exploration into various technologies and approaches that the contributors had been meaning to try but weren't able to exercise in their employer's production code. The effort and success this project achieved was a labor of love and will forever hold fond memories in my (@KyleMcMaster's) heart as a catalyst for learning and growth that had an impactful experience on my career. Since 2022 or so, development on this project has become stale and the primary contributors have all taken interest in other technologies and problems that aren't represented within the space of this sample application. You can follow my latest development efforts over at FShopOnWeb I hope this code can continue to be a reference for anyone interested in the patterns and principles applied here.

Build status

Api and Functions

dotnet core - build & test

Client

.github/workflows/policy-npm.yml Styled with Prettier

Motivation

This project was created to explore a variety of technologies, patterns, and frameworks in a sandbox style environment. The fictional domain of the application is designed be restrictive enough to mimic a real world application while also allowing creative and technical freedom for the developers involved.

Areas of interest:

Roadmap

MVP

Future Enhancements

Contributors ✨

Thanks goes to these wonderful people (emoji key):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tr> <td align="center"><a href="https://github.com/KyleMcMaster"><img src="https://avatars1.githubusercontent.com/u/11415127?v=4" width="100px;" alt=""/><br /><sub><b>Kyle McMaster</b></sub></a><br /><a href="#design-KyleMcMaster" title="Design">🎨</a> <a href="https://github.com/KyleMcMaster/payroll-processor/commits?author=KyleMcMaster" title="Code">💻</a> <a href="https://github.com/KyleMcMaster/payroll-processor/commits?author=KyleMcMaster" title="Tests">⚠️</a></td> <td align="center"><a href="https://www.seangwright.me"><img src="https://avatars3.githubusercontent.com/u/1382768?v=4" width="100px;" alt=""/><br /><sub><b>Sean G. Wright</b></sub></a><br /><a href="#design-seangwright" title="Design">🎨</a> <a href="https://github.com/KyleMcMaster/payroll-processor/commits?author=seangwright" title="Code">💻</a> <a href="https://github.com/KyleMcMaster/payroll-processor/pulls?q=is%3Apr+reviewed-by%3Aseangwright" title="Reviewed Pull Requests">👀</a></td> <td align="center"><a href="https://conklin.dev"><img src="https://avatars2.githubusercontent.com/u/2951907?v=4" width="100px;" alt=""/><br /><sub><b>Justin Conklin</b></sub></a><br /><a href="https://github.com/KyleMcMaster/payroll-processor/pulls?q=is%3Apr+reviewed-by%3Aeyev" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/KyleMcMaster/payroll-processor/commits?author=eyev" title="Code">💻</a></td> </tr> </table> <!-- markdownlint-enable --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the all-contributors specification. Contributions of any kind welcome!

Star History ⭐

<a href="https://star-history.com/#kylemcmaster/payroll-processor&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kylemcmaster/payroll-processor&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kylemcmaster/payroll-processor&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kylemcmaster/payroll-processor&type=Date" /> </picture> </a>

Project Structure

api/ - .NET API and Azure Functions backend

client/ - Main view of the application built with Angular and Boostrap

vue-client/ - Alternate view of the Admin page built with Vue3 and Tailwind CSS

References

Akita-Demo

Build / Run

This project uses VS Code Multi-root Workspaces. For the best developer experience, open the workspace directly with VS Code (code payroll-processor.code-workspace) or open the root of the repository in VS Code (code .) and when prompted, open the workspace.

API

The API solution (PayrollProcessor.sln) is set up as the default solution for Omnisharp, and is loaded as soon as the VS Code workspace is opened.

All of the backend .NET code is found in the /api folder.

This solution contains 2 applications PayrollProcessor.Functions.Api and PayrollProcess.Web.Api This solution also contains multiple shared libraries and test projects.

There are VS Code tasks (Clean, Build, Test) at the solution and the individual application project level.

PayrollProcess.Web.Api

Currently there are no application secrets or app settings to customize for the Web API. However, settings for the application can be found in appsettings.Development.json and appsettings.json.

To run the Web API run the following launch configuration (Debug: Select and Start Debugging)

The application will start and listen for requests on http://localhost:5000.

PayrollProcessor.Functions.Api

The application will listen for requests on http://localhost:7071.

Angular Client

Data Storage

The project currently stores data in Azure Table Storage, which can be simulated locally using the Azurite.

The locally stored data can be viewed using the Azure Storage Explorer.

This project also uses the Azure Cosmos Db Emulator which can be downloaded at https://aka.ms/cosmosdb-emulator

Note: There is a Linux/MacOS emulator available as well

Data Initialization / Seeding

Create Collections / Queues

For performing any of the following operations ensure the following:

To initialize the data storage structure (a few tables and a queue):

The creation process will skip any resources that already exist.

Create Seed Data

There is also an endpoint to initialize randomly generated data in the data storage:

Reset Collections / Queues and Data

Finally, there's an endpoint to clear/reset all the data currently in the app. This can be useful if you are changing schemas and don't want to write migrations.