Project Info
Inspiration
Smart watches have centered around the health of their users for over a decade. Fitness apps have provided the ability to track calorie burning and heart rate for athletes, and those pursuing the ideal physique. At the other end of the spectrum, medical apps provide the ability for diabetes patients and the elderly to track and detect concerning medical phenomena. However, both these use cases miss the major demographic between them: middle class and blue collar workers. For construction workers, contractors, farmers, and millions of other manual laborers, the extreme highs and lows of biological tracking are not necessary, yet these apps are incapable of keeping them safe and healthy in their physically demanding workplaces. Clock In provides an answer.
What it does
The moment a worker "Clocks In" at the start of their day, they can open our app on their watch to start tracking them. Clock In tracks several health and safety risk factors throughout the work day, and detects any major hazards or accidents that could affect the user. It tracks personal factors, such as heart rate, blood oxygen level, physical trauma via an accelerometer, atrial fibrillation, and arrhythmia. It also tracks environmental factors, such as temperature and humidity. Typically, Clock In will invalidate and delete this data after a few hours, but the moment that a workplace hazard or accident strikes, Clock In takes a snapshot of the user's working conditions at the time of the incident and in the hours leading up to it. In this way, Clock In acts like a dash cam for the body, freezing the data surrounding an incident for later investigation. Clock In provides workers with the ability to record unsafe or inhumane working conditions, providing numerical, indisputable evidence in the case of mistreatment by their employer. In the case of a severe accident, this data can provide valuable proof of mistreatment by an employer, assisting the worker's case.
How we built it
Using Zepp's OS and the vast array of sensors on the Amazfit Smart-Watch, we monitor and protect against 3 kinds of trigger events. immediate triggers High-speed impact Loud Noise Self-Recorded Emergency short term triggers Abnormal Heart Rate Low VO2 max long term triggers Unsafe temperatures Unsafe altitudes
Challenges we ran into
Use of an unfamiliar API with mixed documentation and a foreign framework. Luckily, the Zepp dev team gave us 24-hour support, constantly helping with documentation and hardware issues.
Accomplishments we're proud of
Our technology will improve safety accountability in the workplace by ensuring all sides are held accountable for workplace mishaps. We are proud of the high-speed impact detection. A user can unnaturally jerk their arm and the watch immediately responds. We are also proud of our ability complete a project despite arriving late to the hackathon and having other obligations during the event.
What's next
Workplace injuries no more Suppose an employee was injured. There is little certainty that their medical bills will be We hope to implement preventative measures to stop workplace injuries before they happen. By notifying workers when they are susceptible to stroke, drowsiness, and immune system failure we can prevent a hospital visit that is both expensive to the employee and the employer. In the future, we hope to add more trackable factors to our product, such as air quality and elevation.
clock-in
Track working conditions
🏆Calhacks 10.0 Winner: Best Zepp Health App🏆
Analysis
View
Metric
- 6
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- JavaScriptIn code
- TypeScriptIn code
2 of 2 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
15 KB
Source files
11
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
y-dejong/clock-in
31 files · 71 KB · @ 20966a3
Structure
Application logic
11 files · 35%Domain rules, services and shared utilities.
Background jobs
1 file · 3%Work run outside a request: tasks, workers and schedules.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript99%
- Markdown1%
- TypeScript1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 2- @zeppos/zml
- +1 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Abnormal heart rate triggerVerified
Short term trigger for abnormal heart rate
Claimed on Devposthigh confidencepage/gt/record/index.page.js:44— hrCallback pushes to the trigger page with a hazard message when heart rate exceeds 200
Blood oxygen (SpO2) trackingVerified
Tracks blood oxygen level
Claimed on Devposthigh confidencepage/gt/record/index.page.js:59— spo2Callback reads BloodOxygen sensor and stores values in healthdata.spo2_history
Built on Zepp OS for Amazfit smartwatchVerified
Built using Zepp's OS and the Amazfit Smart-Watch sensor array
Claimed on Devposthigh confidenceapp.json— Zepp OS app manifest/config file presentpage/gt/record/index.page.js:5— Imports Accelerometer, BloodOxygen, HeartRate, Time from '@zos/sensor', the Zepp OS SDK
Clock In / start tracking on watch appVerified
Worker opens the app on their watch and clocks in to start tracking
Claimed on Devposthigh confidencepage/gt/home/index.page.js:27— Home page 'Clock In' button pushes to the record page, which starts sensor monitoring in onInitpage/gt/record/index.page.js:77— record page onInit starts spo2, accel, hr sensors
Heart rate trackingVerified
Tracks heart rate as a personal health factor
Claimed on Devposthigh confidencepage/gt/record/index.page.js:44— hrCallback reads HeartRate sensor via hr.getCurrent() and displays/stores it
Physical trauma / high-speed impact detection via accelerometerVerified
Detects physical trauma via accelerometer; proud of high-speed impact detection responding to unnatural arm jerks
Claimed on Devposthigh confidencepage/gt/record/index.page.js:27— accelCallback checks x/y/z acceleration against a 1800 threshold and pushes to the trigger page on collision/fall
Post-incident report generationVerified
Numerical, indisputable evidence report of working conditions surrounding an incident
Claimed on readmehigh confidencepage/gt/stop/index.page.js:16— generateReport computes average heart rate and blood oxygen from history arrays and appends the incident time/description into a text report shown on the stop page
Self-recorded emergency / manual hazard report buttonVerified
Immediate trigger for self-recorded emergency; worker can record unsafe or inhumane working conditions
Claimed on Devposthigh confidencepage/gt/record/index.page.js:141— trigger_button click_func manually pushes to the trigger/incident page with description 'Your reported a hazard.'
Atrial fibrillation / arrhythmia detectionCode-supported
Tracks atrial fibrillation and arrhythmia
Claimed on Devpostlow confidencepage/gt/record/index.page.js:99— hr.getAFibRecord() is called and logged every 5 seconds, but the result is never checked against a threshold or used to trigger any hazard/incident, and no arrhythmia-specific logic exists
Environmental temperature trackingCode-supported
Tracks environmental factors such as temperature
Claimed on Devpostmedium confidenceapp-side/index.js:1— fetchTemperature fetches outdoor weather temperature from a hardcoded lat/lon via OpenWeatherMap, not an on-device environmental sensorpage/gt/record/index.page.js:113— temperature is hardcoded to 65 initially and later overwritten via fetchData's GET_DATA request to app-side; no unsafe-temperature trigger logic exists despite it being listed as a 'long term trigger'
Incident snapshot / dash-cam style freezing of data around an incidentCode-supported
The moment a hazard strikes, Clock In takes a snapshot of working conditions at the time and in the hours leading up to it
Claimed on Devpostmedium confidencepage/gt/trigger/index.page.js:32— On trigger, an incident object (hour/minute/description) is attached to the accumulated healthdata object, which is later passed to the report/stop page, but there is no time-windowed 'hours leading up to it' logic or persistent storage; it's just the in-memory arrays collected since recording started
Data invalidation/deletion after a few hoursClaimed only
Clock In will invalidate and delete health/environmental data after a few hours unless an incident occurs
Claimed on Devposthigh confidenceHumidity trackingClaimed only
Tracks environmental factors such as humidity
Claimed on Devposthigh confidenceLoud noise detectionClaimed only
Immediate trigger for loud noise
Claimed on Devposthigh confidenceLow VO2 max detectionClaimed only
Short term trigger for low VO2 max
Claimed on Devposthigh confidenceUnsafe altitude detectionClaimed only
Long term trigger for unsafe altitudes
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.