Git Product home page Git Product logo

sandysearch / sandy-search Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 179.82 MB

SandySearch - The Emergency Services Search and Reporting app - for the Global Call for Code Hackathon, 28 September 2018

Home Page: https://sandysearch.org

HTML 42.87% JavaScript 0.63% TypeScript 51.19% Dockerfile 1.76% SCSS 3.54%
hackathon call-for-code ibm-cloud angular4 ionic3 angelhack firebase geofire firebase-hosting android

sandy-search's Introduction

Sandy Search

Sandy Search (was Emergency Services - Search and Reporting) Mobile and Web App

License Platform Platform Platform Container Container JavaScript Style Guide

Entry for The Global Call for Code Hackathon, 28 September 2018

Note: This is a single person project (team of one).

The Idea

I was in Super Storm Sandy in 2012 in Connecticut, and was without power for 9 days. During the disaster, we had a very hard time discovering what services (gasoline, food, water, ice, power) were available and when and where. And if you have only a half a tank of gas you don't want to drive around looking for more, without knowing where to go.

The idea for this service is to use the power of crowdsourcing (think "Waze for Services, after a disaster"). It currently allows anyone (without a login) to search and report on services available in their area.

All users who do not log in to the app will be anonymous and not logged.

Verified users (pre-registered, think Red Cross, National Guard, and business owners/managers) can leave "verified" status updates, at no cost.

I think the service could be used as a branding expense for emergency services. The majority of the expense would be the manual verification of "verified" users, and minimal hosting of the back-end service.

How It Works

So this service uses geolocation and a standard crowdsourcing format to collect information from people in the field. And share it with anyone who needs it.

One of the driving forces in the design was simplicity. "2 clicks to get to the answer", exactly like the Palo Alto Police Chief said in this video

Nothing fancy but it will work, much like the way Zello was used after Hurricane Harvey in Houston: https://wgntv.com/2017/08/29/civilians-and-cajun-navy-bring-their-own-boats-to-rescue-harvey-victims/

How It Was Built

This mobile application was built with the sweet Ionic 3 Framework (Angular5/TypeScript/CSS/HTML5) and uses the Google FireBase services for authentication, realtime database and cloud hosting of the web app (currently on a free spark plan).

Currently generating Android app and will provide iOS app from same code base.

Maps and geocoding is pulled from Google APIs. I plan to do reverse geocoding from Google too.

Admin user interface is all Node and Angular. And hosted in a Docker container (stored in the IBM Cloud Container Registry) in Kubernetes cluster on the IBM Cloud Kubernetes Service. Need to add reports and maps to admin user interface.

Want to use IBM Watson services to post-process all user request data and create heatmaps for the optimal locations for services and food distribution.

All built with a Vim editor and a cmd window (and git).

What I Learned from this Hackathon

  • Angular 4 and Ionic 3 and typescript (I had build the previous prototype in Angular.JS and Ionic 1)
  • Google Firebase Realtime Database with Observables
  • GeoFire for geolocation
  • Angular 2 and NodeJs
  • Dockerizing an Angular 2 / NodeJs application
  • Autobuilding a Docker image from a GitHub checkin with Docker Cloud
  • Storing and updating Docker images in the IBM Cloud Container Registery
  • Running Apps in Kubernetes in the IBM Cloud Kubernetes Service (on the free tier) with NodePort networking
  • Fixing vulnerabilities discovered by the IBM Cloud Container Registry Vulnerability Advisor
  • Upgraded running Docker containers with new images
  • Upgraded running Docker containers in Kubernetes in the IBM Cloud Kubernetes Service with new images

Next Steps for SandySearch

  • Add reports to the Admin user interface
  • Internationalization
  • IBM Watson ML to predict where services will be needed based on past experience

See Also

The Sandy Search Admin User Interface on GitHub: https://github.com/sandysearch/sandy-search-admin

Live Demos

Sandy Search Mobile/Web app

Live web app version of SandyService can be found here: https://plu.sh/sandys

