Motivation

Being that the protocol of the client and server has been mainly defined, I would rather talk on my motivation for working on the project. I believe that governments that attempt to improve the quality of life of their citizens' through technology are on the right path of improving their society. Much in the Middle East, we have governments that have the ability to invest in better technology for their people, but relocate their funds elsewhere or are not motivated to push R&D. This leaves the citizens to innovate for themselves, and leaves good talent in the country to find opportunity elsewhere. An effort from a country that faces great hardship to find a solution to improve its people's lives, even if its in a small way, is admirable and gives hope that the future for the our Middle Eastern people will be brighter. Hopefully, projects like these will inspire more developers and engineers to create solutions for the numerous problems rampant in our countries. I enjoy the opportunity to participate in the effort, even if my project is last pick :)

What it does

An application that provides an interface for a user to select input to send to a server's phone number. The application handles prompting the user to send the input via SMS and encrypting the input before sending. It also listens for messages sent from the server phone number and creates a notification in the app for the user to read.

How we built it

The app is built using React Native framework. Currently working only for Android, as Android allows more read/write permissions for SMS. Various popular open source libraries have been used to enable the functionality of the app.

Challenges we ran into

Synchronization issues between local data storage and incoming messages. Understanding permissions to read/write messages for Android and iOS.

Accomplishments that we're proud of

Able to create a user friendly UI, able to allow the user to easily send a message, overall proud to have created an app using React Native

What we learned

I learned plenty of React Native components and how to better use state. I also gained a better understanding on how React Native can communicate with Java code and Objective-C to interact with each mobile platform. Also learned a little more on encryption.

What's next for Yemen PFM - Waleed Elsakka

Features that should be implemented to enhance the application:

  • An event emitter and listener written in Java to allow notifications coming in to update immediately, rather than setting an interval to check for messages every x seconds
    • Keystore for encryption key, for safe storage
    • iOS does not allow permission to read SMS messages, so would like to have a manual input feature in the app to allow users to copy and paste data sent back to be stored. Really only needed if data sent back from server is encrypted.
Share this project:

Updates