(defparameter *app* (make-instance '<app>))
@route GET "/"
(defun index ()
(render #P"index.tmpl"))
Common Lisp, the most powerful language
Lisp is a language for doing what you've been told is impossible.
— Kent Pitman
Common Lisp is the standardized most powerful language with high-performance implementations in the world. It has lexical closures, multi-dispatch object system called CLOS, the metaobject protocol and macros.
As Caveman2 is written in portable Common Lisp, you don't need to compromise on its language.
Server independent
As Caveman2 bases on Clack, your web application works on many web servers without changing any code.
It is possible to run an application on Hunchentoot during development, and then use a faster backend like FastCGI for your production environment.
Database integration
Are you tired of hearing “lightweight” or “micro” web application framework with no database support?
Caveman2 adopts datafly as the default database library. Only after adding the database connection setting, it would be ready to use.
(use-package '(:myapp.db :sxql :datafly))
(defun search-adults ()
(with-connection (db)
(retrieve-all
(select :*
(from :person)
(where (:>= :age 20))))))
Datafly also has a powerful feature, “Model”. See the datafly documentation for advanced usage.
Fully extensible
Caveman2 is designed to not force anything to users. When you find a point you don't like in Caveman2, you can replace it by your favorites in most cases.
Do you want to use CL-WHO instead of Djula? Are you a Postmodern fan? You can use them with Caveman2.
Installation
Caveman2 is available on Quicklisp since November 11, 2013.
(ql:quickload :caveman2)
Documentation
Not ready yet. See README and API reference.
Example
Quickdocs.org is running with Caveman2 and its source code is available on GitHub.
See Also
- Clack - Web application environment.
- ningle - Super micro web application framework Caveman bases on.
- CL-EMB - HTML Templating engine.
- CL-DBI - Database independent interface library.
- SxQL - SQL builder library.
- datafly - Lightweight database library.
- Envy - Configuration switcher.
- Roswell - Common Lisp implementation manager.
Contribute
If you found a bug, report it on GitHub Issues. Of course, you can fork and send a pull request to me. Thank you for your contribution.