(defparameter *app* (make-instance '<app>)) @route GET "/" (defun index () (with-layout (:title "Welcome to My site") (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.
As Caveman2 bases on Clack, your web application works on many web servers without changing any code.
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.
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.
Caveman2 is available on Quicklisp since November 11, 2013.
Not ready yet. See README.
- 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.
- Shelly - Script to run Common Lisp from shell.
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.