A responsive web application to track time, manage hourly rates, calculate payroll, and schedule shifts for home health aides.
- Simple Caregiver Login: Caregivers log in using Phone Number + 4-digit PIN
- Admin Role Management: Admins access via email/password with full system permissions
- Manage Caregiver Profiles: Create, edit, and deactivate caregiver profiles with hourly rates
- Update Caregiver Rates: Edit hourly rates inline with save/cancel functionality
- Toggle Caregiver Status: Activate or deactivate caregivers with one click
- Delete Caregivers: Remove caregiver profiles (with confirmation)
- Credential Management (Admin): Update email/password for admins and phone/PIN for caregivers
- Self-Service Credentials (Caregiver): Caregivers can update their own phone number and PIN
- One-Tap Clock In/Out: Large, mobile-friendly buttons to start and end shifts
- Active Shift Indicator: Real-time timer showing elapsed shift time
- Shift Summary: Automatic calculation of hours worked and estimated pay after clock-out
- FR-14: Publish Open Shifts: Admins can create and publish shift slots for specific dates/times
- Edit Scheduled Shifts: Update shift date, time, and name before assignment
- Delete Scheduled Shifts: Remove scheduled shifts with confirmation
- FR-15: View Available Shifts: Caregivers can see open shifts and their assigned shifts in a calendar view
- FR-16: Self-Assignment (Claim Button): Caregivers can claim open shifts with one tap
- FR-17: Shift Drop/Cancellation: Caregivers can drop shifts if >24 hours before start time
- FR-18: Conflict Prevention: System prevents caregivers from claiming overlapping shifts
- Variable Rate Management: Set unique hourly pay rates for each caregiver
- Manual Shift Entry/Edit: Add or modify shifts when needed
- Total Owed Dashboard: Real-time display of total unpaid liability
- Date Range Filtering: View hours and costs for specific time periods
- Mark as Paid: Archive paid shifts and update liability calculations
- Payroll Export: Clean table view for screenshots or printing
First, install dependencies:
npm installThen, run the development server:
npm run devOpen http://localhost:3000 with your browser to see the application.
Your app is ready to deploy! Deploy to Vercel (free, fast, reliable):
vercel --prodSee DEPLOY_NOW.md for quick instructions.
- Email:
admin@example.com - Password:
password123
- Jane Doe: Phone
5551234, PIN1234(Rate: $25/hr) - John Smith: Phone
5555678, PIN5678(Rate: $28/hr)
src/
├── app/
│ ├── admin/ # Admin dashboard with scheduling
│ ├── caregiver/ # Caregiver time clock and shift view
│ ├── layout.tsx # Root layout
│ └── page.tsx # Login page
├── context/
│ └── AuthContext.tsx # Authentication context
├── services/
│ └── mockData.ts # Local storage service with shift scheduling
├── types/
│ └── index.ts # TypeScript type definitions
└── utils/
└── shiftUtils.ts # Shift formatting and validation utilities
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Storage: Browser LocalStorage (mock database)
- State Management: React Context API
-
Admin creates open shift (Schedule tab)
- Selects date, start time, end time, and optional shift name
- Shift appears as "Open" in the schedule
-
Caregiver views available shifts (Schedule tab)
- Sees only open shifts and their own assigned shifts
- Green cards for open shifts, blue cards for assigned shifts
-
Caregiver claims shift (Claim button)
- System checks for conflicts with existing shifts
- If no conflict, shift is assigned instantly
- Shift becomes unavailable to other caregivers
-
Caregiver can drop shift (Drop button)
- Only available if >24 hours before shift start
- If <24 hours, message directs to contact admin
- Dropped shifts revert to "Open" status
The system automatically prevents caregivers from:
- Claiming shifts that overlap with their existing shifts
- Double-booking themselves
- Creating scheduling conflicts
- Data persists in browser LocalStorage
- All timestamps stored in ISO format (UTC)
- Mobile-first responsive design
- Real-time updates without page refresh
To learn more about Next.js:
The easiest way to deploy is using the Vercel Platform.
Check out Next.js deployment documentation for details.