Skip to content

Commit add6066

Browse files
authored
Update README.md
1 parent b97a446 commit add6066

File tree

1 file changed

+61
-10
lines changed

1 file changed

+61
-10
lines changed

README.md

+61-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,67 @@
1-
# chat
1+
# Beacon
22

3-
Chat app
3+
![](https://challengepost-s3-challengepost.netdna-ssl.com/photos/production/software_photos/001/363/639/datas/original.png)
44

5-
## Getting Started
5+
https://devpost.com/software/beacon-jybrxm
66

7-
This project is a starting point for a Flutter application.
7+
## Inspiration
88

9-
A few resources to get you started if this is your first Flutter project:
9+
During emergencies and natural disasters, internet and phone connectivity can often be lost, leaving people unable to contact loved ones or call for assistance.
1010

11-
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12-
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
11+
Our goal was to make a messaging app that allows you to get messages to loved ones even when internet connectivity is completely lost, and broadcast requests for help to those in the vicinity (such as emergency services).
12+
13+
By its decentralized, encrypted nature, this is also a tool for protecting privacy and allow communication in countries where the internet is severely limited or monitored.
14+
15+
## What it does
16+
17+
Beacon is a fully-fledged messaging app with **zero servers**, that:
18+
- doesn't need an internet connection, even for setup
19+
- builds its own mesh network of nearby devices through Bluetooth, and communicates by routing messages through this network
20+
- Lets you send messages to anyone in the network, even if they're not nearby
21+
- Encrypts messages with **end-to-end encryption**
22+
- Allows you to broadcast messages for help to
23+
everyone nearby
24+
- Allows you to send locations. This is particularly useful in disaster scenarios.
25+
- Allows you to send photos (unstable, and very limited)
26+
27+
## How we built it
28+
29+
We use Bluetooth & ultrasound to detect nearby devices running Beacon up to 100m away and connect to them. When devices join the network, anyone can send them a message
30+
31+
### Physical Mesh Layer
32+
33+
The physical mesh layer uses Bluetooth and ultrasound to detect nearby devices. Each device
34+
has two services: advertising and discovery. We use the services to establish the mesh network.
35+
36+
One of the challenges we ran into was the limit on the number of devices connected to a given device, we discovered that a device may approximately connect to at *most* 4 other devices, otherwise the connections are no-longer stable. To address this we designed a custom algorithm to optimize mesh connectivity while maintaining network stability.
37+
38+
### Message Layer
39+
40+
The message layer uses the physical mesh layer, forming a custom network stack, to implement
41+
a simple gossip protocol that ensures messages reach their intended recipient. Acknowledgment responses allow users to see whether messages have been delivered. Buffers are used to ensure that network partitions don't necessarily prevent messages from being sent (once the partition is healed).
42+
43+
### Encryption Layer
44+
45+
The encryption layer uses the message layer to provide end-to-end RSA 2048 encryption within the application. Ensuring that users may privately message each other without privacy concerns.
46+
Key sharing is performed manually, using QR codes.
47+
48+
49+
## Challenges we ran into
50+
51+
We found out that Bluetooth can be very unstable when connecting to multiple devices, so a lot of our time was spent into trying to make this more resilient.
52+
53+
## Accomplishments that we're proud of
54+
55+
- Designing a custom protocol for maximizing the stability of a Bluetooth mesh network while maximizing connectivity and reach.
56+
- Building our own routing protocol to send messages between devices that can't see each other
57+
- Implementing our own end-to-end encryption layer
58+
59+
## What we learned
60+
61+
Most of us had never used Flutter, and none of us had worked with Bluetooth or networking before, making this a steep learning curve! :)
62+
63+
## What's next for Beacon
64+
65+
- Field testing with a larger mesh network
66+
- Improving our protocols
1367

14-
For help getting started with Flutter, view our
15-
[online documentation](https://flutter.dev/docs), which offers tutorials,
16-
samples, guidance on mobile development, and a full API reference.

0 commit comments

Comments
 (0)