AtlatestRenderedmarkdown
Readme
sigil-web
Web application framework for Sigil. Provides routing, middleware, static file serving, cookies, and a server-driven UI library for building interactive web applications.
Usage
Routing
(import (sigil web routes))
;; Define routes with pattern matching
(define app
(router
(route GET "/" home-handler)
(route GET "/users/:id" user-handler)
(route POST "/api/login" login-handler)
(route ANY "/static/*path" static-handler)))
;; Extract path parameters in handlers
(define (user-handler request)
(let ((id (path-param request "id")))
...))Middleware
(import (sigil web middleware))
;; Compose middleware around a handler
(define handler
(wrap-middleware app
(cors-middleware '("*"))
(content-type-middleware "text/html")
(not-found-middleware)))
;; Or use the chain style
(define handler
(chain app
(with-cors "*")
(with-content-type "text/html")
(with-not-found)))Static Files
(import (sigil web static))
;; Serve files from a directory with MIME type detection
(define static-handler (make-static-handler "public/"))Cookies
(import (sigil web cookies))
;; Read cookies from a request
(cookie-ref request "session_id")
;; Set a cookie on a response
(set-cookie response "session_id" "abc123"
'((path . "/") (http-only . #t)))Server-Driven UI
(import (sigil web ui))
;; Send SSE events for real-time updates
(sse-morph target: "#chat" mode: "append"
content: `(div (@ (class "msg")) "Hello!"))
;; Return HTML with merge headers
(sigil-ui-response target: "#results" mode: "inner"
content: `(ul ,@(map render-item items)))Live Development
(import (sigil web dev))
(define dev (make-dev-broadcast))
;; Wire (dev-sse-handler) into your router at /__dev/events
;; Then trigger browser refresh:
(dev-reload!)Modules
(sigil web routes)-- path-based routing with named and splat parameters(sigil web middleware)-- composable middleware (CORS, content-type, not-found)(sigil web static)-- static file serving with directory traversal protection(sigil web cookies)-- cookie parsing and setting(sigil web ui)-- server-driven hypermedia (SSE morphing, forms, modals, data tables)(sigil web dev)-- live development broadcast and error overlay
Dependencies
- sigil-stdlib
- sigil-http
- sigil-sxml
- sigil-nrepl
Build
sigil deps install
sigil build
sigil testLicense
BSD-3-Clause