Multi-Project Firebase powered App

firebase

#1

Hello,

I’m using nativescript-plugin-firebase with Facebook Login, Google Login and Custom Login.
There is a lot of setup involved with projects like this. (Key fingerprints, certificates for JWT and the list goes on…)

Now I really would like to have a development and a production environment for further development and product maintenance.
Can anyone share his/her experience? Some kind of workflow / architecture on how to do this?

Of course I could manually change all configuration on the dev app builds.
Of course I could spin up a clone of my Elastic Beanstalk environment, change some env config and shut everything down once I’m done.
But all that stuff is so tedious and time consuming…

I’ve seen some suggestions for native development that were all about adding build phases etc. I guess this might be possible with NativeScript hooks as well.

Maybe there are some really good options that I haven’t thought of yet.

Looking forward hearing from you what you did. No worries about the lack of information I’ve provided. I’m just looking for some inspiration / ideas. Not a concrete solution.

Thank you in advance and best regards,

Martin


#2

So here’s what I’ve ended up with:

  1. Add multiple URL schemas for both environments to the app. (Google Login, Firebase Dyanmic Links) – It is not a problem to keep them there in parallel.
  2. Use a single Facebook App for Dev + Production. (Reducing the files that need to be changed to just 2: google-services.json and GoogleService-Info.plist)
  3. Introduce a new Git Branching Model: Basically GitLab Flow with pre-production and production branches. On the pre-production branch I use the Firebase Service Files for production and bump the version number. Other changes are not allowed here. On the production branch no changes are allowed at all. Just merging in from pre-production. Once I merge master into pre-production I bump the version number and cherry-pick this commit back to master. This way I only have to deal with merge conflicts from master → pre-production when changing something about the Firebase Services Files.
  4. Of course when changing Git Branches I have to do a tns platform clean for all my platforms but I think when going into production that’s not the worst idea anyways.
  5. The pre-production branch is used for Apple Testflight and Google Internal Test Builds.
  6. The production branch always has the latest production version of course.
  7. When it comes to the Elastic Beanstalk Environment: I run it locally for development builds and change the API origin using Firebase Remote Config on my Firebase Development Project.

Maybe it is helpful for some of you. If you have another idea or maybe could think of some improvements for the above flow please let me know.