Ask HN: Software eng, but not a web dev. Learn new frameworks to build MVP?

Hi, hackers!

I'm building Future Proof, a community platform for scientists, enthusiasts, hobbyists and geeks to share cool projects, people and ideas in the fields of sci-fi and deep tech!

I've always felt that comic book geeks, DIY hackers and serious academics were overlapping domains, but there was never a platform for all these folks to fantasize and dream freely about tricorders and warp drives. I'm looking to build a Reddit/HN/IH style platform (as a start) to engage these communities together.

An ideal interaction would be:

A team of hobbyists get together to build something straight out of sci-fi (an ion thruster, for instance). They post their team and idea on this platform, and experts jump in to offer suggestions, funding, expertise, etc. Obviously community support is more than just experts and money, but you get the idea.

I have a newsletter going, with about 40 friends and colleagues. I'm beginning to bring in enthusiasts, engineers, academics, VCs, founders and other folks from my network so I can get some quality feedback. This, in a sense, is my pre-MVP. Latest email here: https://mailchi.mp/78dbc473dd84/sci-fi-hunt-twice-weekly-newsletter-122953

I'm currently scoping and designing Future Proof. I intend to build it within the month so I can get some fast validation. I have experience with Python, C++ and minimal with HTML/CSS/JS.

My options appear to be: 1. Phone a friend 2. Rails 2. Django 3. Non-code platform (Bubble, WP)

My question is: What would you do in my situation?

Thanks, and happy hacking folks!

P.S.: Would love to have you on my early newsletter subscribers! Sub here: http://eepurl.com/dBhfE5

32 points | by charleswzx 2080 days ago

