Closed MatthewDailey closed 8 years ago
Thoughts about Notifications
To do this we need a push notification service (apple is APNS, androind uses GCM). Ideally there is a nice wrapper we can interact with.
Possible options:
AWS SNS https://docs.aws.amazon.com/sns/latest/dg/mobile-push-pseudo.html https://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html cost: https://aws.amazon.com/sns/pricing/
Titanium.Network http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Network-method-registerForPushNotifications cost: https://www.appcelerator.com/pricing/
Google FCM http://stackoverflow.com/questions/37618056/has-anyone-used-firebase-cloud-messaging-in-appcelerator
Apparently you need a Apple Developer Account to test stuff, I purchased one for $108. Need to check in in 48 hrs about key. https://developer.apple.com/account/#/enrollment/X9QDK754U3
For text search and local search, Algolia makes a lot of sense. Easy to keep the node + db architecture and add on search.
It has node and react libraries (plus a bunch of other languages). Docs seems good.
https://www.algolia.com/doc/guides/geo-search/geo-search-overview
Another option if we were to switch frontend frameworks would be to use Ionic. Big upside there is we can hot code deploy and roll back from prod so we don't need to repeatedly get an app approved in the appstore.
It's also a popular framework and uses angular for UI components.
https://www.airpair.com/ionic-framework/posts/push-notifications-using-ionic-framework
For push notifications we basically either need to:
A) Use a new front end. or B) Change backends to use Appcelerator's ArrowDB.
To use ArrowDB notifications we need to store information about user and phone identities in ArrowDB. It's silly to keep 2 dbs, both with understandings of user login and identity. ArrowDB has a concept of "Friends" which would be pretty useful.
http://docs.appcelerator.com/arrowdb/latest/#!/api/PushNotifications-method-notify http://docs.appcelerator.com/platform/latest/#!/guide/Sending_and_Scheduling_Push_Notifications
This decision should wait until I have a better understanding of the code base and architecture since there may be other trade offs we need to consider. As of now I'm leaning towards keeping the node server + db + algolia as a secondary index (+ twilio, stripe, sendblue 😲 ) since those are the really hard tricky bits and then moving to ionic or react native.
The biggest pending questions is user auth. It should work via passport but since we don't know for sure, we need to verify.
Perhaps another option for notifications is urban airship. However, it appears there used to be an appcelerator module that has since been discontinued :/ https://marketplace.appcelerator.com/apps/4984#!overview
https://www.urbanairship.com/products/mobile-engagement/pricing
It would work with react native tho.
Also on the backend note that heroku and sails both support postgres. This would help with unifying and stabilizing the backend.
https://medium.com/@MandeepSinghGul/sails-js-interfacing-with-postgresql-945039492ea0#.on4xn7fza
Based on security issues with payments we may need to investigate a backend which provides stronger authroization constraints.
Doing prototype of firebase backend which should support both local listings and notifications.
We need to figure out how to implement local listings (via latlon or heirarchical or something else and on what datastore).
Also need to decide on backend for push notifications.