I need to create a very simple web app. What are some good micro frameworks out there that I could use?<p>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).<p>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.<p>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.<p>What are you guys using for your small side projects? (Thanks!)
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.
You could get this project setup in Meteor (JS framework) in ~2 minutes using Telescope<p><a href="http://www.telescopeapp.org/" rel="nofollow">http://www.telescopeapp.org/</a>
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.
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!<p>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?
My personal choice at the moment is Ruby with Roda[0] and whatever ORM meets my needs best, or even skip the ORM and use the DB adapter directly if it's something quick and simple<p>[0]: <a href="http://roda.jeremyevans.net/documentation.html" rel="nofollow">http://roda.jeremyevans.net/documentation.html</a>
I'm going to go out on a limb and suggest a Rust framework called pencil [1]. It's inspired by Python's flask and is just as easy to get going.<p>[1]: <a href="https://fengsp.github.io/pencil/pencil/" rel="nofollow">https://fengsp.github.io/pencil/pencil/</a>
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.).<p>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.<p>(Disclaimer: I'm an engineer at a startup whose backend is 90% Python, mostly Django.)
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.<p>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.<p>[0] : <a href="http://sailsjs.org/" rel="nofollow">http://sailsjs.org/</a>
If your interested in making a RESTful back end I would suggest the Falcon microframework for Python.<p><a href="http://falconframework.org/" rel="nofollow">http://falconframework.org/</a><p>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.
You may find this thread useful: <a href="https://news.ycombinator.com/item?id=10302879" rel="nofollow">https://news.ycombinator.com/item?id=10302879</a>, though it's about CRUD on the JVM specifically.
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.
Stop thinking about "overkill". It's such a foolish pre-optimization. If sometching helps you solve a problem quickly, just run with it.
Python+Flask is awesome<p>so lightweight, yet extendable... some extensions that might be worht looking at: Flask-Login, Flask-SQLAlchemy, Flask-WTForms, Flask-Admin