AtlatestRepositorysigil-web
1
# sigil-web3
Web application framework for [Sigil](https://codeberg.org/sigil/sigil). Provides routing, middleware, static file serving, cookies, and a server-driven UI library for building interactive web applications.5
## Usage7
### Routing9
```scheme10
(import (sigil web routes))12
;; Define routes with pattern matching13
(define app14
(router15
(route GET "/" home-handler)16
(route GET "/users/:id" user-handler)17
(route POST "/api/login" login-handler)18
(route ANY "/static/*path" static-handler)))20
;; Extract path parameters in handlers21
(define (user-handler request)22
(let ((id (path-param request "id")))23
...))24
```26
### Middleware28
```scheme29
(import (sigil web middleware))31
;; Compose middleware around a handler32
(define handler33
(wrap-middleware app34
(cors-middleware '("*"))35
(content-type-middleware "text/html")36
(not-found-middleware)))38
;; Or use the chain style39
(define handler40
(chain app41
(with-cors "*")42
(with-content-type "text/html")43
(with-not-found)))44
```46
### Static Files48
```scheme49
(import (sigil web static))51
;; Serve files from a directory with MIME type detection52
(define static-handler (make-static-handler "public/"))53
```55
### Cookies57
```scheme58
(import (sigil web cookies))60
;; Read cookies from a request61
(cookie-ref request "session_id")63
;; Set a cookie on a response64
(set-cookie response "session_id" "abc123"65
'((path . "/") (http-only . #t)))66
```68
### Server-Driven UI70
```scheme71
(import (sigil web ui))73
;; Send SSE events for real-time updates74
(sse-morph target: "#chat" mode: "append"75
content: `(div (@ (class "msg")) "Hello!"))77
;; Return HTML with merge headers78
(sigil-ui-response target: "#results" mode: "inner"79
content: `(ul ,@(map render-item items)))80
```82
### Live Development84
```scheme85
(import (sigil web dev))87
(define dev (make-dev-broadcast))88
;; Wire (dev-sse-handler) into your router at /__dev/events89
;; Then trigger browser refresh:90
(dev-reload!)91
```93
## Modules95
- `(sigil web routes)` -- path-based routing with named and splat parameters96
- `(sigil web middleware)` -- composable middleware (CORS, content-type, not-found)97
- `(sigil web static)` -- static file serving with directory traversal protection98
- `(sigil web cookies)` -- cookie parsing and setting99
- `(sigil web ui)` -- server-driven hypermedia (SSE morphing, forms, modals, data tables)100
- `(sigil web dev)` -- live development broadcast and error overlay102
## Dependencies104
- sigil-stdlib105
- sigil-http106
- sigil-sxml107
- sigil-nrepl109
## Build111
```sh112
sigil deps install113
sigil build114
sigil test115
```117
## License119
BSD-3-Clause