Ask HN: What would you use to build a super simple web app?

13 points by livatlantis ↗ HN
I need to create a very simple web app. What are some good micro frameworks out there that I could use?

My needs are very basic: users need to be able to create an account, post new discussions, reply to things and see what's new. (Basic CRUD stuff).

I considered Rails when I first worked on this project many moons ago, but I find it's is overkill for what I want. Too much magick. I want as much of the code to be stuff I've written and understand. For the db, I'm curious about noSQL solutions but again, I want to keep it light.

I don't care if it's in Ruby, PHP, Golang, Perl 6, JS, Python... it's for a personal project so I'll have fun playing with it.

What are you guys using for your small side projects? (Thanks!)

32 comments

[ 3.4 ms ] story [ 61.3 ms ] thread
I think if you find rails to be too hard you ought to be looking for some hosted solution to do what you want or just pay somebody else to do it.
Nah, it's not too hard -- it just has a bit too much magick for my liking. I'm comfortable with Ruby and the MVC pattern. It comes with too many things that are free but I don't need.

For example, for my blog, I didn't use WordPress because it's too bloated -- it comes with jQuery, widgets support, themes etc etc. All I needed was a way to generate articles. So I used node.js-based Metalsmith[1] and it does just enough without getting in the way.

I've never built an public-facing app but that's kinda the point of it why I want to do it. Hiring someone else and miss out on all the fun? ;)

[1] http://www.metalsmith.io/

Generally I'm doing side projects to fix an actual need of mine, rather than where some people are trying to learn a new language or framework, so I pick PHP because it's the language that I'm most proficient at, it's probably not the best language for my needs, however the most powerful language is the one that you know!

Are you looking to build something, in which case playing around with new frameworks may just be a distraction...? Or do you actually want to play around with something new?

Nah, the goal isn't to learn a new language per se. It's in response to an actual need. I've sketched it out quite in detail (I previously sketched out db table schemas) a while back, and now I want to build it.

I'm just out of touch with what's out there. What PHP framework are you using?

For PHP check out Laravel

laracasts.com is great for learning Laravel.

It would be a good fit for your project.

I've played around with Larvel and others seems to like it, to be honest I can build stuff in it but I struggle to grasp everything going on behind the scenes, so kinda suck at debugging it... However this is 100% because I'm not a coder, and not a pit fall of the framework.

I actually kinda use my own framework, I learnt php from a Lynda video tutorial, think it was one where you build a blog. Main part of the tutorial is building a framework, and I naturally just started reusing it for my own side projects...

Just built something that sounds pretty similar in Laravel and can vouch for it for sure. I was impressed how little time it took to do some of the things I was trying to do. As it scales up, I'll need to look at some of those things again, but for a quick prototype it was great!
I've had a great experience with CakePHP, with their cake bake tool, you'd be able to generate most of the boilerplate code for your CRUD
What you're describing isn't "very simple".

Use a proper framework. Something like Elm, Om Next or React.

I use Flask if it's an API or Django if it's a web app. These days I use Elixir and Phoenix for most serious web apps though but if it's a small side project, I would reach for Python since that's the language I am most comfortable with. I really like SQLite and I think it's very underrated for small apps, but if it's serious I would use Postgresql since it's fast, reliable and awesome.
Django with SQLite. It has built in Admin panel, authentication, and a very simple DB api. The learning curve is not hard. SQLite requires no additional dependencies and you can backup your db by copying the database file. It also performs very well.
I'm going to build my side project in gwt ( with bootstrap for responsiveness) and host it in google app engine.
Python and Flask on Heroku. What you're describing is almost the "tutorial" web app (look up Grinberg's book on Flask). Heroku is a nice platform to work on that takes a lot of the complexity out of cloud hosting. Flask lets you do almost all the coding yourself, but it has add-ons available to take care of whatever you don't want to do.

Heroku gives you a PostgreSQL database with one click, but you could easily integrate a MongoDB database if you wanted to try NoSQL. In Mongo, you'd actually store and retrieve your data in JSON, so it's even easier than writing SQL.

For basic CRUD and REST API I use Sails.js [0]. You can literally roll-up an app in 20 minutes.

[0] : http://sailsjs.org/

(comment deleted)
PHP and MySQL. Also Bottle and Python.
You could get this project setup in Meteor (JS framework) in ~2 minutes using Telescope

http://www.telescopeapp.org/

I second this. I've been playing around with Meteor for testing side project ideas. Super simple to get up and running.
Python+Flask is awesome

so lightweight, yet extendable... some extensions that might be worht looking at: Flask-Login, Flask-SQLAlchemy, Flask-WTForms, Flask-Admin

Plus one for flask. You can have a web app up and running locally in about 15 minutes, then deploy to Elastic Beanstalk in another 10.
CGI, basic auth, and bash can go a long way. Add git and baby, you've got a stew going.
Stop thinking about "overkill". It's such a foolish pre-optimization. If sometching helps you solve a problem quickly, just run with it.
I think either Django or Ruby on Rails would do. You can roll out these basic functionalities in less than 2 hours if you are reasonably familiar with these frameworks.
If your interested in making a RESTful back end I would suggest the Falcon microframework for Python.

http://falconframework.org/

Or just using Go out of the box. It has a lot of what you'll need built in and is pretty fun language. I'm learning it right now myself and it has a lot of interesting features.

Python and CherryPy and any light DB like SQLite. Or Bottle instead of CherryPy.
If you truly want no magic and barebones "on the metal" code, go with Flask. You'll have every choice down to the way you serialize your objects into views, models, and every aspect of the database. You can write everything yourself with no or minimal dependencies, or pull in the most popular packages as you see fit (SQLAlchemy, Marshmallow, Jinja, etc.).

Django will provide some (useful) magic, but nowhere near as much as Rails. If the site evolves, I really recommend transitioning to Django for it's ecosystem. In either case, I recommend sticking with plug-and-play auth.

(Disclaimer: I'm an engineer at a startup whose backend is 90% Python, mostly Django.)