Because a clack request is represented as a plist, we can use pattern matching as the entry point to the clack app as a way to route request to their appropriate controllers
(defvar *app*
(lambda (env)
(match env
((plist :request-method :get
:request-uri uri)
(match uri
("/" (top-level))
((ppcre "/tag/(\\w+)/$" name) (tag-page name)))))))
Note: To start *app*
we pass it to clackup. ej (clack:clackup *app*)