kentcdodds / ama

Ask me anything!
https://github.com/kentcdodds/ama/issues?q=is%3Aissue+is%3Aclosed
685 stars 75 forks source link

Web App Tips #21

Closed aliig closed 9 years ago

aliig commented 9 years ago

I was wondering if you could point me in the right direction for developing what I think should be a pretty straightforward web app. In its most primitive state, it should have three main pages:

(1) Users submit a video URL (e.g. from YouTube) in a web form page. Users input some information about the video, such as the video category, a person who appears in the video, a comment about the video, and a few more things. The form would need to drill-down so options later in the form could vary based on answers given earlier in the form.

(2) The body of the home page would contain a feed of recently submitted videos with a few text lines per video based on user-submitted data, such as category and people appearing in the video, as well as Youtube Data API stats, such as title, views, and rating.

(3) From the main page, users link to the search page. This page would have a list of filters to apply to allow users to sort through the videos based on criteria, which would also drill down. A list of videos is shown with their data, which can update without refreshing the entire page based on filters applied. The list of videos and their data would appear as described for the home page. (Technically this could just be incorporated in the home page, and the search results would overwrite the default feed.)

If things work out and the app gets traction, I'd hope to add more features to the site down the road, including user account registration:

I've been doing tutorials on Django/Python, Ruby/Rails, and a little AngularJS the past few days to acquaint myself better, but now that I'm seeing what I can do from scratch, I don't want to get too far before finding out I should have started in a different language, added more packages, etc. at the get-go. I've created a Google Developer trial account and played around with some virtual machines while I'm on the free trial, and I've figured out how to do basic tasks with Django/Python, Apache, MySQL, etc. to deploy simple apps to the web. (I've been performing simulation work on my university's supercomputer for the past three years, so I'm pretty familiar with Linux now.) I even tried working with Google App Engine, Heroku, etc. but found these to be fairly restrictive and have preferred the flexibility of the virtual machines.

What sort of languages, framework, database, etc. would you recommend for such a project? I'm just looking for the right place to start. :)

Thanks Kent! Hope that you and your family are doing well.

Mitch

kentcdodds commented 9 years ago

I'll get to you as soon as I'm able! Should be early this week :-) I do have a few thoughts.

aliig commented 9 years ago

Awesome. I'll just keep doing some tutorials in the meantime.

aliig commented 9 years ago

Also, if you have any thoughts about whether to use a starter/framework like MEAN.io, Hackathon, Strongloop, angular full stack generator, etc.; your opinion would be welcome. The suspense is killing me, I can hardly wait to get started. :)

kentcdodds commented 9 years ago

Sorry this has taken so long for me to get back to you.

First, let me preface this will the fact that I'm a JavaScript developer through and through. I'm more comfortable with JavaScript, I really enjoy JavaScript, I understand it isn't suited best for all scenarios, but it has worked great for where I've used it so that's what I use.

Also, I personally haven't done a ton of backend work. That's also valuable preface info...

So, if I were building an app like the one you describe, I would probably use the MEAN stack. That is, if I just wanted to push it out fast. If I had time, I would try to learn Koa and I would use React (for more info on that, see #7). Koa looks super awesome.

I like OpenShift a lot, though I may also look into DigitalOcean. I would register the domain with iwantmyname.com.

I'm a fan of MongoDB. Though, if I had time, I might look into PostgreSQL or RethinkDB because I've heard they're cool.

For CSS, I would probably use Stylus. But if I had time, I'd probably look into PostCSS.

For bundling my JavaScript, I would definitely use Webpack. Though, if I had time, I'd probably stick with webpack :-) Also, get all of your dependencies from npm. It'll improve your life.

I think that's everything I'd need to get started.

P.S. I think you actually might be able to accomplish what you're trying to do with Firebase. Look into that a little bit. If it suits your needs (it very well might), then you don't need to worry about a backend at all (which would be totally awesome) and you could just deploy your app on Firebase :-)

aliig commented 9 years ago

Great answer, thanks for presenting options for each. I'll be looking into each of these today and see how I feel about the learning curve for each one. I'd heard of some of these, but many I hadn't heard of or considered like Firebase or React/Koa, which seem pretty promising.

Thank you for the detailed answer, I appreciate it!