So let’s take a hypothetical business that wants to create a web program, or app, or whatever you want to call it. Let’s say my company SuperBizCool is going to create a simple online budget finance tool. Here are some specs on the app and its use:
- The entire application is free to use, most likely supported by simple website ads or a few sponsored ads/partners.
- People can use it anonymously but their data won’t be saved if they do. Otherwise, it needs a user account structure.
- The app will be expected to be used across all modern interfaces and have modern behaviors such as:
a: Use from primary website, Android, IOS, Windows, Mac, all browsers, etc.
b: Single sign on with Facebook, Twitter etc if desired.
c: Modern interface and data manipulations with Ajax, drag and drop, jscript, jquery or whatever (minimize page refreshes)
d: Data needs on a per-user basis are not huge, but projected user base could be millions. - The application should be built on solid and lasting technologies, no “just came out” tools or fly-by-night services or “developed and maintained by this one guy in Sweden” libraries.
- As a finance app, we’ll be sure to use tabular data, reporting, printing/PDFs, charts/graphs, and possibly communicate with other 3rd party APIs.
- Scalability. As popularity grows, the foundation should scale with it. The servers, availability, speeds, database should all be able to grow and expand as the project grows, without needing in-house IT to manage. This means hosting the project on an inexpensive platform that can grow with the company endlessly.
If you read Sitepoint for any length of time or get the “Versioning” newsletter, you will be bombarded daily with this new tech and that new service and this new framework and that new database and this new cloud and that new package and this new library etc etc etc. An endless flow of “cool stuff” that no web developer or programmer could even use in a lifetime.
My question is this, given the specifications above for a company that wants to build a modern application, what would be the best technology stack to go with these days?
Server? Classic virtualized Linux OSes? A “cloud app” server? Heroku? AWS? Azure?
Database? Use Hadoop clusters? MySQL? Redis? NoSQL? Relational?
Primary programming stack? PHP/jscript? RoR? Python? Java?
Use any frameworks for the API or build from scratch? Phalcon? Django? Node.js?
Frontend framework? ext.js? Angularjs? ionic? None/Bootstrap?
There are so many technologies, serving platforms, frameworks to choose from, but if you were building a modern app TODAY and and could start fresh with the best solid tools, what would you use and why?