1. Hunchentoot: The Bedrock Server
First, let's get one thing straight: Hunchentoot isn't a framework in the way Ruby on Rails or Django is. It’s a robust, multi-threaded, and highly reliable HTTP web server written in Common Lisp. Think of it as the foundational layer upon which many other Lisp web frameworks are built. You can absolutely write a web application using nothing but Hunchentoot, giving you total control over every request and response. It’s incredibly flexible, allowing you to handle raw sockets if you need to, but it also provides sensible abstractions for managing requests, cookies, and sessions. For developers who want to build from the ground up or who are creating a custom framework, starting with Hunchentoot is the standard, battle-tested approach in the Common Lisp world.
2. Caveman2: The Fast and Lean Micro-framework
If Hunchentoot is the foundation, Caveman2 is the sleek, minimalist structure you build on top of it. Inspired by fast micro-frameworks like Python's Flask or Ruby's Sinatra, Caveman2 is designed for getting a web application or API running quickly. It doesn’t make many assumptions about your project structure, database, or templating engine, giving you the freedom to choose your own tools. It provides the essentials: a powerful routing system, a project skeleton generator, and a clear environment for development versus production. Its primary goal is performance and flexibility, making it a perfect choice for building high-speed JSON APIs or as the core of a larger, more complex application where you want to hand-pick every component.
3. Ningle: The Sinatra-Like DSL
Following in the same minimalist spirit as Caveman2, Ningle offers an even more concise and expressive way to define web routes. Its syntax is heavily inspired by Sinatra, using a Domain-Specific Language (DSL) that feels incredibly natural for defining URL patterns and their corresponding actions. A simple Ningle app can be written in just a few lines, making it ideal for small web services, prototypes, or internal tools. It’s another excellent choice for API development, where the core logic revolves around mapping HTTP methods and URL paths to specific Lisp functions. While it can be built into a larger application, Ningle truly shines when you need something simple, clear, and fast without the overhead of a full-stack framework.
4. Djula: The Django-Style Templating Engine
A web application isn't just about handling requests; it's also about generating responses, usually in the form of HTML. Djula is the go-to solution for templating in Common Lisp. It’s a port of the popular Django template language, and it also bears a strong resemblance to Jinja2 from the Python world. This is a huge advantage, as its syntax is already familiar to a vast number of web developers. Djula includes all the features you'd expect: template inheritance, conditional logic, loops, and custom filters. It's not a framework itself but an essential library that pairs perfectly with frameworks like Caveman2 or a custom Hunchentoot setup to separate your application logic from your presentation layer.
5. Weblocks: The Component-Based Contender
Weblocks takes a completely different approach from the micro-frameworks. It’s a component-based, stateful framework that aims to make building interactive web applications feel more like developing a desktop GUI application. Instead of thinking in terms of stateless request-response cycles, you work with persistent components (widgets) that have their own state and actions. When a user interacts with a widget, Weblocks automatically knows how to update only that part of the page, simplifying the development of complex UIs. This approach can dramatically reduce the amount of boilerplate code needed for session management and client-side state handling, making it a powerful—if opinionated—choice for building rich, interactive single-page-style applications entirely in Common Lisp.
6. Snooze: The REST-Oriented Specialist
Designed with a laser focus on building correct and elegant RESTful APIs, Snooze is a framework that takes HTTP standards seriously. Instead of just mapping a URL to a function, Snooze encourages you to define resources and the HTTP methods (GET, POST, PUT, DELETE) that operate on them. It provides helpful utilities for handling HTTP status codes, content negotiation, and error conditions in a way that conforms to REST principles. If your primary goal is to build a clean, maintainable, and standards-compliant API for a frontend application or for other services to consume, Snooze provides the right level of abstraction to guide you toward a well-designed architecture.
7. Luminus: The Clojure Powerhouse
While most of this list focuses on Common Lisp, it’s impossible to discuss modern Lisp without mentioning Clojure, a Lisp dialect that runs on the Java Virtual Machine (JVM). Luminus is a popular Clojure web framework that provides a complete, cohesive template for building full-stack applications. It's more of a project template and set of best practices than a monolithic framework. When you create a new Luminus project, you can choose your preferred database, routing library, and frontend tooling. This gives you the best of both worlds: a structured starting point with the flexibility to adapt. By leveraging the JVM, you also get access to its massive ecosystem of libraries, making Luminus a pragmatic and powerful choice for enterprise-grade applications.











