Project Info
This project did not submit a demo video on Devpost.
Inspiration
As female engineering students in a male-dominated field, we wanted to implement features that could often be overlooked. This includes safety features specifically for when college students feel unsafe walking alone at night.
What it does
Our app aims to increase safety, specifically for individuals walking alone at night. We designed and implemented an SOS button, automatic rerouting to open locations, real-time tracking, and vibration and sound alarms.
How we built it
Zepp Health is the company behind the innovative Amazfit Balance watch. We built this widget with the help of Zeus CLI, Google Places API, and libraries written by talented Zepp engineers. We have developed cutting-edge technology that enhances safety and provides safety for late-night walkers.
Challenges we ran into
There were many challenges when creating this widget. We had challenges when downloading and setting up the simulator used for testing. This was the first challenge when getting started with coding and debugging our widget. Another main challenge we encountered was connecting backend data and the use of APIs to the frontend application.
Accomplishments we're proud of
Through this project, we accomplished many components of this widget. These accomplishments included enhanced safety by utilizing the advanced features by receiving immediate help when needed with just a press of the SOS button. We also created automatic rerouting to the nearest open place where our app reroutes users to the closest open areas for added security.
What we learned
We learned how to work with Zepp's Developer Interfaces and different APIs to create various UI elements and fetch sensor data. Using this information, we tied together our system to create a functional app on Amazfit's Balance Watch.
What's next
Future implementations include sending the live-fetched location to local authorities and directing the user to the calculated safe spot. A back feature to the SOS alert should also be implemented.
Amazfit Emergency Safety Widget
Amazfit Emergency Safety Widget is a project designed to provide safety and peace of mind, not only for women but for anyone who needs to travel home at night. Leveraging the power of the Zepp OS platform, this project combines hardware and software to create a reliable companion for your nightly journeys.
Features
- Zeus CLI: Built using the Zeus CLI for Zepp OS, this project integrates seamlessly with your Zepp Balance watch.
- Real-time Navigation: Utilizes HTTP requests and the Google Places API to help users find the nearest open and safe locations they can visit in their vicinity.
- Sound Speaker: Includes a built-in sound speaker that can be used to play soothing sounds, emergency alerts, or even act as a personal alarm.
- Customizable for All: While designed with safety in mind, the Amazfit Emergency Safety Widget Companion is not limited to any specific gender or group. It's open for anyone who values safety during nighttime travels.
How It Works
- The user activates the Amazfit Emergency Safety Widget on their Zepp Balance watch.
- The project makes HTTP requests to the Google Places API to identify nearby open and safe locations such as restaurants, cafes, or gas stations.
- It presents the user with a list of these nearby locations along with navigation directions.
- The sound speaker can be used to play soothing sounds during the journey or act as a personal alarm if needed.
Getting Started
To get started with the Amazfit Emergency Safety Widget, follow these steps:
- Ensure you have the Zepp Balance watch.
- Clone this repository to your development environment.
- Install the necessary dependencies using the Zeus CLI.
- Configure your Google Places API key in the project settings.
- Build and deploy the project to your Zepp Balance watch.
- Activate the Amazfit Emergency Safety Widget on your watch when needed.
Contributors
- Connie Ly
- Michelle Duong
- Katherine Yee
License
(TBA) This project is licensed under the [License Name] - see the LICENSE.md file for details.
Acknowledgments
We would like to express our gratitude to the open-source community and the creators of Zepp OS, Zeus CLI, and the Google Places API for making this project possible as well countless mentors that helped us along the way.
Analysis
View
Metric
- 3
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
12 KB
Source files
9
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
conniely04/safetywidget-zepp-calhacks
19 files · 950 KB · @ 35cd9ee
Structure
Application logic
9 files · 47%Domain rules, services and shared utilities.
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
- JavaScript80%
- Markdown19%
- 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
Built with Zeus CLI for Zepp OSVerified
Project built and structured using the Zeus CLI for Zepp OS, integrating with the Amazfit Balance watch
Claimed on readmehigh confidenceapp.json:1— configVersion v3 app.json with targets/platforms/module structure is the standard Zeus CLI/Zepp OS project scaffoldapp-side/index.js:1— uses @zeppos/zml BaseSideService, a Zepp OS app-side service pattern generated by Zeus CLI projects
Real-time location tracking (GPS)Verified
Real-time tracking of the user's location
Claimed on Devposthigh confidencepage/index.js:38— Geolocation sensor is started and geolocation.onChange(callback) continuously updates lattext/lontext from getLatitude()/getLongitude()
SOS buttonVerified
A press-activated SOS button that sounds an alarm and triggers safety actions
Claimed on Devposthigh confidencepage/index.js:75— widget.BUTTON with text 'SOS' whose click_func triggers vibration, plays a siren, shows a map image, and calls fetchData
Sound alarm / personal alarm speakerVerified
Built-in sound speaker used as a personal alarm / emergency siren
Claimed on readmehigh confidencepage/index.js:97— player.setSource plays assets/raw/SOS_Siren.mp3 and player.prepare()/start() are wired via PREPARE event listenerassets/raw/SOS_Siren.mp3— the siren audio asset actually exists in the repo
Vibration alarmVerified
Vibration alarms for safety alerts
Claimed on Devposthigh confidencepage/index.js:100— vibrator.start() is called inside the SOS button click handler; Vibrator is instantiated from @zos/sensor
AutoGUI library usageCode-supported
Built with the help of libraries written by Zepp engineers (implies AutoGUI usage for UI)
Claimed on Devpostlow confidencepage/index.js:34— AutoGUI is imported and instantiated (const gui = new AutoGUI()) but the gui instance is never subsequently called to build any UI element
Automatic rerouting to nearest open location via Google Places APICode-supported
Automatic rerouting/navigation to the nearest open and safe location using the Google Places API
Claimed on readmemedium confidenceapp-side/index.js:48— fetchData() builds a Google Places nearbysearch API URL and calls fetch(), then computes the closest open place by comparing lat/lon differencesapp-side/index.js:49— the actual request URL uses hardcoded coordinates (37.7749,-122.4194) instead of the passed-in lat/lon, and the API key is hardcoded/exposed, so the live rerouting-to-user's-real-location path is not fully wired end-to-end
Map / navigation displayCode-supported
Presents the user with directions/navigation to nearby safe locations
Claimed on readmelow confidencepage/index.js:103— an IMG widget displays a static bundled image (raw/mapImage2.png) rather than a dynamically generated map or turn-by-turn navigation
Cancel/back feature for SOS alertClaimed only
Future implementation: a back feature to cancel the SOS alert
Claimed on Devposthigh confidenceDirecting user to calculated safe spot / turn-by-turn direction to safe spotClaimed only
Future implementation: directing the user to the calculated safe spot
Claimed on Devposthigh confidenceSend live location to local authoritiesClaimed only
Future implementation: sending the live-fetched location to local authorities
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.