I want to try rewrite it from scratch in Common Lisp. What web technologies stack to use?
SproutCore + Hunchentoot + MongoDB is it right choice?
Unless, of course, you have a really simple schema so that you want to use the DB as a mere persistence layer. Or you know from the beginning that you'll have to scale really huge. But then, you'd need a highly customized framework anyway, which would somewhat defeat the purpose of writing a general purpose framework in the spirit of Django.
Also, PostgreSQL is allows to be extended from inside, thus working much in the spirit of Lisp. It can be extended with plain C code, but has also language support for pgSQL, Perl, Python and Tcl:
http://www.postgresql.org/docs/current/static/server-program...
Unfortunately, language support for Lisp languages is missing yet, but this might be only a matter of time (and would be really great).
About web frameworks others have mentioned AllegroServe, which looks quite good with the logic and view separation in templates and actions, similar to Django. Other people prefer to code the HTML inline with cl-who i.e.
If you're developing an application in the web you may find worth a continuation based framework like weblocks or UCW. Cliki contains a fair amount of libraries categorized. Here you have the database libraries: http://www.cliki.net/database
Another approach for people who are just trying to get something done rather than write a framework to consider is to use CL to do the interesting bits and something else for the web frontend. I've built a couple webapps in CL that would simply have been easier in Rails.
I concur with other commentators that PostgreSQL is worth looking at. I wrote the postgres bindings for what is now CL-SQL many years ago (hi stringbot!), and postgres is fast and reliable (aside from SBCL having interrupt hander sensitivities during ffi calls), though again, the CL-SQL interface is littered with globals, the connection pooling is a bit .. unusual .. and the reader macro syntax probably a pretty bad idea, all in all. If hunchentoot and cl-sql were mildly rewritten with an eye towards looking more like, for example, Java's JDBC and Servlet interfaces, you would have a simple base environment where you could reap most of the big CL wins immediately (DSLs, CLOS, coding closer to the speed of thought, etc.)
The 'IMHO' sources are kicking around here: they suffered a bit from WebObjects envy (hey, it was the 90's..) and do somewhat suboptimal handling of session state. It's still not clear to me how OO you really want to get with the server-side representation of a page, especially in light of all the nice JS client-side component kits that are around.
Mull.
Using Lisp for a web dev platform was pretty nice. I was a support engineer in those days and I always found it useful to be able to pull up a console and inspect the actual running sessions to debug problems in production.
http://www.h-online.com/open/news/item/Oracle-raises-prices-...
Although they took this back for the moment, allowing InnoDB to stay available in the "Community Edition", they made very clear that we can't count on that in the future.
So if you attach importance to ACID, I recommend to start with PostgreSQL rather than MySQL.
EDIT: That said, MongoDB's reliability model (you have to have a synchronized pair of DB servers to get the reliability you get from a single PostgreSQL instance), PostgreSQL may be the safer choice.
Weblocks is a very good concept if you're willing to get your head round it, and work within its worldview (which is about displaying widgets rather than manually generating HTML).
Everybody uses parenscript, which is a great concept.
Even then you're not yet off to the races. In particular, Hunchentoot's session management capabilities are anemic out of the box.
I haven't seen any drop-in replacements, so you're looking at reinventing at the very least this extremely core part of any web development stack.
Hunchentoot also doesn't have any built-in capabilities for handling updates to the website's source code.
Do you mean user authentication? What would be really nice to have is a user authentication library that offered a generic protocol that could be used with several web servers and persistence mechanisms.
"Hunchentoot also doesn't have any built-in capabilities for handling updates to the website's source code."
You just load the new code and it works.
No, I mean session management. Example of anemia: it offers no way to back sessions by persistent storage.
You just load the new code and it works.
Really? What about threads that are busy processing requests when you load the new code, which may have different assumptions?
It seems like a better approach would be to queue up incoming requests, wait for existing requests to be handled, reload the code, and then resume processing requests.
Django may be the wrong tool for the job in your case. If so, I recommend exploring some of the more flexible python frameworks like pylons before making the switch to common lisp.