If you're starting to build a brand new web-based Saas app (responsive desktop web + mobile) heading into 2015 what are you using to build it on and why?
I know what my default go-to would be, but I'm looking to get input on what's worth looking into if I'm not beholden to anything legacy.
There is no admin generator I've found that compares to Django. And it is that time savings that is crucial in the beginning. It is shaping up to look like this:
Django and all the goodies on the backend (db migrations, admin generator, auth, rest-framwork)
Flask + SQLAlchemy OR Django-rest-framwork on the Frontend.
Sure, we might double-up on some models (Django models and SQLAlchemy models), but this works really really well.
I would argue that this is even better than using a BaaS for prototyping.
If it is to learn, I am trying out Ember JS atm and it seems pretty good.
Besides, is there a good PHP micro-framework comparable to say Flask? I've tried a couple and it was not worth my time. Flask is useful because it's well architected for its purpose, has a big helpful community, lots of extensions, extensive documentation, etc.
Like someone else said here, Flask with SQLAlchemy and a few Flask-* extensions will give any full featured framework a run for its money, not so with any PHP microframework that I know of.
Cannot think of a faster way to get from 0 to 1.0.
Database: Postgres
As the leading relational database, Postgres is a significant human achievement. It has recuperated most of NoSQL's critique in the past few years (for 99% of use cases), with the JSON types and functions, WITH RECURSIVE queries (added a few years ago, which essentially let you do anything you could do with a graph database), columnar stores, etc.
Its full-text search is good enough for many cases. [1]
Backend: Flask, SQLAlchemy, Flask-Restless (REST API framework)
There's no other ORM that's as powerful and uncompromising as SQLAlchemy.
If you use Flask-Restless to generate a REST API, you can have almost your entire app consist simply of model definitions.
Frontend JS: React with the Fluxbone pattern [2]
React is the most performant, powerful, and practical frontend framework currently available, and it's likely to be the best choice for practical development for the forseeable future.
CSS: Titon Toolkit [3]
A nice up-and-coming lightweight CSS framework with lots of components and plugins that gets out of your way. Some work is needed to integrate it with React while maintaining the Virtual DOM performance benefits of React, though.
[1] http://blog.lostpropertyhq.com/postgres-full-text-search-is-...
[2] http://www.toptal.com/front-end/simple-data-flow-in-react-ap...
1. couchdb: it was the obvious choice for me one because I know it well and second because it is document oriented. Most of my data is JSON representation of real world documents like the rent contract, the monthly bills dues etc. And lastly because I feel that couchdb is an excellent server side JavaScript environment. I am using it to render templates, validate data and even for user accounts management. Lots of easy wins for me there. Plus who knows I may decide to add an offline component to my app in the future :)
2. Openresty: I discovered openresty from a hacker news thread (thank you HN :-). I already used nginx but I was a bit frustrated with it when I could not do some slightly complex things. Couchdb has an http api and I just needed some tiny bit of scripting to make it suitable for my application. I think that openresty + couchcdb/elasticsearch/oritentdb/ any database with an http api is a great combo.
3. Jquery: old and faithful. I have worked with knockout in the past and while I really like it I feel much more productive with jquery.
4. simple grid: a very small css grid framework. If I need anything else I just extract it from twitter bootstrap. For example I extracted table styles from it when I couldn't get my tables to look as good. It works well for me.
For backend code, I'll almost certainly stick with Grails, but for the client side, I'm waffling between Angular and React.
Why Grails? It's what I know and like, and it works well. I can be productive with it, and I have something of an interest in promoting its use. I'm think that if I do some cool project using, say, React + Grails, that might turn into a cool talk for the local Groovy + Grails Meetup, etc.
Why Angular or React? Both are pretty modern, pretty popular, and claim to offer some real productivity boost compared to rolling everything by hand. Both seem to have plenty of traction and mindshare, and learning resources are available. I guess the same could be said of Ember and some others, but I kinda feel like the future right now is either React or Angular.
A third option would be to go with either Meteor or Node for the entire stack. And I am interested in learning both of those platforms, but not quite as willing to invest time and energy in them right this minute.
For the frontend, I am writing a routable, cached SPA in React and d3, orchestrated with Flocks, stored in S3 and fronted with CloudFront, generated by Node, backed with MySQL (because it has semi-mature clustering.)
For the backend, I use a custom Erlang stack built on htstub and emysql.
The build process is orchestrated with gulp, uses eslint, vows, karma, and jsverify for testing, travis ci for CI/CD, and deploys automatically on full test passing. (I have extensive test coverage.)
I can use remarkably few tools to get the results I want. I am happy with the stack.
I have an alternative approach to handling multiple interfaces, as a replacement for responsive. I don't use media queries to do that. Instead I have a top level React layout control, and which top level control is invoked is based on the client. The same goal is suited, but it isn't jury rigged through CSS.
I've also heard good things about Foundation (https://github.com/zurb/foundation) for getting things mobile/responsive out the box.
For actual html5 mobile apps -- ionic (https://github.com/driftyco/ionic)
From a product management perspective, Laravel is tempting - I certainly get that it could seem bloated, but some of that seems quite useful for getting to MVP quickly - the user auth and billing especially.
I'm considering Postgres / Laravel / Bootstrap (already have a clickable HTML prototype underway) to be replaced by Angular post-MVP, but I'll probably noodle on that last bit some more when the time comes to make that call.
I use a custom MVC framework, comprised of small OSS components that each do their job well: GluePHP for routing, PHP-ActiveRecord for an ORM, and either Savant3 or Handlebars for templates.
Depending on longer term goals, I might consider React (with Flux), virtual-dom, or Polymer (for Web Component polyfills).
On the backend, I would likely go with Node.js, largely due to JS being my forte.
The prospect of learning an elaborate framework for something I could piece together myself seems like a waste of time, plus none of them seem to last when it comes to relevance.
For launch/revenue: C# since it's what I'm most familiar with
Front: AngularJS, Zurb Foundation, Compass, Sass, Font Awesome, Google Web Fonts
Spring / Play if java/scala