Framework Advice For a New Consumer Based Product Similar to eazydiner



  • We are looking to build a new New Consumer Based Product Similar to eazydiner. We need some advice for it.

    We are going to go with AngularJs(Other suggestions also welcome) and "some" back-end framework.

    We have a team which has worked with the Mean Stack/ Node.js for small projects but found that we have to write almost everything (no auto generation). We have dabbled with Rails, Django and Google App Engine(webapp2) before.

    We wanted advice for back-end framework. Main things we are looking into are:

    • Rails style code generation (scaffolding).
    • Django style semi magic where admin forms can be derived from the fields in your table/document schema.
    • generating an API for these fields in the database.

    [1]Also, could Parse or some similar service serve all our back-end needs?[2] Is there some plug-play service which helps create user auth for different providers both at the back-end and front-end (browser, native-apps)?

    [3]Will any PAAS like Google App Engine (maybe Parse) be useful to bootstrap, since it won't require managing any infra, and App Engine, etc also scale automatically along DB, indexing and load.

    Also, we would like mobile presence too.[4] So, what libraries should we use to make sure that we are mobile-ready for day one? [5] Should we develop in bootstrap/material-design and use that as a web-app on phones, or develop an app in ionic and use that in the browser?

    What do you guys think? I have added numbers in brackets to make it easy for you to pin-point.



  • I would definitely consider using a PaaS to start with. You may have to abandon it as you scale in 18-24 months, but useful to start with.



    1. Using Parse is not a bad option, especially since there's zero setup required. And with things like Cloud Code, you can easily add a lot of backend logic for your data models. But at the same time, Parse can prove rather expensive if you scale, and honestly, building a basic backend in Node.js is a better path, in the long run. You then have full control over your data and your models, and setting up infrastructure is relatively easy too - node itself is quite scalable, with minimal effort. You can then use provisioning tools like Ansible, or even just go for Docker containers to minimize your infrastructure headaches.

    2. I'm not quite sure I understand this part. Are you referring to social authentication? Parse has helpers for that. For node, there's a great npm package called Passport with helpers for a lot of OAuth providers. Also, if you go for a framework like Ionic(see points 4 and 5 below), which runs on Cordova, adding social auth to your app is a breeze. But if I've misunderstood this question of yours, I might be wrong - do let me know.

    3. I'm not entirely sure about Google App Engine because at the end of the day, it's a specialized framework - if you're a Python person, you have to write your code in webapp2, which shoehorns you. Parse, on the other hand, is Javascript - it's a universal language. And since you can easily run Express apps on the Parse cloud, it works out better, since Express is the most well-known framework out there, for node.js. And if you don't go for Parse and instead, write a backend in Express yourself - well, again. Universal language.

    4. I'm a huge, huge proponent for the mobile web, and I believe that the mobile web can easily accomplish what mobile apps can. At the same time, I fervently believe that frameworks like Ionic do bring out the best when it comes to hybrid apps. My suggestion - create a mobile-first web app using frameworks like Bootstrap - you can even check out Skeleton which is a simpler and minimalistic framework for mobile-ready frontends.

    5. Let's look at a sample architecture, for your platform. Build out your web app and your backend in Node, and make sure you've got RESTful routes that you can expose for mobile apps, and use Ionic to build apps that mirror your web app's UI, and consume those RESTful routes. That way, you get the best of the mobile world - including push notifications - and at the same time, your tech stack uses the same language at the frontend and the backend - which happens to be Javascript. And tomorrow, if you start looking for people to populate a team, Javascript is a ubiquitous skill.

    Do let us know how it comes along! :D



  • One point, that I probably didn't address - if you're looking for scaffolding with node.js, the kind you've got in Django and Rails - look no further. http://sailsjs.org/.

    I've personally used it. Great framework.



  • You may want to consider the SpringBoot framework, if your team is comfortable. It has default integrations for lot of things, plus there is customisation possibility based on Spring frameworks.

    There is a great code generator based on Yoeman ( JHipster https://jhipster.github.io ) that creates pages and templates for a AngularJS and SpringBoot based application )



  • @maakhansingh Looks like a good suggestion, but we have negligible experience of Java, apart from that I am a Python/Node/Rails fan and Java has never resonated with me.



  • @IamSB Which PAAS would you recommend? We have experience with Google App Engine.



  • @vishal If you have experience with GAE, go for it. +1 to springboot mentioned above.



  • @vishal If you already have experience with a certain stack, you would do fine using that.



  • @rudimk
    [1] Parse's free tier gives us a very small amount of resources. So, parse is off the list. It is superb but starting up we don't have the budget for it. Plus, there are no offers for startups which AWS and Google Cloud provide.

    We have experience with Express but when we looked at SailsJs we see that SailsJs gives us Rails's like scaffolding and lends our code base a good structure which is practical. It looks like a good starting place.

    Then , we came across Loopback and saw its features and its comparisons with other frameworks. Haven't dived deep into it but looks like they provide lots of features.

    Any comments on using SailsJs and also on SailJs vs Loopback?

    @paraschopra @wingifyteam !Crud is a great place to learn and share.



  • @vishal said:

    @rudimk
    [1] Parse's free tier gives us a very small amount of resources. So, parse is off the list. It is superb but starting up we don't have the budget for it. Plus, there are no offers for startups which AWS and Google Cloud provide.

    I agree. That's one thing I've found rather odd about Parse.

    We have experience with Express but when we looked at SailsJs we see that SailsJs gives us Rails's like scaffolding and lends our code base a good structure which is practical. It looks like a good starting place.

    The thing is, Express also allows you to have a structure not dissimilar to that of Rails. But there's grunt work involved, and no scaffolding, which is what SailsJS solves.

    Then , we came across Loopback and saw its features and its comparisons with other frameworks. Haven't dived deep into it but looks like they provide lots of features.

    Any comments on using SailsJs and also on SailJs vs Loopback?

    I'm afraid I haven't used Loopback, although I've heard a lot about it. One thing is for certain - once you use Loopback, extending it will be a pain, which isn't the case with Sails. Also, and this problem exists with Parse - once you use Parse or Loopback, you're stuck with using them. Sails, on the other hand, is easy enough to migrate from, should the need ever arise.

    @paraschopra @wingifyteam !Crud is a great place to learn and share.

    Thanks! Loved building notCRUD up for all of us. Yay, @paraschopra :D



  • Sails, on the other hand, is easy enough to migrate from, should the need ever arise.

    What do you mean by easy to migrate from? Is it the fact that it doesn't provide too many built-in things which Parse and Loopback provide?



  • No, it does. Sails has addons for a lot of things. But, say, you want to shift your Sails app from Amazon to, say, servers on Rackspace. That's simple. Parse, on the other hand - you're locked in.