6 min read

Goals Application with UKG

Goals Application with UKG

2022 Fall Team Project_ Byte Goals

GitHub - IlMinCho/Goals-Application-with-UKG
Contribute to IlMinCho/Goals-Application-with-UKG development by creating an account on GitHub.

Team Name - WolfBite 6 / Customer- UKG

Frontend

Backend

Nick

Arya

Pradyumn

Ilmin

Lance

Iain

Jeremy

Aidan

 

Saakshaat


Description: The purpose of this application is to provide a user-friendly interface for employees to create, track, update, and archive their personal and professional goals. The application also provides an interface for the managers to view their employees’ goals and comment on them. Employees and Managers are the two main user types. The important aspects of the application are user-friendly, minimalistic and scalable.

The end goals of the application:

• Provide a user-friendly interface for employees to track their personal and professional goals.

• Allow Managers to give feedback to, track, and assign goals to their employees.

Implemented Features:

• A user can create or archive goals assigned to them, or from those they manage

• Nearly all fields of a goal can be updated, some conditionally

• A user can search, sort, and filter goals from the main table

• Managers have full edit access to their employees’ goals, as well as the ability to add comments


Application:

Landing Page

We leveraged a dataset of approximately 3,100 user entries from UKG to create an application. This system enables users to log in using their company-registered credentials, providing a tailored experience.

User Page - Your Goals

Upon logging in, users are presented with an overview of their personal goals. This functionality provides a straightforward and immediate insight into their objectives and progress.

Full Info about goals

The application includes a 'Full Info' feature, allowing users to access detailed information about their goals and make necessary modifications. This empowers users with greater control and flexibility in managing their objectives.

Each Comments

When users select a goal, they can view related comments from their team members. This feature facilitates a collaborative workspace, enabling users to engage in productive discussions and receive constructive feedback.

Add New Goal
Managed Employee List
Goals list of managed employees

The system also caters to supervisory roles, allowing them to view and comment on the goals of employees they manage. This aspect of the application aids supervisors in providing direct support and feedback, enhancing team management and guidance.


Architecture Diagram

Third party softwares

Software Title

Description

Purpose

React

Free and open-source front-end JavaScript library for building user interfaces based on UI components

React makes it quick and simple to create high-volume web applications that can change data without reloading the page.

Material UI

An open-source UI component library for React.

Increasing iterative development efficiency with prebuilt and configurable components

FastAPI

Python API framework for developing REST APIs

A high-performance, easy-to-learn, and fast-coding framework for creating back-end APIs (Web)

Pydantic

Python library to do API level data validations

To validate data and manage settings using type annotations

Uvicorn

application which acts as the server and the runs the FastAPI instance

This is used because web development cannot be done with only the fastapi framework, and a web server compatible with ASGI is required.

SqlAlchemy

SQLAlchemy is known as an Object-Relational-Mapper (ORM) and can map classes to databases, allowing object models and database schemas to be developed from scratch in a completely decoupled fashion.

Python ORM we're using to interact with SQL database

 

SQLite

Although it is a database management system, it is a relatively lightweight database that is used by putting it in an application program rather than a server.

SQLite is used as a traditional table-oriented relational database.

Data Information

# Data from UKG

## Json Files

Each Json file represents data for a single company of a different size. "Fluffy Bunny Consulting" contains 100 employees, "Outback Technology" contains 500 companies, and "Nightwell Enterprise" contains 2500 employees.
Each file is a single Json array containing every employee for the company. Each element in the array looks something like this:
```json
{
  "firstName" : "Moshe",
  "lastName" : "Ferguson",
  "employeeId" : 2,
  "email" : "Moshe_Ferguson@fluffybunnyconsulting.com",
  "companyId" : 1,
  "companyName" : "Fluffy Bunny Consulting",
  "managerId" : 1,
  "positionTitle" : "Engineering Manager",
  "startDate" : "2016-05-04",
  "isManager" : true,
  "password" : "fergusonmo"
}
```
Data List From UKG
Application Data Diagram

Testing

The team successfully obtained comprehensive API documentation by utilizing Swagger. This tool enabled them to interact with the application's API in a user-friendly interface, facilitating a deeper understanding of its functionalities and endpoints. Swagger's dynamic documentation provided an interactive way for the team to explore and test the API, ensuring a thorough grasp of its capabilities and how it integrates with the broader system.

Use Postman from time to time to check whether the system is working and its efficiency.


Work Process

  • Sprints

The Sprints started with a brief overview of what each member is looking to implement in the upcoming week. This was followed by the team splitting into the two groups: front-end and back-end. Numerous ideas, conflicts and implementation details were discussed within each group. Lastly, the specific tasks for each member were assigned, in accordance with the discussions.

We had a one-hour group meeting at least once a week, and we also gave a presentation on the progress to stake holder every week.

  • Difficulties (scrum)
  1. In the part of integrating front-end and back-end parts in the later part of  development, it was difficult because minor differences occurred in each development due to lack of communication in the early part of development. However, the problems were resolved through continuous communication.
  2. There were some additional technical problems, such as the poor quality of Interaction during the meetings.
  • Worked well (scrum)
  1. At the beginning of development, all members studied and understood knowledge that they did not know well, such as fastAPI, React, and SqlAlchemy, and proceeded with development so that each member did not experience difficulties in developing the service.
  2. When there were difficulties in developing each one flexibly, most of the people possibly gathered and solved the problem together.
  3. The length of the sprint meetings kept the meetings quick. This resulted in swift actions which resulted in faster implementations.
  • Technical Issue
  1. How to use github in general, and conflicts that occur when merging from each frontend and backend branch to main.
  2. There were some conflicts between front-end css of different landing pages.
  3. There were conflicts between data types of front-end and back end. Towards the back end there were some implementation conflicts between the two teams as well.
  4. Async troubleshooting with frontend fetch requests took more development time than expected to resolve.

Key learnings
• Backend software - FastAPI, Uvicorn
• Data Process - Pydantic, SqlAlchemy, SQLite
• Testing - Postman
• Git-based frontend and backend teamwork