Important things to watch out for
Template files must live in app/templates
Only that directory is scanned automatically by cweb build.
The render function must be in the header
Without char* template_name(params); inside <%header ... %>, no correct .c file can be generated.
External CSS only exists via <cstyle>
Normal <style> stays inline. A _css function is only generated from <cstyle> without setinline.
Always annotate numbers and special types explicitly
{x} without a type is only really suitable for string-like expressions.
Do not expect {...} interpolation in CSS/JS
Curly-brace interpolation is deliberately disabled there. use <% %> there (example: <% if (data->is_admin) { %>)
<cloop> is currently string-oriented
The loop element is always as const char * generated at the moment.
The CMake stamp is currently coarse-grained
Template changes are not tracked cleanly as dependencies. If in doubt, run cweb build explicitly again.
build/build.h is more of an auxiliary artifact than a core mechanism
Actual template usage in the example works through direct includes of the individual generated headers. The aggregated build/build.h is generated, but it is not strictly required for template rendering itself but recommend to include.