Enter your username or email. If MFA is enabled on your account we will send a reset code to your email.
OTP Sent!
A 6-digit reset code has been sent to your email.
MFA Not Enabled
Password reset via OTP requires Email OTP or an Authenticator App to be enabled on your account.
Since neither is enabled, please contact your Duty Manager or Admin to reset your password.
Your admin can reset passwords from Users & Roles → Edit User
Password Reset!
Your password has been updated. You can now sign in with your new password.
Dashboard
Notifications
No notifications
Dark
Light
🟠 Orange Beta
?
—
—
My Shift Today
Today's Shifts — All
Unassigned Alerts
Department Overview
Department
Building
Employees
This Month Shifts
Status
build: dept-lock-v4
Loading...
Loading...
Building: —
With employees · excludes holidays & leave
Mon → Fri
Mon → Sat
Mon → Sun
Loading…
Day View Settings
Default Display Mode
Default Sort
Show unassigned employees
Include employees with no shift today
Show leave / day-off entries
Show employees on leave or off today
Building Display Order
Drag to reorder — first building appears at the top
Roaster Management
Building: —
With employees · excludes holidays & leave
Mon → Fri
Mon → Sat
Mon → Sun
Loading roster...
⏰ Shift Types
Users & Roles
🔍
Name
Username
Phone
Role
Department
Building
Sub Dept
Work Days
Status
Actions
Departments
Name
Code
Building
Color
Status
Actions
Sub Departments
Name
Code
Parent Department
Color
Status
Actions
Buildings
Name
Address
City
Status
Actions
Public Holidays
Date
Name
Day
Applies To
Your Dept
Actions
Applied Leaves
Employee
Type
From
To
Status
Actions
Saturday Off
Employee
Date
Notes
Actions
Saturday Off — Monthly Coverage
Yearly Summary — Sundays, Saturday Offs & Public Holidays
Loading…
Leave Cover Swaps
Rollback handled from Leave List
Pending Swapper Accepted Manager Approved
Progress
Requester
Their Shift
Swap With
Target Shift
Notes
Actions
Direct Swap Requests
Pending Swapper Accepted Manager Approved
Progress
Requester
Their Shift
Swap With
Target Shift
Notes
Actions
Saturday Leave Swaps
Have a Saturday off assigned but need leave on a different Saturday? Pick your assigned off-date and the Saturday you want leave on — only eligible swap partners are shown.
Progress
Requester
Their Off Date
Wants Leave On
Swap Partner
Notes
Actions
Public Holidays
Date
Holiday
Day
Type
Applies To
My Sunday Shifts
Date
Shift
Status
My Saturday Offs
Date
Notes
Public Holidays
Date
Holiday
Type
My Leave History
Type
From
To
Days
Status
My Swap Requests
Date
Shift
With
Status
Sunday Duty
▾
Sunday Duty Pool — All Buildings (only employees with "Can work Sundays" enabled in their profile)
Sunday Roaster — Full Year Auto-Assign
Click "Preview" to see the full Sunday rotation.
Manual Assign — Pick a Date & Employee
Select Employee(s)
Current Assignments for Year
Clear Sunday Roaster
Removes all roster entries for every occurrence of the selected day in the chosen year.
Public Holiday Duty
▾
🇮🇳 PH Duty Pool — India (covers India-only and shared holidays)
🇺🇸 PH Duty Pool — United States (covers US-only and shared holidays)
Manual Assign — Pick a Holiday & Employee
Select Employee(s)
Holiday Assignments for Year
Clear PH Roaster
Removes all roster entries for every public holiday in the chosen year.
Auto Assignment
▾
Configure which days each employee works, their building and shift — then assign for a month. Existing shifts on those days are replaced. Public Holidays and approved leaves are always skipped.
Assign For Month
Day Preset
Select Days
Assign For Year
Assigns selected days for the entire year using per-employee presets below. Replaces existing shifts. PH & leaves skipped.
Clear Shifts For Month
Clear Shifts For Year
Deletes all auto-assigned shifts on the selected days (Mon–Fri / Mon–Sat / Custom). Public Holidays are always excluded.
Employee Presets — Building & Shift Per Person
Assign Saturday Rotation
Clears all existing rotation Saturday Off leaves for this year
Applies your configured 4/5/6-week plan to every Saturday
Manual individual leaves and swap leaves are not affected
Saturday Rotation
▾
Set which employees get Saturday Off each week. Months with 4 Saturdays use the 4-week plan; months with 5 Saturdays use the 5-week plan.
4-Week Plan — months with exactly 4 Saturdays
5-Week Plan — months with 5 Saturdays
6-Week Plan — months with 6 Saturdays (rare)
Click "Preview Year" to see the Saturday rotation for each month.
Custom Alerts
▾
Set minimum staff thresholds for Sunday duty and Public Holidays, then add any extra custom rules below. Dashboard alerts fire when conditions are not met.
Sunday / Shuffle Day Alert
Minimum total staff across all buildings
Set 0 to disable alert
Configured in Sunday Duty section above
Public Holiday Alert
Minimum total staff across all buildings on PH days
Set 0 to disable alert
Also used when generating PH shifts
Additional Custom Rules
Add rules for specific buildings, days, or shift patterns.
New Alert Rule
Organization
Roaster Preferences
Mandatory Shift Alerts
Highlight unassigned dates in red
Email Notifications
Send shift reminders via email
Department Access for Tools
Restrict each tool below to one department — DMs, managers, and employees outside that department won't see it in their sidebar at all. Leave as "All Departments" for a tool everyone should keep seeing.
Checklist Tools
Checklist Tracker isn't limited to one department — spin up a fully independent copy for another team. Each one gets its own sidebar entry, its own services, branches, verifiers and employees, starting completely empty and ready to configure.
Loading…
ERP Connector
Lets ERPNext (or another external system) read who sent their daily duty report — read-only, no user login or MFA involved. Each key can be revoked on its own without affecting anything else.
Connector
Loading…
My Security
Email OTP on Login
Send a one-time code to your email each time you log in
Authenticator App (TOTP)
Use Google Authenticator or similar app for login
Scan this QR code with your authenticator app:
Email Configuration (SMTP)
Use SSL/TLS
Enable for port 465
Email Notification Preferences
Choose which events trigger email notifications
Global MFA Enforcement
Force all employees to use MFA when logging in
Enforce Email OTP for All
Every user must verify via email OTP on each login — overrides individual settings
Enforce Authenticator App for All
Every user must have TOTP authenticator set up — overrides individual settings
Enabling these will affect all users on next login. Users without MFA set up will be prompted to configure it.
Server Info
Loading…
Audit Log
🔍
Time
User
Action
Entity
Details
IP
Email Notifications
Scheduled roster and daily report emails, sent automatically or on demand
Weekly Full Roaster Email
Disabled
Send the full next-week roster to all employees every week
Send the holiday roaster to all employees N days before each public holiday
Daily Reports Digest Email
Disabled
Every tracked employee's status for the previous day in one email — on time / late / on leave / missed — including the full transcript for any voice reports. Same content as the "Preview All" view on the Daily Reports page and the WhatsApp digest alert.
Send Log
Click Refresh to load send history.
Report Config
Configure the mailbox integration for Daily Reports and manage which employees are required to send reports.
Mail Provider
Microsoft 365 — Azure App Credentials
Register an app in portal.azure.com → App Registrations → API Permissions → Microsoft Graph → Mail.Read (Application)
Click + New registration → Name: DutyPulse Reports → Single tenant → Register
Go to API permissions → Add a permission → Microsoft Graph → Application permissions → search Mail.Read → Add
Click Grant admin consent → Yes
Go to Certificates & secrets → New client secret → Copy the Value
Go to Overview → Copy Application (client) ID and Directory (tenant) ID
Gmail / Google Workspace
Create a Service Account in Google Cloud Console with Gmail API access and domain-wide delegation.
Report Settings
Exclude Employees from Daily Reports
Excluded employees will not appear in the Daily Reports grid and won't be counted as missed.
Server Room Photos
Upload today's server room photo for each building, then get it verified. Verification is only possible once a photo is uploaded.
Daily
Reports
Loading…
Server Room
Verifier(s)
Days Missed Upload
Days Missed Verify
Loading…
Manage Server Rooms
A building can have multiple server rooms — each gets its own daily upload/verify.
Add a Room
Bulk Import
One room per line, format: BuildingCode | Room Name — building code must match an existing building's name exactly.
Current Server Rooms
Loading…
Manage Verifiers
Applies to every building. Anyone checked here can verify any building's server room photo.
Manage Uploaders
Applies to every building. Everyone is included by default — uncheck anyone who won't be uploading. Whoever's left checked shows as "pending" on any building they're actually rostered at today, if it hasn't uploaded yet.
Photo Auto-Expiry
Older server room photos (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window. Outside this window, the Upload button is blocked (this is independent of Exceptions — a blocked room still shows in the missed-upload alert, it isn't treated as excused).
From
:
to
:
(IST)
Preview & Approve All
Every building you can verify that's uploaded today but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
Exception Settings
These settings apply to every building — not configured separately per building.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
Mark Exception
Reject Photo
This removes the photo and emails the uploader so they know to re-upload.
Who was on shift
Loading…
Firewall Screenshots
Upload today's firewall screenshot for each building, then get it verified. Verification is only possible once a screenshot is uploaded.
Daily
Reports
Loading…
Firewall
Verifier(s)
Days Missed Upload
Days Missed Verify
Loading…
Checklist Tracker
Complete today's checklist items before their deadline, then get them verified. Each item has its own schedule — daily, weekly, monthly, or a one-off date.
Daily
Reports
Readings Log
Loading…
Task
Branch
Photo?
Frequency
Verifier(s)
Days Due
Missed Uploads
Missed Verifications
Loading…
Day-wise readings for every value-based service, broken out by slot (e.g. Morning / Evening) — no photos shown, just the numbers.
Date
Loading…
Crimping Tracker
Each week, tracked employees upload a photo + the number of cables crimped, then get it tested and approved.
Weekly
Reports
Loading…
Employee
Weeks Approved
Total Crimped
Working
Not Working
Pending
Handed to Client
Loading…
Server Backup Screenshots
Each server has its own cadence — some daily, some weekly. This always shows the live status for right now, not a specific date to browse.
Loading…
Manage Crimping List
Only employees added here are tracked. Leave the weekly target blank to use the global default (20/week).
Presets:
Crimping Settings
Presets:
⏰ Upload Timings
Restrict uploading to a weekly window, set relative to each week's Monday. Default: opens Monday 12:00 AM, closes the following Monday 5:00 PM (matching the verification deadline). Outside this window, the Upload button is blocked — independent of Exceptions, so a blocked employee still shows in the weekly status alert, not treated as excused.
Opens
at
:
(IST)
Closes
at
:
(IST)
⏰ Handoff Deadline
Once a verifier assigns a tester, the cables must physically reach that tester by this deadline — set relative to the week's Monday. Default: the following Monday at 5:00 PM. Shown on the card as a countdown, and flagged overdue once passed with no test results submitted yet.
Cables must reach the tester by
at
:
(IST)
Photo Auto-Expiry
Older crimping photos (both weekly stock uploads and direct-to-client handoffs — files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
Edit Crimping Record
Edits are recorded in the audit log and update the approved totals if this was already approved.
Exception Settings
These settings apply to every employee — not configured separately per person.
Weekend Exception
Days excluded from every crimping week (defines the working-week span — e.g. Sunday off means weeks run Mon–Sat). A week is only auto-excused entirely if every remaining working day in it is a public holiday.
Specific Days Exception
Excuse every week touched by a date range at once (e.g. someone on leave, or a shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
Weekly Crimping
This adds to the week's running total — submit again any other day you crimp more, right up until uploads close for the week.
Direct Handover to Client
Extra cables handed straight to a client — non-mandatory, doesn't count toward the weekly stock target, and skips straight to final approval (no testing step).
Assign Tester
Pick who should test these cables — anyone except whoever did the crimping.
Submit Test Results
Preview & Approve All
Every employee you can approve who's uploaded this week but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
Reject Screenshot
Preview & Approve All
Every server you can approve that's uploaded but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
Manage Servers
Add a Server
Bulk Import
One server per line, format: BuildingCode | Name | daily-or-weekly
Current Servers
Loading…
Manage Verifiers
Anyone checked here can verify any server's screenshot, plus superadmins always can.
Manage Uploaders
Who's expected to upload — shown as "Pending" on the daily card until they do.
Add Exception
Exception Settings
These settings apply to every server — not configured separately per server.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
Screenshot Auto-Expiry
Older backup screenshots (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window — applies regardless of a server's cadence (daily/weekly controls how OFTEN, this controls what TIME OF DAY). Independent of Exceptions.
From
:
to
:
(IST)
Select Your Department
Pick which department's data you want to work with. Everything — calendar, rules, leaves, swaps, roster — will be scoped to this department. You can switch it anytime from the top bar.
Manage Firewalls
A building can have multiple firewalls — each gets its own daily upload/verify.
Add a Firewall
Bulk Import
One firewall per line, format: BuildingCode | Name — building code must match an existing building's name exactly.
Current Firewalls
Loading…
Manage Verifiers
Applies to every building. Anyone checked here can verify any building's firewall screenshot.
Manage Uploaders
Applies to every building. Everyone is included by default — uncheck anyone who won't be uploading. Whoever's left checked shows as "pending" on any building they're actually rostered at today, if it hasn't uploaded yet.
Photo Auto-Expiry
Older firewall screenshots (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window. Outside this window, the Upload button is blocked (this is independent of Exceptions — a blocked firewall still shows in the missed-upload alert, it isn't treated as excused).
From
:
to
:
(IST)
Preview & Approve All
Every building you can verify that's uploaded today but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
Exception Settings
These settings apply to every building — not configured separately per building.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
Mark Exception
Reject Photo
This removes the photo and emails the uploader so they know to re-upload.
Who was on shift
Loading…
Manage Services
Each service is fully customizable — its own schedule, photo requirement, deadline, and upload window.
Tick every branch this service is done at — each ticked branch gets its own card, submission and verification. Leave all unticked for a single common entry (not branch-specific).
Photo capture
Bulk Add (using the settings above)
One service name per line — each one gets the exact schedule, branches, photo and value settings you just set above.
Current Services
Loading…
Add New Departmental Tool
Creates a brand new, fully independent Checklist Tracker — its own services, branches, verifiers and employees, none of it shared with any other tool. It appears in the sidebar right away.
Lets people submit from the shared public kiosk, not just the main app.
If yes, add this department under each Checklist section on the WhatsApp Notifications page afterward.
Create API Key
Replace deleted employee's shifts
Key Created
This is shown once. Copy it now — it can't be shown again, only regenerated (which invalidates it).
Bulk Edit Services
Editing 0 service(s). Tick a field below to change it for all of them — anything left unticked stays exactly as it is per service.
Manage Verifiers
Pick a scope, then tick who can verify. All branches verifiers can verify every service at every branch. A branch list adds people who can verify only that branch (on top of the all-branches list).
Manage Uploaders
Who's expected to submit each service. Shown as "pending" on any unsubmitted item they're rostered for today.
Manage Employees
Give someone a default branch and their kiosk locks to just that one — no switcher, nothing from other branches shows. Leave "No default" and their kiosk works like before (they pick from a dropdown). "Today only" covers someone filling in at a different branch just for the day — it reverts automatically tomorrow. You can only assign a branch you yourself can manage.
Loading…
Tool Admins
Anyone checked here gets full run of Checklist Tracker only — Manage Services, Manage Verifiers, Manage Employees, Auto Export, Auto-Expiry, Upload Timings, everything — without touching anything outside this one tool.
Exception Settings
These settings apply to every service — not configured separately per service.
Weekend Exception
Specific Days Exception
Current Exceptions
Loading…
Mark Exception
Reject Submission
This removes the submission and emails whoever submitted it, so they know to redo it.
Auto-Expiry
Older submissions (photos and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
Auto Export
Periodically email the compliance report to the recipients below. You can also export on demand from the Reports tab.
⏰ Upload Timings
Each service can have its own daily submission window. Outside it, submissions are blocked — independent of Exceptions.
Loading…
Preview & Approve All
Every item you can verify that's been submitted today but hasn't been verified yet. Review the photos, then approve them all in one go.
Loading…
WhatsApp Notifications
Configure which alerts get posted to your WhatsApp group, and when. Requires the WhatsApp bridge service to be running.
WhatsApp Accounts
Each account is one linked WhatsApp number (its own bridge process). Alerts use the Default account unless a department rule below, or the "Send from" picker on an alert, says otherwise.
Checking…
Department → WhatsApp Account
Use a different WhatsApp number for just a few departments. A rule applies to that department's own alert versions and to event messages about its people (leave, swaps, crimping, kiosk PIN). Pick "Only these alerts" to move just some processes. Priority: "Send from" on a department version → these rules → "Send from" on the alert's main card → Default account. The chosen number must be a member of the groups those alerts post to.
Loading…
Bridge Auto-Restart
The WhatsApp bridge can occasionally go stale over a long uptime — it still shows "Connected" but silently stops sending. Cycling the process fixes it without needing to re-scan the QR code. Optionally schedule this daily so it doesn't need to be caught manually.
:
(IST)
Send Queue & History
Every scheduled alert and instant message for the day — sent, failed, missed or still to come — with per-recipient results. Use Send now on any row to send it immediately. History is kept for the last 5 days. Failures caused by a number being disconnected auto-send when it reconnects.
Loading…
Disconnect Email Alert
WhatsApp can't notify about its own disconnection — this emails you the moment it goes down, so it's not discovered only when someone happens to check. Sends once per disconnection, not repeatedly.
Alert Recipients
Anyone or any group who should get tailgating alerts.
Add Recipient
For a group: paste its invite link and click Resolve — the Label and Target fill in automatically.
Recipients
Label
Target
Type
Active
Loading…
Loading…
Restarting Bridge…
Running: pm2 restart whatsapp-bridge …
Backup Configuration
Auto Backup
Automatically create backups
Create Backup
Create a full snapshot of all DutyPulse data (users, roster, leaves, swaps, settings).
Local backups stored in: /opt/duty-roaster/backups/
Restore from File
Restoring will overwrite all current data. A safety backup is automatically created before restore.
Backup History
Filename
Date
Type
Size
Actions
No backups yet
—
—
Click a day to assign shifts
—
Week
Actions:
Clipboard ready
Select a day above
Assign Shift
New Shift Type
Shift types belong to one department. Need the same timing in another department? Add it there separately rather than sharing this one.
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Red = Mandatory for that building | Unselected = Manageable
Add User
—
⭐ Duty Manager
Can approve leaves & swaps for a specific department — independent of their own role
For each sub-department, choose Fully Manage (can approve/reject leaves & swaps and edit the roster — and receives leave/swap email & WhatsApp alerts for that sub-department) or Read Only (can view it, but can't approve/edit, and won't get those alerts — they go to whichever DM fully manages that sub-department instead). Leave a sub-department on No Access to hide it from this DM entirely.
Read Only
This department has no sub-departments, so it's managed as a whole. Turn this on to make the DM view-only instead of fully managing it — and stop leave/swap alerts going to them.
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Special Duty Eligibility
Generate PINs by Department
By default, only employees without a PIN yet get one — this won't disturb PINs already handed out unless you check the box above.
New Department
New Sub Department
Add Building
Server room photo verifiers are managed in Other Tools → Server Room Photos → Manage Verifiers.
Bulk Import Buildings
One building per line: Name | Address | City — address and city are optional. Existing names are skipped automatically.
Paste Roaster
Shifts will be pasted starting from the 1st of the selected month
Add Holiday
India
United States
Bulk Import Holidays
Select which holidays to import. Edit names/dates as needed. Choose which departments each applies to.
Add Leave
Cover Request
↩ Rollback Saturday Leave Swap
This will reverse all roster and leave changes. Both employees will be notified by email.
Saturday Leave Swap
Loading...
— or —
These employees are working a non-mandatory shift on . They can directly cover your shift — no partner swap needed. On your assigned-off day you'll take their shift.
New Direct Swap Request
Upcoming Sunday & PH Duty — Swap Suggestions
Loading...
Date *
Shift on that day
Select a date first
Their Shift on this date
—
Bulk Swap
Swaps shifts directly for every day in the range — no accept or approve step, it happens immediately. Sundays are skipped automatically. Each day is checked against the same building, sub-department and eligibility rules as a normal swap request; a day that doesn't qualify is skipped, not blocked.
Date
Employee A
Employee B
Status
Manual Notify — Leave Approvals
Add phone numbers and/or emails that aren't tied to a user account — every time a leave is approved (however it's approved) in that department, they'll get a WhatsApp message or email saying who, the dates, and the reason. This fires only on leave approvals — never submissions, rejections, or anything else.
Loading…
Options
Copy shifts
Paste here
Clear clipboard
Mandatory Override
Set Optional for this person
Set Mandatory for this person
Danger
Delete shifts this day
✗ Reject Leave
↩ Rollback Leave
Swap Request Details
ℹ️ By accepting, your shift on that date will be exchanged with the requester's. The manager will then approve or reject.