A powerful tool for personal and community safety.
joinsafe.me »
Available for
iOS & Android
~ Links will be added once a release is available. ~
NOTE: Safe is under active development, most of the listed features are still in testing and could be altered.
With the press of a button, begin to record your front camera, upload the footage to the cloud in real-time, track your exact location, notify your emergency contacts through SMS and Whatsapp, and alert 911 if necessary. Emergency contacts (and 911) will receive a video and location livestream of the incident while also getting access to key information such as realtime updates of your battery life.
From the start, Safe was designed for the fragile situations where one's safety is the first, and most critical priority. For students, it acts as a necessary tool for alerting authorities of your wearabouts during a school shooting. For people of color, it's a discrete and all-encompassing documentation tool in the case of a traffic stop. Broadly, it seeks to expose injustice in any form it may present itself.
On a more personal note, I {Mark Music} have been devastated by the news of countless school shootings and instances of police brutality in the US. As a 18-year-old latino, gun violence (through school shootings) and other forms of physical discrimination pose a threat to me, my friends, and my family. Safe was built no one has to succumb to the status quo.
An SMCE (multithreaded compression engine for sharded databases) is an agorithm designed to take realtime camera footage, cut it into digestable clips, and compress said clips across a variety of threads. These clips (shards) are then distributed across multiple storage layers; making it harder for a possible attacker to obtain a complete file. By processing the footage concurrently, the video is compressed, transcoded, and uploaded as the camera records in realtime. To compose the shards together, a map is stored with and ordered list of the paths to each shard. Concurrency also enables for smartphone CPUs to be used optimally by spawning isolates based on the thread availability. This enables for faster compression times in more powerful smartphones.
NOTE: The compression engine does not utilize FFMPEG as it is in many ways slow, bloated, and the GNU license can become an obstacle for commercial apps.
The SMCE
algorithm was inspired by this Stanford paper titled "Accelerator Multi-Threading" (2012) by Nic McDonald, Subhasis Das, and Milad Mohammadi.
The Safe application houses most of its actual code in the lib
directory. This includes all of the Dart / Flutter code such as screens and utils. The iOS (ios/Runner
) and Android (android/app
) folders both house the native components of the compression algorithm. These are connected to the flutter code through a bridge implemented in the lib
folder.
Anything outside of the lib
, ios
, and android
directory is generic files that come with every program, such as pubspec.yaml
, .gitignore
, the README.md
, etc.
The Safe folder structure can be visualized in the following way:
| -lib
| | -models
| | -providers
| | -services
| | -core
| | -state
| | -screens
| | -utils
| | -widgets
| | -main.dart
| -pubspec.yaml
| -.gitignore
| -.firebaserc
| -ios
| -android
| -LICENSE
| -README.md
| -other files
Any help or contributions with Safe would be highly appreciated ❤️. Feel free to help out and contribute to the future of personal and community safety.
Please refer to the contributing guide for how to install and run Safe from sources.
Have a question regarding any of these topics? Reach out to me at [email protected] or join our Discord Server and ask questions there 🙂
Contributor | Commits | Tags |
---|---|---|
@markmusic27 | 715 | Creator, Lead Maintainer |