Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Common Lisp
  3. Snooze

Snooze

Common Lisp

A RESTful URL router for Common Lisp that maps HTTP concepts directly to CLOS.

GitHubGitHub
227 stars25 forks0 contributors

What is Snooze?

Snooze is a URL router for Common Lisp specifically designed for building RESTful web services. It maps REST concepts directly to Common Lisp Object System (CLOS) constructs, allowing developers to define routes as CLOS methods and handle HTTP conditions as Lisp conditions. This approach eliminates the need for custom routing syntax or regular expressions, keeping development within the Common Lisp ecosystem.

Target Audience

Common Lisp developers building RESTful web services or APIs who want to leverage CLOS and standard Lisp tooling. It is particularly suited for those who prefer a tight integration between HTTP/REST semantics and Common Lisp's native features.

Value Proposition

Developers choose Snooze because it eliminates the need to learn a custom DSL or regex-based routing by using standard CLOS methods for route definitions. Its unique selling point is the deep integration with CLOS, enabling features like automatic URI generation, content-type dispatch via CLOS specializers, and seamless error handling using Lisp conditions.

Overview

Common Lisp RESTful web development

Use Cases

Best For

  • Building RESTful web services in Common Lisp with a CLOS-centric architecture.
  • Developing web APIs where routes need to be defined as standard Lisp functions without extra syntax.
  • Projects requiring automatic URI generation that matches route definitions for linking within the application.
  • Applications that need content-type negotiation and dispatch based on HTTP Accept and Content-Type headers.
  • Implementing custom error handling for HTTP conditions using Lisp's condition system.
  • Integrating with various Common Lisp web servers (e.g., Hunchentoot, Clack) via backend-agnostic adapters.

Not Ideal For

  • Projects not using Common Lisp or teams unfamiliar with CLOS concepts
  • Applications requiring built-in features like sessions, authentication, or database ORM out of the box
  • Teams preferring regex-based or DSL routing over native Lisp function definitions
  • Real-time or WebSocket-heavy applications, as Snooze focuses on RESTful routing without inherent support for other protocols

Pros & Cons

Pros

Native CLOS Integration

Maps REST resources to CLOS generic functions and HTTP verbs to method specializers, allowing routes to be traced, inspected with M-., or extended using standard Lisp tools, as highlighted in the rationale.

No Custom Syntax

Uses standard Lisp function definitions for routes without requiring regex or a domain-specific language, keeping development within familiar Lisp workflows, as emphasized in the README's design philosophy.

Automatic URI Generation

Provides path generator functions via defgenpath that create URIs perfectly matching route definitions, useful for internal linking, as demonstrated in the tutorial with lispdoc-path.

Content-Type Dispatch

Routes based on HTTP Accept and Content-Type headers via CLOS specializers, enabling clean handling of different media types, shown in examples with :text/* and :application/json.

Backend Agnosticism

Works with any Common Lisp web server through adapter functions like make-clack-app and make-hunchentoot-app, offering flexibility in server choice, as noted in the backend agnostic section.

Cons

Beta Stability Risks

The README explicitly states it's 'kinda BETA' with a disclaimer of warranty, indicating potential instability, breaking changes, or limited support for production use.

Configuration Overhead

Advanced URI manipulation requires implementing methods like uri-to-arguments and arguments-to-uri, adding complexity compared to simpler routing systems that handle conversions automatically.

Minimalist Feature Set

Focuses solely on routing without built-in middleware, templating, or database integration, necessitating additional libraries and setup for full-featured web applications.

Steep Learning Curve

Requires deep understanding of CLOS and Lisp conditions to leverage fully, which may be challenging for developers accustomed to more conventional web frameworks or new to Common Lisp.

Frequently Asked Questions

Quick Stats

Stars227
Forks25
Contributors0
Open Issues17
Last commit2 years ago
CreatedSince 2014

Tags

#http-server#api-routing#rest-api#web-framework#web-development#url-router#clos#common-lisp

Built With

C
CLOS
C
Common Lisp

Included in

Common Lisp2.9k
Auto-fetched 1 day ago

Related Projects

ningleningle

Super micro framework for Common Lisp

Stars303
Forks25
Last commit2 years ago
cl-rest-servercl-rest-server

Serve REST APIs from Common Lisp

Stars71
Forks8
Last commit1 year ago
radianceradiance

A web application environment and framework . zlib

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub