ShiftMark — Team Attendance App
← Portfolio Mobile App

ShiftMark — Team Attendance App

ShiftMark is a React Native attendance app for field and office teams, with department filters, bulk marking and multi-site support on MySQL.

Overview

ShiftMark is a daily attendance and shift marking app that we designed and built as a product. It is meant for organisations whose people are spread across departments and locations, including field crews and office staff, where one supervisor may be answerable for a long list of names each morning.

The Challenge

Marking attendance for a handful of people is easy. Doing it for dozens across departments and several sites is where systems collapse into copied spreadsheets and end-of-day catch-up. The real problem is speed at scale: a supervisor must find the right group, record everyone in moments and fix mistakes without redoing the list, and the tool must keep each site's records apart.

Who Uses It and How

A site supervisor opens the app at the start of a shift, filters to their department, marks the group present, and then changes the few people who are absent. A field crew lead does the same from a vehicle or job site on a phone. An area manager switches between sites to check completeness. A payroll or HR user reads the resulting records at the end of a period, and an administrator maintains staff, departments and sites.

Our Approach

Individual taps do not scale, so the design leans on bulk actions. The supervisor filters the list by department, applies present, absent or clear to the whole selection, then adjusts only the exceptions.

Clear is included on purpose: a bulk action without an undo makes people hesitant and slow. Multi-site support shaped the data model from the start, so each site's attendance stays separate yet reachable from one app. We chose React Native for a single codebase, Node.js for services, and MySQL because attendance is naturally relational.

What We Built

The staff list can be filtered by department and displays each person's status for the day. Bulk buttons mark the filtered group, and single entries can still be edited. A site switcher selects the location being worked on. The Node.js backend validates each entry and stores it in MySQL, keeping a consistent history.

Architecture and Data

The relational structure is direct: sites contain departments, departments contain employees, and attendance records belong to an employee and a date, with a status. A uniqueness rule on employee and date prevents duplicate entries for the same day, so a repeated bulk action updates rather than doubles records. Bulk operations run as a single transaction, meaning that either the whole selection is saved or none of it is. Reports for a period can be produced with ordinary queries by department or site. Where field teams have weak reception, queuing entries on the device and syncing later is a natural extension.

Security, Privacy and Quality

Attendance data identifies employees and can affect pay, so supervisors should see only the sites and departments they are responsible for, and edits should leave an audit trail of who changed what. Sign-in and encrypted transport protect the records. Bulk actions call for careful testing: large selections, filters that change mid-action, partial failures, clear followed by re-marking, and users with access to several sites. We also test on lower-end phones used in the field.

Technology

MySQL is well suited to structured, queryable records, which is exactly what attendance reporting depends on. Node.js handles the API efficiently, and React Native delivers iOS and Android without doubling interface work.

Outcome

ShiftMark lets supervisors complete daily attendance quickly, even for large groups, and keeps separate sites organised. Because the records live in a structured database, the organisation gains a reliable base for summaries and reporting.

Frequently asked questions

How much does it cost to build a workforce attendance app?

The main drivers are the number of sites and roles, whether check-in needs GPS or biometrics, offline support for poor coverage, reporting and payroll export, and an admin console for managing staff. Bulk marking by supervisors is simpler than self-service check-in with verification.

Why use bulk marking instead of individual check-ins?

For large teams it is far faster for one supervisor to mark most people present and correct the exceptions. Self check-in is better when you need location proof or when staff work independently, though it brings more setup and verification concerns.

Should attendance data be stored in MySQL or a NoSQL database?

Attendance is structured, with people, departments, sites and dated records that relate to each other, so a relational database such as MySQL is a natural fit. It supports constraints and reporting queries well, though a NoSQL store can also work for smaller cases.

Highlights

  • Staff list filterable by department
  • Bulk present, absent and clear actions across a selection
  • Multi-site attendance tracking with separate records per site
  • Relational MySQL storage for reliable, queryable records
  • React Native app with a Node.js backend
All Projects

More Mobile App Projects

Hi there! 👋 Chat with us on WhatsApp for quick support.

Chat on WhatsApp