11 comments

  • shiburizu 2079 days ago
    You mentioned python: Pick up Flask. It's seriously the most down to earth, "it does what I want it to do" framework for web. Make sure you know how to use SQLAlchemy (Flask's builtin SQLAlchemy is amazing) so you can have a persistent database and just spend some time building pages with forms and populate your pages with forms. Later you can make it look pretty with Bootstrap.

    I spent a lot of time opposed to "web apps" being ported as native applications but I've come to realize after doing it myself on a few web based projects that there is no better GUI framework than just writing HTML and using CSS frameworks. It works everywhere the way I want it to.

    As for deployment you can consider Heroku. I consider the "ephemeral" approach a bit annoying to work with on the first few tries but when you get the basic idea of how the platform expects your program to look and you get a really nice setup for free.

    This is how I've written a few different web apps coming out of highschool where my programming knowledge was limited and I wanted to work on websites and apps. I spent a few tries using obtuse things to write programs in things I was familiar with already but after seeing how easy it is to work with Flask and Jinja2 templates, it's recommendable to people who are new to programming in general.

    There are more modernized approaches you can hear from people who work in web dev: going directly into Vue/React and writing your whole web application in Javascript. But I think for a more holistic understanding of just what you are doing (something a lot of crash courses miss) I'd recommend writing your back end in Flask, writing those HTML pages and using templating to show your data on those pages. Then you can beautify, and hit up your preferred deployment option.

    Good luck!

    • tobltobs 2079 days ago
      Flask is great, but as this is his first web project he wont have any own opinions. Therefore Django might be the better choice as he has all the batteries (ORM, backend dashboard, user registration, ...) already included.
      • charleswzx 2079 days ago
        I've tried Django! It really does lots of batteries included. It was going to be my go-to if I wasn't going no-code. Thanks!
    • guitarbill 2079 days ago
      Can not recommend Flask enough, just for sheer simplicity. Really puts the fun back into making a web app and getting that MVP deployed.

      Flask's eco-system is great, but not as extensive as Django's IMO. And Flask itself is definitely more bare-bones, which means there's less crud, but sometimes that crud comes in handy.

      Flask and Django share quite a few similarities though. So worst case if you find yourself wanting things from Django's eco-system, you can go from Flask to Django without too much hassle (relatively speaking). Don't know why you would, or expect you will, but nice to know it wouldn't require a full re-write.

    • gassiss 2079 days ago
      Sorry for my ignorance as I am learning web development. How would Express.js compare to Flask in this scenario? From what I've read it seems they are pretty similar in concept.

      I do know the basic syntax of both JS and Python, but I thought it would be better to focus on one language, and since JS is so common for the front-end complex stuff it would make sense.

      • UlisesAC4 2078 days ago
        In my opinion node is better if you have experience, Express is so bare ones that you are going to write almost all of you functionalities.

        I am also kind of a beginner but I could not stand the way the node ecosystem is spread apart. Do not let others fool you about how npm is a chaos. The problem is the bare boned node ecosystem.

        I literally spend hours reading the documentation of passport js for account creation because it did not make sense to me, it implied that you knew how to do some validation, then I had to choose the hashing algorithm of storing passwords, setup the email verification system and even roles and I was about to implement everything by hand. When read about other frameworks like hapi and feathers. Checked them did not really offered that much and ditched js for backed for good.

        If I want to do everything from ground I would better choose Phoenix (erlang web framework) at least app would be real multithreaded by default.

        I am really frustrated but do not get me wrong node is beautiful, Middleware idea is incredible but you are alone. But There is not even a way to exclude Middleware from routes unless you do a hack as a middleware.

        In my opinion node has advanced greatly by the advancing of js itself, but once you start to program you are kind of alone. You are better using rails (not my favorite does a lot of magic) or some python tech (I am using Django btw).

        • gassiss 2078 days ago
          But I guess that's exactly the point, isn't it? The fact that Flask/Express are so bare bones, you end up learning a lot, so for learning purposes makes a lot of sense.
          • UlisesAC4 2078 days ago
            You have a point, in a more relax comment, how much learning is enough? As personal opinion just reading the documentation of your tool of choice can lead to vast amount of knowledge, default params, recommended practices, all of that is included in a well documented project, but how much should I dig into the rabbit's hole when using node?.
            • gassiss 2078 days ago
              I see your point. How much do I actually have to know is a very good question. Because there will always be something else to learn.

              In my case, I want to have a good base knowledge before leaning on any kind of "magic". I got into Python with the MIT course on EDX and got bit by the programming bug. I decided to try and get into the web dev stack, so I started to dive into JS too. Now I want to start to build stuff, and the reason why I asked the question in my first post is because it may be easier to just go deep into one language (can't do web dev without JS), since I am so inexperienced.

              • UlisesAC4 2077 days ago
                Well if we can say things we can say that any abstraction is magic until insiders are seen, the question is how much abstraction you are willing to take in order to feel comfortable.
    • charleswzx 2079 days ago
      Thanks for the suggestions! I've actually deployed on Heroku with Flask before, but only as an API server for back-end processing. It's the building out forum functionality and front-end I'm hesitant with.
      • hluska 2078 days ago
        Mind if I chirp in with another idea? Is phoning a friend an option??

        Here's how I see it. You've got to do two things - build a community and build it a home. You've already got a pre-MVP to build a community around. Could you find someone to build it (or help with part of it)?

        I'm worried you won't like the look then get bogged down in weird front end stuff.

    • ryanchants 2079 days ago
      With Flask, another option would be to deploy with Zappa(handles deploying via AWS Lambda). This plus LambCI is becoming my go-to for personal projects.
  • jmstfv 2079 days ago
    If you are just building an MVP, you'd want to spend very little time on actually building the product. Here are some choices:

    * Discourse forum: https://www.discourse.org/

    * Slack channel

    * Google Docs spreadsheet

    • charleswzx 2079 days ago
      Discourse sounds like a great place to start. Thanks!
  • krrishd 2079 days ago
    It's been a while since I've taken a look at the landscape, but Telescope is a tool that's built explicitly (or at least used to be explicitly) for building Reddit/HN style communities (http://www.telescopeapp.org/).

    In addition to their actual software, looks like they have a nice little guide about actually building thriving communities on their tech: http://www.communitybuildingguide.com/

    • charleswzx 2079 days ago
      Telescope was one of the first things I checked out. They appear largely deprecated though, and have moved on to their new framework, http://docs.vulcanjs.org/
  • mabynogy 2079 days ago
    Create a chat for your 40 users. Start from what you have.

    I wouldn't use a framework and I'd start with a static website.

    • charleswzx 2079 days ago
      Got you. Chat channel coming soon.
  • potta_coffee 2079 days ago
    If I were in your position, I'd choose Django or Laravel. I'm really not a fan of PHP but Laravel has a lot of dummy proof features and it's super fast and easy to get pretty serious projects built.

    Django and Laravel both have very excellent, detailed documentation as well.

    Good luck! Sounds like a fun project. I hope you post it on here so I can check it out when it's done!

    • charleswzx 2079 days ago
      I most definitely will! Thanks for the suggestions!

      //shameless plug You can stay updated and get awesome sci-fi news, tools and projects by subscribing to Future Proof! (http://eepurl.com/dBhfE5)

  • LocalMan 2076 days ago
    For a real software developer, PHP is a horrible language. And Javascript is almost as bad.

    The software tools to help you build and deploy are also a painful mess. You'll have to test on multiple browsers running on multiple operating systems.

    It's just a matter of a week or so of overcoming the cultural shock. But you'll have to schedule it in.

    Paul Graham says to do it all in Lisp. Most people don't.

  • Jaruzel 2079 days ago
    You say to have minimal HTML. So I'd say phone a friend for the UI/UX - Don't under estimate how much work has to go into the front end of web apps. In my experience users now expect full rich applications in their browsers, and the effort required to create that typically ends up being 80% of the work.

    The backend always basically ends up just being functions to shove data in/out of database tables - which is kinda easy.

    • charleswzx 2079 days ago
      I hear you. Good front end is a lot of work, work which I might not have the ability to do just for an MVP. Thanks for the suggestion!
  • Kagerjay 2079 days ago
    wouldn't just a discourse forum suffice? or a phpbb instance

    It would be a good way starting off, a subreddit would work too. Might as well start building the community today

    then you can build whatever stack you want for more fine tuned features (django, rails, etc)

    • charleswzx 2079 days ago
      You're right. One of my motivations building this platform was to get people OUT of subreddits and discourse channels and get mixing in the open. You're right though. I'll be setting something up to pair with my newsletter for now.
  • m3tr0s 2079 days ago
    Start a subreddit. I mean if you want to build business, don't start with building a product if it isn't completely necessary (it isn't).
    • ManlyBread 2078 days ago
      Handing over the control to an external entity like reddit is not a good idea considering how intrusive the administration can be and how little control you yourself might have over the subreddit in case the site policies change.
    • charleswzx 2079 days ago
      In your opinion, subreddit vs. discourse/telegram/slack channel?
      • m3tr0s 2078 days ago
        Reddit, because it is indexed by search engines. Others I think are not.
        • iKJames 2077 days ago
          Discourse is a forum software, self-hosted and does get indexed by search engines.
  • dylanhassinger 2080 days ago
    learn Vue.js and Express.js. These are lightweight tools you can build anything with