Superapp / Product requirements / hrm

Tangerine HRM — product requirements

Version 1.18 features18 requirements8 Must Open appJSONMarkdown

Tangerine HRM is an HR suite with an employee self-service (ESS) role and an HR admin role. It covers sign-in, the employee master list (PIM) with Add Employee, a company Directory, My Info, leave application and listing, a weekly timesheet, claim requests and a Buzz newsfeed. Screens follow the classic /web/index.php/<module>/<screen> URL layout and confirm writes with toasts.

Problem. Employees and HR staff need everyday HR tasks to work the same way every time: validation must be inline and specific, and anything confirmed with a success message must really be saved and visible afterwards.

Users

Goals

Out of scope

Contents

Login and logout

Classic login page with client-side and server-side validation.

FR-AUT-01
Must
A valid user signs in from the Login page and lands on the Dashboard with their name in the header.
  • Login page shows Username, Password, Login and a "Forgot your password?" link, both fields empty, password masked
  • URL contains "/dashboard/index"; header shows "Jacob Palmer" for the seeded employee
FR-AUT-02
Should
Logout from the user menu ends the session; protected pages then redirect to Login.
  • Menu: About, Support, Change Password, Logout
  • After Logout the URL contains "/auth/login", fields are empty; opening the Dashboard URL returns to Login
FR-AUT-03
Must
An empty login is blocked client-side.
  • "Required" under Username and under Password; URL stays on /auth/login
FR-AUT-04
Must
A wrong password is refused with a generic message that does not reveal which part was wrong.
  • Alert "Invalid credentials"; still on the Login page
FR-AUT-05
Should
The session is kept in the browser: after visiting an unrelated page on another path and returning, the user is still signed in.
  • Returning to My Info shows Personal Details without a new login

PIM employee records

Employee list, search and Add Employee (admin).

FR-PIM-01
Must
An admin can add an employee with first, middle and last name and an Employee Id of at most 10 characters; the form pre-fills a generated id.
  • "Successfully Saved" toast, then the new employee's Personal Details opens
  • The employee appears in Employee List when searched by name, under "(N) Records Found"
FR-PIM-02
Must
An Employee Id that is already in use is refused inline and no record is created.
  • "Employee Id already exists" under the field; no toast; stays on Add Employee
FR-PIM-03
Must
Employee List search by Employee Id returns exactly the matching employee.
  • Id 0422: "(1) Records Found" with Jacob Palmer only

Directory

Cards for every active employee.

FR-DIR-01
Should
The Directory lists every active employee as a card; the count is unchanged by Search without filters and returns after Reset.
  • "(46) Records Found"
  • Job Title "QA Engineer" narrows the cards and count; Reset restores 46
  • Footer reads "Tangerine HRM OS 5.7"
FR-DIR-02
Must
The "Records Found" count equals the number of cards and excludes deleted employees.
  • 46 cards for "(46) Records Found"

My Info

Employee self-service profile.

FR-MYI-01
Should
My Info has ten tabs, each opening its own heading.
  • Personal Details, Contact Details, Emergency Contacts, Dependents, Immigration, Job, Salary, Report-to, Qualifications, Memberships
  • Headings "Contact Details", "Emergency Contacts", "Dependents", "Job Details", "Qualifications", "Memberships"; record tabs show an "Assigned ..." list
FR-MYI-02
Should
Personal Details shows the seeded master data and the Employee Id is read-only.
  • Jacob Palmer; Employee Id 0422 disabled
  • Nationality Singaporean, Marital Status Single, Date of Birth 1993-05-23, Gender Male
  • Save button and Attachments section with "+ Add"

Leave

Apply for leave and review requests.

FR-LEV-01
Must
An employee can apply for leave and the request is stored as Pending Approval and listed in My Leave List.
  • Selecting Annual Leave shows the Leave Balance, e.g. "9.00 Day(s)"; To Date mirrors From Date
  • "Successfully Saved" toast
  • My Leave lists the date with status "Pending Approval (1.00)"
FR-LEV-02
Should
A request that overlaps an existing pending request is refused and the overlap is shown.
  • Toast "Failed to Submit" and panel "Overlapping Leave Request Found" listing the pending "Moving house" request
FR-LEV-03
Should
My Leave List has this calendar year pre-filled, default status chips and the standard columns; clearing all statuses is rejected.
  • Status chips Pending Approval, Scheduled, Taken; Leave Type "-- Select --"
  • Columns Date, Employee Name, Leave Type, Leave Balance (Days), Number of Days, Status, Comments, Actions; no Cancelled row
  • No chips: "Required" under the status filter

Timesheet

Weekly timesheet.

FR-TIM-01
Could
My Timesheet shows the current Monday-Sunday week with a grid and submission status; the period arrows move one whole week.
  • Columns Project, Activity, Mon..Sun with dates, Total
  • Current week "Status: Not Submitted" with Edit
  • Two weeks back: "Status: Submitted", total 37.50 hours

Claims

Claim request form.

FR-CLM-01
Could
The Create Claim Request form shows its required fields and Cancel returns to My Claims without saving.
  • Event and Currency dropdowns at "-- Select --", Remarks, "* Required", Cancel, Create
  • After Cancel: "(1) Records Found"

Buzz newsfeed

Posts with sorting and anniversaries.

FR-BUZ-01
Could
The newsfeed lists posts, offers Most Recent, Most Liked and Most Commented sorting and shows Upcoming Anniversaries.
  • Most Liked: first post is the volunteering-day post (31 Likes)
  • Most Recent: selected, newest first

Glossary and rules

ESSEmployee self-service: a regular employee user.
PIMPersonnel information management: the employee master list.