DEV Community

Cover image for My tech stack if I had to build an app today

My tech stack if I had to build an app today

Ferdinand Mütsch on January 03, 2017

What technology stack would I choose, if I had to develop a web application completely from scratch? That's the question this article will cover. ...
Collapse
 
ben profile image
Ben Halpern

Thanks for a lot of good info, Fredinand. I still default to Rails for brand new projects that need early momentum, with the intention of breaking out into polyglot services as the need arises. The rational being the maturity of the Rails stack and community, combined with the ease of rapidly building out features. Rails doesn't exactly make for great software and it's easy to stub your toe and create technical debt, but in practical terms it is very easy to be productive.

Otherwise, I'd have a look at going all in on functional programming with an Elixir/Phoenix app with Elm on the front end. It makes for a logically and technically scaleable application by default.

The Changelog recently wrote about their process building a Phoenix app and open-sourced it. I think it made for a really helpful look because their app needs were pretty typical CRUD behavior and it's easy to know where to look in the code even if you are completely unfamiliar with the stack.

Another open-source Elixir/Phoenix app I've come across is the very well-documented Code Corps app. That uses Ember on the front end.

Collapse
 
n1try profile image
Ferdinand Mütsch

Thanks for that comment! To be honest, I haven't even written a single line of Ruby code, but I know that Rails is pretty popular for web backends, especially because of its ease of use. However, I've recently read several times that Ruby + Rails is on a downside trend and losing popularity.

Elixir and Elm definitely fit into my topic of a cutting-edge, "fancy" stack and are certainly worth getting at least a little more familiar with their concepts, if you're a web developer. But I don't know if they're production ready, yet...

Collapse
 
ben profile image
Ben Halpern

I've come to see the "losing popularity" thing as a feature and not a bug. Rails really blew up and was the new hotness for a long time. I think being old guard technology with a stable community that takes its time to make important choices and a BDFL who still really cares about developer UX. I'm glad that a lot of bootcamps are moving away from the stack because it was probably getting saturated, and teaching Rails is probably not the best way to teach good software practices.

Rails remains a great stack for being super productive on new projects.

Collapse
 
srikanthav profile image
Srikanth A V

I have no experience in PHP or Rails. But am familiar with Java, Swift, JS (have built simple websites with jQuery). What would be the best way for me to get into back-end development?

  1. Learn Rails and web app dev from Michael Hartl Book
  2. Jump straight into functional programming with Elixir / Phoenix (learn the language and paradigm)
  3. Learn ASP.Net core with C# and then maybe progress to F#

Any comparisons for Elixir/Phoenix and ASP.Net with F#?

Thanks!

Collapse
 
n1try profile image
Ferdinand Mütsch

So many different choices out there and nearly all of them were good :-)
In your case I'd first say that (1) wouldn't be the best option, probably. I'm not against Rails or something, but as already mentioned in one of the above comments it's on a downtrend on the one hand and doesn't necessarily teach coding best practices on the other. I'd say if someone is familiar with Ruby and Rails it's totally fine, go for it. But when learning something new from the ground up, I wouldn't take that as a choice.
If you're somewhat new to backend development, I'd first learn something more common as a solid base and then pick up on the functional stuff you mentioned in (2) afterwards. If you're a Java developer, you could absolutely take a look at either Spring Boot or Jersey. However, these things are pretty comprehensive and not that super-lighweight. Something to get started with much more easily in the backend would be either Node or Python + Django (or Flask). If having to decide from one of your three options, I'd pick the third one, although I heard that .NET Core isn't completely mature enough to be production-ready, yet.
EDIT: Btw, what works best for me for learning new stuff is to watch video tutorials and courses on YouTube, Pluralsight or Microsoft Virtual Academy (the second one isn't free for non-students, but the quality is better). Maybe you want to try that.

Collapse
 
srikanthav profile image
Srikanth A V

Thanks for the detailed reply, Ferdinand! Really appreciate it. I might go the node / flask route to get familiar with backend dev process (probably start with express).

I have a 3 month trial of Pluralsight so I might make use of it now :) Thanks for the advice, again!

Collapse
 
kirantambe profile image
Kiran Tambe

