

Ask HN:  What are you using to build new web apps? - yawn

I have an idea for a web app.  It's been a couple of years since I've written anything from the ground up and I'd like to scratch my learning itch.  Ideally, the framework/tools would have support for persistence, users, and REST.  I don't care about language, but I'd prefer something easy to learn and maintain.  I'm not worried about scalability (yet?). What are you guys using today?  Any sharp weapons that aren't getting the spotlight they deserve?  Have things advanced much in the last couple of years?
======
codegeek
Python and Flask framework. You could try Django as well but I personally
found Django to be too bloated for me (not trying to start flame war here).
The beauty of Flask is that it comes with just about enough core functionality
to get you started and you can always use their extensions to add on top as
needed.

~~~
yawn
For you Flask proponents, do these extensions solve my reqs? Users: Flask-
Login, REST: Flask-Restless. Have people voted with their feet on these?

~~~
codegeek
In general, Flask extensions are written very smartly that you can couple/de-
couple with your core Flask app. Personally, They go through a rigorous
process of getting approved by the Flask team before they officially become
flask extensions. I have used Flask-login which is very good for basic session
management. I also like Flask-SQLAlchemy, Flask-WTF for ORM and forms. So in
general, some are pretty good but cannot say for every flask extension.

Overall, to create a web app as beginner, Flask is definitely recommended by
me. I built a User Management app using Flask recently (registration,auth
etc.) within 8-10 hours of coding.

------
anujkk
Backend : Python/Flask

Database : MongoDB/MySQL

Front-End : HTML5/CSS3/LESS/JavaScript/jQuery/Bootstrap/Angular.js

~~~
yawn
Aside from ExtJS, most of the dev I've done has used js conservatively
alongside server-side templates. Showing my old-school bias, I still
instinctively hold js at arm's length.

With all the options available, what drew you to Angular?

~~~
anujkk
I only use angular.js in projects in which I need fast web based rich user
interface, similar to Gmail. In such projects not using javascript doesn't
make sense as full page refresh will result in slow unpleasant UX. Also such
projects need heavy use of javascript and using jQuery make things unorganized
and complicated as code size grows. This is the reason why frameworks like
angular.js/backbone.js/ember.js exists.

However, for most web apps, I don't use much javascript other than some lines
of jquery or 3rd party jquery plugins.

There are no hard and fast rules for technology selection. At the end of day
what matters is choosing technology that provides best possible user
experience, easy development workflow and maintainable code.

------
macca321
I have a couple of libraries

a library for mapping http requests to domain objects (see 'naked objects'
pattern), with convention based runtime form generation. no more writing
controllers, most views are generated, full feature REST API out of the box. A
bit like Django admin template, but more powerful.

an in memory 'db', persisted using an event log of user inputs to the domain
model (see 'prevalence' pattern). no more worrying about network latency, no
more mapping objects to database columns, no more writing update scripts (or
at least not much)

I don't think either of these approaches have much love in the mainstream, but
I think they make me way more productive than the standard MVC/(SQL/NOSQL)
approaches.

------
austinlyons
python on google app engine

<https://developers.google.com/appengine/docs/python/overview>

Easy to use, can support what you want to do, easy to maintain, easy to scale.

~~~
yawn
Do you worry about lock-in with regards to persistence? How hard would it be
to get the data out and switch over to controlling the back end yourself?

~~~
austinlyons
It would take some work to get the data out.

------
kevinrpope
At work: C# MVC4/SQL Server

At home: Rails/Postgres/Heroku

C# is a lot more rigid, and I find it a lot harder to find quick answers to
the obscure errors I inevitably generate (as opposed to Rails, where Google
has the answer every time).

------
Rust
Recently, I'm all about Python and Flask (or Web2Py for simpler things).

------
expralitemonk
Django-- it's popular (easy to get support questions answered) and a lot of
fun to learn. Although Flask and Bottle look interesting too.

~~~
austinlyons
consider webapp2 if you are looking for something lightweight

------
szelvenskiy
backbone.js+jQuery+ROR+Mongo I find this selection easy to use an powerful.
backbone.js+jQuery has a lot of adoption and strong community, so it's easy to
find answers and additional components.

ROR got strong community and language. Almost every functionality is available
as a gem with code published on github.

------
logn
Google Web Toolkit + AppEngine (I grew up on Java Swing so this is like the
good old days... but not REST)

------
marquis
Flask and Angular.js with Solr/MySQL. Elegant and powerful.

------
bcambel
Tornado(py) + Redis (queue)

------
countessa
padrino and whatever backend i need for the job at hand.