Live SandyService web app hosted on IBM Cloud Kubernetes Service can be found here: http://173.193.99.198:32705

Note: to run this in a chrome browser (and have geolocation work on an insecure URL) use the following:

chrome.exe --unsafely-treat-insecure-origin-as-secure="http://173.193.99.198:32705"

And the Android APK is available on GitHub here: https://github.com/sandysearch/sandy-search/releases/tag/0.0.7

And on Google Play here: https://play.google.com/store/apps/details?id=io.ionic.sandysearch

SandySearch is now on the Apple App Store too: https://itunes.apple.com/us/app/sandysearch/id1438425201?ls=1&mt=8

The original GitHub repository for the Ionic v1 web app is here: https://github.com/sandysearch/essr-aoc

Sandy Search Admin User Interface

Live web app version of SandyServiceAdmin (v0.0.4) can be found here: https://plu.sh/sandyadmin2

Live web app (v0.0.2) running on IBM Cloud Kubernetes Service can be found here: http://173.193.99.198:30471

Live web app (v0.0.3) running on IBM Cloud Kubernetes Service can be found here: http://173.193.99.198:30433

Live web app (v0.0.4) running on IBM Cloud Kubernetes Service can be found here: http://173.193.99.198:30577

Docker Images

Sandy Search Docker image on Docker Cloud: mkobar/sandy-search [private]

Sandy Search Docker image on IBM Cloud Container Registry: registry.ng.bluemix.net/call4code/sandysearch

Sandy Search Admin Docker image on Docker Cloud: mkobar/sandysearchadmin

Sandy Search Admin Docker image on IBM Cloud Container Registry: registry.ng.bluemix.net/call4code/sandysearchadmin

Videos Demos

SandySearch Submission Video - First attempt - https://youtu.be/83FHRSM3CQM

SandySearch Submission Video - Second attempt - https://youtu.be/Vj61wD86HyA

SandySearch Submission Video - Third attempt - https://youtu.be/kELeIpW1EdA

SandySearch Admin User Interface Demo - https://youtu.be/hGE8ubJQGMg

Things left to do:

  • store service location data in firebase
  • add a map view (with Google Maps or OpenStreetMaps)
  • add the account request function (and screen) - and force to validate with email?
  • add more logging
  • add in the real distance calculations (from stree address). There are seveal free services for this but they may be rate limited.
  • add dupe reporting option
  • add initial tutorial slides
  • fix km to miles
  • add an admin interface for entry and user management
  • rate limit votes and disputed to 1 an hour with local storage
  • add spinner for list and map
  • change markers by serviceType
  • iOS build and App Store upload - just need my Mac
  • Dockerizing an Ionic 3 app
  • Google Play Store upload
  • host admin interface on GitHub
  • host admin user interface on IBM Cloud (Docker and Kubernetes)
  • add reports (timeline maps by createDate, updateDate and votes)
  • export usage data in csv format
  • add IBM Watson ML for heatmap generation
  • process usage with IBM Watson to predict optimal locations for future services
  • need a video of both app usage and reporting
  • need better logo ;^}

Please do contact me directly if you can use or add to this project.

Thanks to Dick Tator of Fayetteville, NC, USA for the original logo.

License

Copyright @ 2018-2020 RKO Security

SandySearch Privacy Policy

sandy-search's People

Contributors

dependabot[bot] avatar mkobar avatar snyk-bot avatar

Stargazers

 avatar

Watchers

 avatar  avatar

sandy-search's Issues

Add Group support

add group table
add group to users
add limited role values to user.role

Roles may be:

  • user
  • owner
  • admin

fix intro text size for iPhone 5, iPad and browser

intro text size is good for:

  • iPhone 6 to 8, 6 plus to 8 plus, iPhone X
  • Samsung 6, Galaxy S5, Pixel 2, Pixel 2 XL
  • iPad (except for last screen)
  • iPad Pro (excerpt for last screen)
  • browser (except for last screen)

Looks bad on iPhone 5/SE as test is too long and does not scroll.

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.