Hello, I am thinking of creating a new mobile app for which I need to choose a tech stack. Until now I have used the following for all my apps:
parse-server, mongodb on mlab.com, swift for iOS, JAVA for android, expressjs, angularjs, react, onesignal for push notifications, Facebook analytics for capturing events, mailgun for transactional emails, S3 for file hosting.
If you were to create a new app what would you build it with? I am ok to learn new tech to build the app.
EDIT: To give you more details about the app.
It's a marketplace app
Location based. Will have location tracking (Probably go with Hypertrack.com apis)
Payments integrated (will mostly go with Stripe)
Thanks
If my intention is to be effective and move as fast as I can - I would choose what I already know (and probably like).
It really depends on what the app does, but for the basics I would be using
React Native for the client
Firebase everything - Firestore & Firebase DB, Functions, Firebase storage, auth, crash detection, hosting, in-app messaging, push notifs, etc. I'm really happy with it and everything plays together really well.
If I needed additional backend capability that is not suited for functions, I would deploy a Node + Express backend on GAE.
Emails - quite happy with SendGrid
Analytics - my go-to is Mixpanel
I agree with this depending on what you want to do with the app. Especially if you were to build a game or media app - although react native has some promising libraries.
Using serverless and/or AWS app sync are also good alternatives for Firebase. Just keep in mind how to transfer your data when you start to scale in costs (although this is probably only if you are building a huge consumer app or banking app)
Amplitude is also a good substitute for Mixpanel.
I like this answer. (and the one below). It really depends on what the app does, and it depends on the team building it.
If you already have a team that can do both Swift+Java (or Kotlin) then sweet, do it. If not, then go with something simple like React Native so you can get your work done across both platforms faster.
I'm also a big fan of Firebase for starting out.
This comment has been voted down. Click to show.
I would take a look at Flutter (still in beta but seems to be growing in popularity rapidly). Can build for android and iOS with essentially one single codebase.
Thanks, flutter looks promising! I will explore it out.
Depending on how the marketplace app is going to be setup (are you looking to allow peer-to-peer payments?) than Stripe may not be what you need. I built a marketplace app recently similar to letgo and I initially thought Stripe would work out for peer-to-peer payments, long story short it didn't and I ended up implementing WePay instead. Just food for thought. As for the rest of my stack, I am using Firebase for pretty much everything (I would recommend checking out their Firestore db offering now, it offers querying capabilities and much more that weren't initially available with the Realtime Database). Also using Google App Engine with Node JS for Firebase Cloud Functions.
I would definitely build my app in Kotlin for Android or React Native if I really wanted to distribute on both platforms. I would use Firebase but after a bad experience with AppEngine I don't trust Google that much anymore and I'm not sure yet which other service to use.
Mixpanel is great for analytics.
Thanks for all the answers. Has anyone tried AWS mobile hub? Any pros/cons with it?
If I was starting today I would definitely start with whatever I was familiar with.
For me that means :
React Native for the client application
Either a MongoDB + Firebase Auth solution or a strictly MongoDB solution ( Authentication is hard to get right hence contemplating firebase)
A Node.js + Express server to handle everything else ( ie. landing page, mongoDB database requests, Email, etc)
Emails : Sendgrid API
That said, I have quite a few friends using Ionic for 99% of their apps and they're super happy with it! It's been described to me as a bootstrap for mobile apps with a few of backend-ish services built in but I'm unsure how accurate that is.
Another upside of Ionic is that you can build the app once and it will run on IOS, Android, and Web ( as a full PWA with web components and all the goodies that make web apps fast! )
Ultimately as long as you like your workflow and feel efficient I think you're on the right track! I dont know if learning a whole new stack is the necessarily the best option for anyone at this point; unless there are glaringly obvious reasons to do so ( ionic is on the fringe of that for me )