
Ask HN: It's Jan 1 and you're building a new Saas app: What framework do you pick? - molotv
Title says it (mostly) all.<p>If you&#x27;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?<p>I know what my default go-to would be, but I&#x27;m looking to get input on what&#x27;s worth looking into if I&#x27;m not beholden to anything legacy.
======
mwhite
I'm doing this right now. IMNSHO, the best stack for 99% of real-world
projects is:

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-...](http://blog.lostpropertyhq.com/postgres-full-text-search-is-good-
enough/)

[2] [http://www.toptal.com/front-end/simple-data-flow-in-react-
ap...](http://www.toptal.com/front-end/simple-data-flow-in-react-applications-
using-flux-and-backbone)

[3] [http://titon.io/en/toolkit](http://titon.io/en/toolkit)

------
iqonik
It depends on what your goal is. Is it to make money? Go with your default and
get an MVP out by the 10th Jan. Seriously. You can always rewrite it once you
have paying customers and know it's not a complete waste of your time.

If it is to learn, I am trying out Ember JS atm and it seems pretty good.

~~~
abuiles
+1 on this, Ember + Rails is a really cool combination, also check
[http://ember-cli.com/](http://ember-cli.com/) (and if you want to learn
Ember, I wrote a book [https://leanpub.com/ember-
cli-101](https://leanpub.com/ember-cli-101)).

------
brickcap
I am working on a saas in my free time it was supposed to launch in 2014 but I
guess it will take some more time. My application would allow tenants to pay
their rent online. I am using openresty, couchdb, jquery and simple grid. Here
are my reasons for choosing the stack that I did:-

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.

------
mindcrime
I've been thinking about just this lately. I have an idea for a side project I
want to kick-off, which will be mainly for A. to scratch an itch of my own,
and B. learning. So I'm looking at it as a chance to just pick something and
run with it.

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.

------
_RPM
Off topic, but I can't believe how many people are using "Laravel". It is
probably the most bloated PHP framework in existence. [Serious, Not trolling]

~~~
raquo
There's nothing inherently wrong with using a full-featured framework like
Laravel or Rails. It saves time, and backend performance is not always a
dealbreaker (small projects, caching, etc).

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.

------
JohnHaugeland
TL,DR: Node, Erlang, React, Flocks.JS, MySQL, and CloudFront.

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.

------
ssiddharth
I've been using Laravel on HHVM for the backend and a mix of jQuery and React
for the front end and couldn't be happier. Everything flies and the ecosystem
is actually not all that bad. Taking a look at the upcoming 5's feature list
make me happy to have picked it for this round.

------
loglinear
Mongo, Express, Angular, Node. Specifically this right here:
->[https://github.com/DaftMonk/generator-angular-
fullstack](https://github.com/DaftMonk/generator-angular-fullstack)

I've also heard good things about Foundation
([https://github.com/zurb/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](https://github.com/driftyco/ionic))

------
molotv
Popping back in the thread to say "thank you" to everyone who contributed so
far - this has given me a lot to research and think about.

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.

------
sjs382
I'm primarily a PHP developer.

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.

------
bsaul
Flask + angular. Flask + sqlalchemy is just everything you need for a basic
backend ( haven't tried django rest yet) and angular is now a de facto
standard unless you need something special.

------
larryweya
Already building one on Laravel 4.x and React for the front-end. Have a
background with Django and my personal favorite Pyramid but Laravel really
cuts down the boilerplate for me.

~~~
sheraz
Funny -- I'm going the opposite direction. I did a few MVPs last year on
Laravel which have since moved to Django or Flask.

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.

------
user3487
Django for backend React JS for frontend work

------
Bahamut
If I need a rapid prototype, I would build it in AngularJS. It allows me to
get a nice prototype finished in days (in part due to my mastery of it).

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.

------
athesyn
I started just a week ago with expressjs + jade, simple css grid framework and
some node modules for things like form validation and database manager etc.

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.

------
jbrooksuk
Laravel 4.3 for me.

~~~
lemcoe9
This will probably attract trolls.

------
ww520
For a Saas web app, HTML/CSS/JS/Bootstrap/Less/JQuery/KnockoutJS/ReactJS on
the frontend and Ninja at the backend.

------
pc86
For learning: Probably meteor because it's been on my list of things to learn.

For launch/revenue: C# since it's what I'm most familiar with

------
psp
Backend: NodeJS, Express

Front: AngularJS, Zurb Foundation, Compass, Sass, Font Awesome, Google Web
Fonts

------
reverius42
Node.js + Express on the backend. React.js, Flux, Bootstrap on the frontend.

~~~
izolate
Similar to mine: Node.js/Express.js/MongoDB (backend);
Stylus/Jade/jQuery/Webpack (frontend)

Cannot think of a faster way to get from 0 to 1.0.

------
mmgutz
golang + vue.js

------
arun057
Sails.js or Rails

Spring / Play if java/scala

