What Wapp
Where https://wapp.tcl.tk/
Description A lightweight, secure web microframework in a single source file. Serves HTTP/1.1 directly, but supports CGI and SCGI as well. Aims for a small, easy-to-learn user API.
Prerequisites Tcl 8.6
Updated 2019-10-15
Author drh
License 2-clause BSD


fossil clone https://wapp.tcl.tk/ wapp.fossil
mkdir wapp
cd wapp
fossil open ../wapp.fossil
tclsh tests/test01.tcl

or see other alternatives at https://wapp.tcl.tk/index.html/doc/trunk/docs/download.md

See also


DEC And you get hold of it by......?

AM See the link above

DEC Which one?, No simple zip file then.. EMJ Again, see above, particularly the "other alternatives" link.

The following code excerpt results in no image being shown in browser. However, when I bring up the text view of the HTML (via ctrl-U on Chrome browser) and click the link from there, the image shows up. Why does the image not show up through wapp-default? 'Hello' prints as expected. Thanks in advance, Doug. (I replaced the real domain with example.com)

source <full_path>/lib/wapp/wapp.tcl

proc wapp-default {
   wapp-subst {
       <img src="http://www.example.com/IMG_1870.JPG" style="width:75%">
       <br><b>Hello</b> World!

dbohdan 2018-03-27: That's a consequence of Wapp's default Content Security Policy . (One of Wapp's design goals is to be secure by default , so the default policy is as strict as possible.) You can use curl -v and your Web browser's Console [L1 ] [L2 ] to debug the Content Security Policy.

Here is an example of how you can configure the Content Security Policy to allow images from a certain host:

#! /usr/bin/env tclsh
source wapp.tcl

proc wapp-default {} {
    wapp-content-security-policy \
        {default-src 'self'; img-src 'self' https://picsum.photos}
    wapp-subst {
        <!doctype html>
        <img src="https://picsum.photos/450/300" style="width:75%">
        <br><b>Hello</b> World!
wapp-start $::argv