https://github.com/fwcd/iot-contact-tracer
Decentralized contact tracing system supporting IoT devices and smartphones
https://github.com/fwcd/iot-contact-tracer
contact-tracing covid-19 iot smartphone
Last synced: 4 months ago
JSON representation
Decentralized contact tracing system supporting IoT devices and smartphones
- Host: GitHub
- URL: https://github.com/fwcd/iot-contact-tracer
- Owner: fwcd
- License: mit
- Created: 2020-06-02T16:46:15.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-04T13:14:05.000Z (almost 6 years ago)
- Last Synced: 2026-02-15T16:40:09.285Z (4 months ago)
- Topics: contact-tracing, covid-19, iot, smartphone
- Language: Dart
- Homepage:
- Size: 410 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IoT Contact Tracer
A decentralized contact tracing system, inspired by [DP-3T](https://github.com/DP-3T/documents) and Apple/Google's [Exposure Notification](https://en.wikipedia.org/wiki/Exposure_Notification), featuring:
* `server`: A server storing exposed identifiers
* `cng-client`: An embedded client based on the [Contiki-NG](https://github.com/contiki-ng/contiki-ng) os
* `cng-adapter`: An adapter that mediates between the embedded client and the server
* `mobile-client`: A mobile client for Android/iOS, using Flutter

> Cooja Simulation of the Contiki-NG client nodes
## How it works
Each client node periodically generates pseudorandom 16-bit identifiers (referred to as "rolling identifiers") and distributes the most recent identifier at a fixed interval. There are two protocols involved here:
* The Contact Tracing Protocol
* Each message consists of an unframed, 16-bit integer representing an identifier
* Every node receiving such a message is expected to store it for exactly 14 days
* Supported transports:
* Contiki's Nullnet
* through the `cng-client`
* iBeacons
* using the last 2 bytes of the UUID for the payload
* through the `mobile-client`
* The REST/JSON API
* Currently supports two (public) endpoints:
* `/api/v1/exposures` (`GET`/`DELETE`)
* `/api/v1/exposures/:id` (`GET`/`PUT`/`DELETE`)
> Note that the different contact-tracing transports are not yet compatible.
## Continuous Deployment
This project is continuously deployed using GitHub Actions, GitHub Packages and a Kubernetes cluster hosted by Digitalocean.
