I started a project in Common Lisp again. Selective Share is a hosted secrets management service for server-side software. The project has a web app and a command line client, both of which are written in Common Lisp for the same reasons I previously stated in this post.

For the server software I decided to do the web development without a framework. There are full blown web frameworks available like Lucerne, Ningle and Caveman but they have far fewer users than the likes of Rails or Django, which means they are not nearly as matured and their development progress much slower.

When working without a framework one spends a lot of time selecting the libraries to use for each task. Common Lisp being what it is there is usually a choice of libraries for every task. This is great when you know what you need but it makes initial progress very slow when you are new to a particular field. For example, there are at least seven libraries for dealing with JSON, each with its own specialities and shortcomings.

This series of posts describe some of my design decisions and library selections. It should provide a springboard for frameworkless web development but may also be more generally helpful.

The topics covered are listed below, links will be added as the posts become available:

  • Project framework
  • Database
  • DB access
  • ORM / DAO
  • DB migrations
  • HTTP server
  • Request routing and middleware
  • JSON
  • Templating
  • Test framework
  • Logging
  • Session management
  • Password hashing
  • Storing configuration
  • Building binaries
  • CLI parameters