selbiguru / selbiServer

Sails server repo
0 stars 0 forks source link

Determine Backend Plan for Local Listings and Notifications #82

Closed MatthewDailey closed 7 years ago

MatthewDailey commented 7 years ago

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.

MatthewDailey commented 7 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

MatthewDailey commented 7 years ago

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

MatthewDailey commented 7 years ago

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

MatthewDailey commented 7 years ago

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.

MatthewDailey commented 7 years ago

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.

MatthewDailey commented 7 years ago

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

https://www.heroku.com/postgres

MatthewDailey commented 7 years ago

Based on security issues with payments we may need to investigate a backend which provides stronger authroization constraints.

MatthewDailey commented 7 years ago

Doing prototype of firebase backend which should support both local listings and notifications.