I'd go with django and django-rest-framework on the backend, and angular 1(because i have never worked on angular 2, although I think now would be a good time to start) on the front end along with bootstrap 3

Collapse
 
n1try profile image
Ferdinand Mütsch

The "I'm doing X, because I'm good at it and have never worked with the newer Y" thing is fine if you need to build something quickly. Like if somebody asks you to build an app for her to be released until the of the month or so. But if you're doing a private project without being pressed for time, I'd always try something new and rarely rely on what I already know just because it's comfortable... ;-)

Collapse
 
kirantambe profile image
Kiran Tambe

Right, I would just go with these because these are the only frameworks i know. But this article makes me want to learn and try out the other stuff you have mentioned :)

Collapse
 
justin808 profile image
Justin Gordon

Ben, I'd agree with you on Rails for the backend, and I'd suggest a mix of Rails views on the front end when you need quick development plus React. I'd suggest looking into github.com/shakacode/react_on_rails for the integration of React and Rails. It's a mature project with over 2400 stars and very heavy traffic. We're the number one solution in the Rails community for using React and Rails via Webpack. It includes support for server rendering. In case you have questions on React on Rails, I'm the author and ShakaCode is my company.

Collapse
 
markerikson profile image
Mark Erikson

Pretty solid list.

FYI, I keep a big list of links to high-quality tutorials and articles on React, Redux, and related topics, at github.com/markerikson/react-redux... . Specifically intended to be a great starting point for anyone trying to learn the ecosystem, as well as a source of solid info on more advanced topics.

If you've got any questions about React or Redux I can help with, let me know! You might also want to check out the Reactiflux discussion group on Discord (reactiflux.com ). Plenty of people hanging out there happy to discuss ideas and answer questions about React, Redux, and more (including myself).

Collapse
 
n1try profile image
Ferdinand Mütsch

Thanks! I'll remember those resources when getting started with the React ecosystem some time.

Collapse
 
heyarviind profile image
Arvind

Nice blog @fredinand

I always get confused in choosing javascript framework, i think it will be difficult to choose a JS framework and learn it from scratch... How you guys manage to lean new JS framework don;t you find them difficult to learn new framework?

Collapse
 
guyinpv profile image
Zack

I feel like Amazon services would be a better choice than DO. The super high speed backend network, private networking, virtual networking, CDNs, storage systems, DBs, auto-scaling, pricing model, management tools, etc etc etc, would be better for a modern app.

Collapse
 
n1try profile image
Ferdinand Mütsch

I think it depends on the use case. The bigger (in terms of scale) your app gets, the more you'd benefit from AWS and all of its numerous features and services (load balancing, monitoring, DNS services, ...). However, I think it's also more expensive. So for small to medium, non-enterprise projects it may be overkill.

Collapse
 
dlsniper profile image
Florin Pățan

You might want to recheck your usage for Go framework as iris is known to be a questionable project: reddit.com/r/golang/comments/57w79... and reddit.com/r/golang/comments/57tmp...
Hope it helps.

Collapse
 
n1try profile image
Ferdinand Mütsch

Thank you for that hint! Crazy story... With that additional knowledge I definitely wouldn't use or recommend Iris anymore. I've even updated my article.

Collapse
 
nemrism profile image
Aymeric A

Can we build it together? 😁

Collapse
 
n1try profile image
Ferdinand Mütsch

I don't have much experience concerning monitoring, technical analytics, etc., but it's definitely an interesting point. So if any of you guys have suggestions on that, please let us know!

Collapse
 
mutablemind profile image
Dmitry Sirotkin

Nice stacks but do you really need all that buzz in the project?
Just leave it here..
hackernoon.com/how-it-feels-to-lea...

Collapse
 
n1try profile image
Ferdinand Mütsch

You don't really NEED anything at all. Of course you can do the whole thing in vanilla JavaScript and without any sophisticated backend frameworks. But for me it's much more fun to try out new things and learn about new concepts and technology. I know the discussion of today's JS ecosystem and that there's an overflow of libraries and micro-frameworks for literally everything. But unlike many others I'm not a hater of that. Instead I love to have such a great variety of possible choices, which I think is unique in the web dev world.