Git Product home page Git Product logo

telemesh's Introduction

Telemesh

Build Status Coverage Status Lint tool: Lin

A mesh network based off-grid messaging application supported by blockchain technology.

Project Overview

Background

Globally, 68.5 million people are forcibly displaced at the time of writing this readme, and over 25.4 million are refugees. In Bangladesh, there are over 650,000 Rohingya refugees who have fled violence, mass killings and sexual abuse from neighboring Myanmar.2 Of those, nearly 60% are children, many of whom are orphaned Distributing information about humanitarian services to large numbers of refugees poses significant challenges for NGOs like UNICEF. While 40% of rural refugee households have smartphones, many are unconnected due to a lack of or poor telecommunications infrastructure or unaffordable cellular costs. The UNHCR believes that connecting refugees would ultimately transform humanitarian operations.

Project's Goal

We intend to make use of mesh network. It allows for multi-hop, peer-to-peer connectivity directly between smartphones, instead of relying on internet and cell networks. Blockchain is used in the network to uniquely identify each node (smartphone) providing a trust layer to users without centralized signup. It also provides the infrastructure for users to connect multiple separate meshes by sharing an internet connection in exchange for ERC20 tokens. This offers an entirely new and unique method of information distribution not possible with existing technology.

For UNICEF, we plan to develop an open source messaging app to be tested in refugee camps, specifically, Cox’s Bazar, Bangladesh. A broadcast channel would allow UNICEF to push vital information to smartphone users about services like vaccination clinics, maternity clinics and schools. The app would also allow refugees to message one another even if they do not have a SIM card or cellular data.

Feature list

  • One to one messaging
  • Message broadcast, multicast
  • App sharing
  • More to come ...

Project's Structure

    .
    |-- app
    |-- src
    |-- main
        |-- com.w3engineers.unicef
            |-- telemesh
                |-- data #local database, file, shared preferences etc.
                |-- ui #ui components
            |-- util
                |-- helper #Generic tasks like TimeUtil, NetworkUtil etc.
                |-- lib #third party library, component etc.
            |-- Application.java #Android Application class    
    |-- viper #RightMesh wrapper module
    |-- build.gradle
    |-- settings.gradle
    |-- gradle.properties
  • Alias N/A

  • Commands N/A

Prerequisites

  • Mesh networking technology.
  • Android device with Wifi, WifiDirect, Bluetooth or Bluetooth Low Energy (BLE) support.

Project Dependencies

  • Strom: It is just a wrapper on native android to reduce some repeated works. This has been used as a dependency into this project.

  • Viper: This is also a wrapper of a mesh library and has been used as a dependency.

Development environments

We are using the below environment for android mobile app development:

  • Minimum API: 16 (Jelly Bean - 4.1.x)
  • Java: 1.8.0_121
  • Android Studio: 3.3 Stable
  • Machine Used: Linux/Ubuntu, MacOS 10.14: Mojave (Liberty)

How to get started

Step 1: Clone repository: Navigate to directory where you want to keep source code. Open command prompt. Execute below command:

git clone https://github.com/w3-engineers/telemesh.git

Step 2: Prepare gradle.properties file: We can use global gradle.properties file for RM keys. In general it could be found in the following location:

Linux/Ubuntu: home/<usr>/.gradle

Windows: C:/Users<usr>/.gradle/gradle.properties.

MAC: ~/Users/<usr>/.gradle (By default this file is hidden in Mac. Press Command+Shift+. to see the hidden files).

In case if the file is not there then we can create one by the name: gradle.properties. The content of the file is username, password, and the App key:

User name key is: rightmesh_build_username

User password is: rightmesh_build_password

App key is: org.w3.telemesh

Step 3: Sync and build: If everything is ok then sync and build should work as it should be. If not please recheck step 1 and 2.

Step 4: Test on device: [TBD]

Test Coverage

  • This repo is configured with Travis and coverall. Every merge with master produced a test coverage report. Latest coverage report is available here. This badge here shows coverage status.

  • To generate report locally you should go to project's root directory, then execute below command:

    gradlew coveralls

NOTE: You must have a connected device or emulator as it runs instrumentation tests. You will find the coverage report at telemesh/app/build/reports/coverage

User Interface (UI)

Project Architecture

For the project architecture and sequence diagram please check this link.

License

Apache License 2.0

telemesh's People

Contributors

mimosaha avatar w3-anjan avatar w3-azim avatar w3-aziz avatar w3-ekram avatar w3-engineers avatar w3-mimo avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.