Developers February 21, 2020

Tech-Stack suggestions?

J, Aman @RobotsMakingDubstep

Building a MVP for my business idea. How does the following tech-stack sound like:
Frontend: ReactJS
Backend: Django
Database: NodeJS + MongoDB
Others: GraphQL instead of REST

Edit:
The idea I am working on, can be understood at some level (if not all of it, still needs refinement):
https://www.indiehackers.com/post/a-travel-guide-app-668b92e14d?utm_campaign=forum-notification&utm_medium=email&utm_source=indie-hackers-emails

  1. 12

    All that matters is this; do YOU feel comfortable building with that stack?

    For an MVP, I would not waste my time with GraphQL , NodeJS, and React.

    1. 3

      For an MVP, I would not waste my time with GraphQL , NodeJS, and React.

      Why not? Like you said, what matters is whether they feel comfortable building with that stack. If they do, it would be a waste of time to go with anything else.

      1. 1

        Agree with both of you to some extent. And, after this thread and all that people have contributed here, I am now thinking again on shredding the stack a bit, by putting out GraphQL and Node. And simply, make it with React + Django for the time being, so that I focus more on development and less on combining multiple things.

      2. 0

        Because it's not a necessity for a minimally useable product.

        1. 2

          Sure, but nothing's a necessity per se. Django, Rails, a database — those aren't necessities either. It's all about what you're most efficient with.

          1. 1

            I agree to an extent, but be careful... Tool selection is important and while someone may be comfortable with a screw driver you wouldn't use that to hammer a nail.

            As a developer just be careful to not over complicate your stack for the idea. Less is more, pick (unbiasedly) the right and best tool / language / tech for the job weighed carefully against what you know or could easily learn. And most importantly don't recreate the wheel, don't be afraid to reuse maintained open source libraries to limit redundancy. Language itself consider hosting cost / simplicity / maintainablity. Speed to market matters but so does staying power, you'll always have competition!

  2. 5

    It sounds overcomplicated. Just take Django + SQL, and that's it.

    1. 1

      Shouldn't I be using a frontend framework in order to develop this? Backend Django + SQL has its advantages, in fact, the current project I'm working on in my organization is partially based on that. But, I'd like to implement things like GraphQL, NoSQL primarily to get a more hands-on on how they'd work in a real project. Would really appreciate your input.

      1. 16

        Are you building a business or learning a stack?

        If you want to learn a stack do it while being paid, not while starting a business.

        1. 1

          Agreed but with the exception that sometimes you need to choose a specific stack to accomplish the business goals. For example, maybe you need a PWA, and by choosing a technology like next.js or CRA, it could greatly simplify what comes for "free" vs. having to put in additional effort.

        2. 1

          Also you can learn it in the free time lol.. Definetly buidling a business is hard enough to add more complexity/risk !

        3. 1

          Reading this makes me realize how true this is.

        4. 1

          +100000. Great way to put that!!

      2. 5

        It's really unfortunate that our industry has convinced you that you need to utilize tooling built for larger applications. On behalf of the industry, I apologize for that.

        You do not need a front-end framework to develop a web app.

        I've built multiple very large apps with Rails + Bootstrap. No React. No Vue. No JS libs, just a sprinkle of jQuery.

        1. 1

          Alright. Thanks, and don't be sorry for whatever industry has taught me. I barely started my career here 1 year ago, so my thoughts are all over the place and I am trying to learn a lot of things as well as apply them. So, thats my bad in a way as well.

  3. 2

    Do not choose a No SQL DB unless you really know that you need it. Like, fundamentally understand truly why it makes sense in your project.

  4. 2

    I would switch React for Vue to be honest, but if you are comfortable with that stack then start work!

    1. 1

      Home come? In my experience the biggest difference is the ecosystem, while the tools themselves are just a minor dialect to each other.

      1. 1

        It’s just nun preference. React Ian a great tool and it’s not going anywhere. I just find Vue a better fit for me and my products.

    2. 1

      Right now, I have some experience in Django and React. So, next few weeks/months I can spend learning something new or make what I want to using something I already know. What would you suggest.? Also, would love to know why would you consider Vue instead of React here. I don't know much about Vue to be honest.

      1. 1

        A lot of people like Vue as it's very light-weight, typically less LOC apples-to-apples than React for a component, and generally easier to learn if you are coming from AngularJS/Backbone/Ember etc. Granted, the support and community around React is more vast.

        1. 1

          Yes, that's whats convinced me so far to learn and improve at React. originally I'd consider myself more of a backend engineer, everything is same for me.

  5. 2

    Mine: react, node (express), mongodb.

  6. 2

    Maybe you should give us a glimpse of your idea + your current knowledge of the stack you mention.

    The amount of interactivity needed at the frontend influences your choices there. Simple stuff can be well done with old fashioned server side templating like Django. Fancier stuff might require a frontend framework.

    1. 1

      Fancier stuff it is, indeed.
      Stuff like maps and all.
      I have included the link to an introduction of the idea in the post.

  7. 2

    Django + Postgres seems like a sensible combination.

    Or, if you wanted to go down the NoSQL route, Flask + MongoDB.

      1. 3

        My general recommendation is to use a relational database unless you can articulate the specific benefits to your application of using a NoSQL database. In some application architectures it might make sense to use both.

        1. 1

          I will probably need geological data, coordinates etc. What would you say?

          1. 2

            Many of the common SQL and NoSQL databases support spatial queries, either built-in or by adding a plugin/extension. Without knowing specifics about the structure of the data you're storing or the access patterns and frequency, I'd probably look at using PostgreSQL with the PostGIS extension.

            1. 1

              Will check out this extension you talked about. Thanks!

  8. 2

    Are you sure you need React?

    If so django rest framework and postgresql is all you need.

    1. 1

      Yes, I intend to use a frontend framework instead of depending solely on Django templating service, not that I have anything against it. I love using it.

  9. 1

    I would go for react, Django and SQL. Since it's an MVP you want to develop it as fast as possible and get feedback. Use what you're comfortable with to get the job done fast. Optimize later

  10. 1

    Rails / Javascript / Postgres / Heroku

  11. 1

    An opinionated engineers' perspective -- TLDR;
    On your timeline (core product in a few months) per your other post -- you should use as few technologies as possible and ones that you already know.

    Also -- even though you're looking at a larger data set someday to do recommendation engine bits for travelers -- you should probably start out with something you can launch in 3 months and not spend a month fussing with.

    re: Mongo
    NoSQL means your schema changes happen in your code instead of the database. When you start out you don't know what fields you need in your schema, you'll change them, and get crazy overhead to support old data. Just have a database schema till you know what your data will look like -- you can always migrate from a tight ship to a loose document store if you want. Services start small and don't hit nasty performance issues at this stage -- the goal is to survive today and ship in 3 months.

    re: GraphQL from my read sounds like a no-backend strategy ala Firebase and friends. Fine but then you're doing all of your logic in the frontend.

    re: Node.js this is javascript with libraries to act as a backend language. So this is a replacement for Django but with poor database libraries for Postgres/Mysql (speaking from experience here) which might push you back toward Mongo. If this is your jam already, do it and ditch Django.

    re: React sounds great but you'll need something to feed it data, fancy interfaces can always be added later. I did fancy maps with html5 canvases drawn on them for space planning in 2009 -- you don't need React to do maps. Just start with OpenLayers or Google Maps API directly and sprinkle some vanilla javascript around it till you have time to do React.

    re: Django it's a take as much as you need framework -- I've used it to only manage databases before. Or you can just use the templating and URL routing, so you can always rip out the parts you don't want later. It's basically Rails written in Python and is made to save you time to market. If you already know this you should just use it and get to business. ;)

    Good luck! Hope that helps

    1. 2

      It does. It really did. I'll consider everything that you said here, while finalizing the stuff I'll be working on. Thanks!

  12. 1

    React + Django + (MySql or Postgresql) is sufficient

  13. 1

    I suggest using a CMS , like Strapi which will handle your graph ql API for you. It's much easier than trying to build it plus building the app.

  14. 1

    For a fast MVP: ruby on rails + postgresql

  15. 1

    I personally work with the MERN (MongoDB, Express.js, React.js and Node.js) stack. I'm moving into Vue.js because I like how things are handled in that library. Honestly, do whatever you feel comfortable with.

  16. 1

    bruh...just use firebase and any server side rendered framework like ......Next.js, Nuxt.js etc....

    1. 1

      Interesting input. Didn't really think about this at all. Would you tell me more on it? My MVP requires some decent frontend work as well to showcase the whole functionality.

      1. 1

        Sorry for the late reply....Basically you use a framework like Next.js or Nuxt.js ....I would use Next.js bcoz you have so many react components you can use which will cut your development time...plus you can create any complex ui workflow with it...Use firebase for database, storage....you can even work in authentication with many oauth2 providers in firebase and just use redux on the client side to do authenticated routes...etc...start off with the free tier and go to spark plan if your app gets any traction......plus you can also integrate ML, algolia for search later if your app requires it....deploy mvp for free (no credit card) on zeit now.......IH is also built on something similar I think he uses Ember instead of react....

  17. 1

    I would probably skip Django and just use Node.js; Django seems unnecessary to me in this stack and wouldn't play well with the other technologies you want to use. GraphQL instead of REST also seems like overkill unless you're already familiar with it. Everything else seems fine as long as you're comfortable building in it.

    1. 1

      Alright. Just that I have some experience in Django, Node on the other hand, I barely know anything at all. So the time spent in learning it to a decent level, can be utilized in making the same thing in Django and improving it.

      1. 1

        Django was built to work well with SQL databases like PostgreSQL, not with NoSQL databases, so if you're committed to using Django I would recommend not using MongoDB.

  18. 1

    Flutter is great for a MVP and even full product. Very fast development

    1. 1

      Web development is something I am trying to focus on for the time being.

      1. 1

        Flutter supports Web development, although it is currently in a Beta version. I imagine it will have the initial release sometime this year

        1. 1

          I was thinking to do React and then React Native for mobile development. What would you say?

          1. 1

            If you are familiar and comfortable with them, then I would stay stick with that.

  19. 1

    For an MVP you should generally use as simple of a stack as you need, and one you're familiar with. I don't know django, but doesn't it support accessing a database? If so I don't think you need node.js. If GraphQL is easier for you to implement then use it, otherwise use REST. GraphQL has benefits when the front end is being developed by a different team than the back end because the two teams don't have to coordinate changes (e.g. when the front end needs a new property in a response), but if you're implementing both the front end and the back end then you don't have that problem.

    1. 1

      Heck, I've have built several back end/front end combinations all by myself, and even I have trouble maintaining communication between the back and front-end teams.

      It only started to get better since GraphQL came along...

    2. 1

      I won't say easy. I have used GraphQL in last few months in some learning projects. REST, is something being used in my organization's current project I am working on. So, just that.

  20. 1

    If it’s a learning project, it doesn’t matter. Use whatever you want to learn.

    If it’s a “serious” project, use whatever you know best. All those technologies are fine if you’re comfortable with them. Remember, your users don't care what you choose.

  21. 1

    Also, I'm having thoughts about doing this the microservice way. Does that mean I'll have to choose a path that incorporates Flask instead of Django, as it's better to develop things in terms of microservices.

    1. 4

      Microservices add a lot of development time for little gain on a project with few developers/users. Beware!

    2. 2

      I wouldn't bother with microservices. Microservices introduce deployment, versioning, and maintenance complexities. In my experience microservices are mostly useful when you have multiple teams working on different software products that need to work with each other. They solve an organizational problem, not a technical problem.

      1. 1

        Got it. You convinced me in an instant.
        Dropping the microservice idea right away

  22. -1

    This comment has been voted down. Click to show.

    1. 1

      I dont know what nocode is. Can you give me a brief about it if it doesn't take too much of your time? Would really appreciate it :)

      1. 2

        He's saying don't write code, use a builder or services like bubble, zapier. Its a trend.

        If you're an engineer, like yourself, just code.

        It's so annoying seeing this no code shit everywhere lol. This guy is asking for feedback on stacks, he knows how to code.

        1. 1

          LOL. Well, code it always has been. I didn't even know a path like this even existed before I got here.

Recommended Posts