HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
williamcotton
webdsl
C2025–2025
williamcotton / webdsl

webdsl

WebDSL – A fast C-based DSL for building web apps with SQL, Lua and jq

3Distinct people
13Mentions
0Explicit recommenders
21GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

WebDSL – A fast C-based DSL for building web apps with SQL, Lua and jq

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week13 dated mentions

Observed mentions: 2025-01-26 12:48:39 UTC to 2025-03-20 15:07:35 UTC. Weeks start Monday, UTC.

02462025-01-20 00:00:00 UTC to 2025-01-27 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 202025-01-27 00:00:00 UTC to 2025-02-03 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-02-03 00:00:00 UTC to 2025-02-10 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-02-10 00:00:00 UTC to 2025-02-17 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-02-17 00:00:00 UTC to 2025-02-24 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsFeb 172025-02-24 00:00:00 UTC to 2025-03-03 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2025-03-03 00:00:00 UTC to 2025-03-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-10 00:00:00 UTC to 2025-03-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-17 00:00:00 UTC to 2025-03-24 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMar 17

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 202025-01-20 00:00:00 UTC2025-01-27 00:00:00 UTC101
Jan 272025-01-27 00:00:00 UTC2025-02-03 00:00:00 UTC110
Feb 32025-02-03 00:00:00 UTC2025-02-10 00:00:00 UTC101
Feb 102025-02-10 00:00:00 UTC2025-02-17 00:00:00 UTC202
Feb 172025-02-17 00:00:00 UTC2025-02-24 00:00:00 UTC101
Feb 242025-02-24 00:00:00 UTC2025-03-03 00:00:00 UTC606
Mar 32025-03-03 00:00:00 UTC2025-03-10 00:00:00 UTC000
Mar 102025-03-10 00:00:00 UTC2025-03-17 00:00:00 UTC000
Mar 172025-03-17 00:00:00 UTC2025-03-24 00:00:00 UTC101

What Hacker News says

13 sources
Maybe be, after all - I dont write web servers (btw, the PQ and JQ libraries doesnt seem to use the arena allocator, which makes the whole proposition a bit dubious, but lets say that its me being picky). What I meant was, that IMO the code is not very robust when dealing with memory allocations: 1. The "string builder" for example silently ignores allocation failures and just happily returns - https://github.com/williamcotton/webdsl/blob/92762fb724a9035... 2. In what seems most of the places, the code simply doesnt check for allocation failures, which leads to overruns (just couple of examples): https://github.com/williamcotton/webdsl/blob/92762fb724a9035... https://github.com/williamcotton/webdsl/blob/92762fb724a9035...
In Hallucinations in code are the least dangerous form of LLM mistakes
Some free code review of the first file I clicked into - https://github.com/williamcotton/webdsl/blob/92762fb724a9035... among other places should probably be doing the conditional "lexer->line++"; thing. Quite a weird decision to force all code paths to manually do that whenever a newline char is encountered. Could've at least made a "advance_maybe_newline(lexer);" or so. But I guess LLMs give you copy-paste garbage. Even the article of this thread says: > Just because code looks good and runs without errors doesn’t mean it’s actually doing the right thing.
In Hallucinations in code are the least dangerous form of LLM mistakes
What do you mean by "harder stuff"? What about an experimental DSL written in C with a recursive descent parser and a web server runtime that includes Lua, jq, a Postgres connection pool, mustache templates, request-based memory arena, database migrations and much more? 11,000+ lines of code with ~90% written by Claude in Cursor Composer. https://github.com/williamcotton/webdsl Frankly us "fanbois" are just a little sick and tired of being told that we must be terrible developers working on simple toys if we find any value from these tools!
In Hallucinations in code are the least dangerous form of LLM mistakes
But why follow the wrong abstraction and why try to build something that you don't fundamentally understand? I've built some rather complex systems: Guish, a bi-directional CLI/GUI for constructing and executing Unix pipelines: https://github.com/williamcotton/guish WebDSL, fast C-based pipeline-driven DSL for building web apps with SQL, Lua and jq: https://github.com/williamcotton/webdsl Search Input Query, a search input query parser and React component: https://github.com/williamcotton/search-input-query
In My LLM codegen workflow
Do your snippets write this kind of boilerplate? https://github.com/williamcotton/webdsl/commit/34862739f6fe9... I may have tweaked a couple of things in that (and refactored a hell of a lot since) but here's a Python script that I definitely did not write a single line of code: https://github.com/williamcotton/webdsl/blob/main/tools/gene... Embedding things into C is nothing new of course but I spent about 45 seconds getting the solution I needed: https://github.com/williamcotton/webdsl/blob/main/src/server... All of this is just boilerplate. I spent most of my mental energies with this project on the grammar, the memory architecture, and fitting all of the pieces together. Cursor and Claude did most of the typing. Keep in mind I'm iterating over the grammar and making rather large changes in the runtime all the while: https://github.com
Read the rest
/williamcotton/webdsl/commit/54efbb50c2e95... FWIW, pipelines ended up being implemented like this: https://github.com/williamcotton/webdsl/blob/main/src/server... And used in this very simple example like: website { port 3445 database "postgresql://localhost/express-test" api { route "/api/v1/team" method "GET" pipeline { jq { { sqlParams: [.query.id] } } sql { SELECT * FROM teams WHERE id = $1 } jq { { data: (.data[0].rows | map({id: .id, name: .name})) } } } } }
In No AI December Reflections
I took this approach with this: https://github.com/williamcotton/webdsl I didn’t even put that much effort into defining the grammar, I just sort of let my fancy take flight. Which is a wild headspace to be in when writing a DSL in C with a web runtime with jq, Lua, GitHub OAuth and more all built in into the language itself. It took some guidance of course and I’m well versed enough in C to have orchestrated the memory arenas and overall architecture but I sure has hell didn’t actually type more than 5% of the code. Cursor Composer in agent mode with Claude Sonnet 3.5 has let me take on some very experimental endeavors.
In Vibe Coding

Show HN: WebDSL – A fast C-based DSL for building web apps with SQL, Lua and jq

WebDSL is an experimental domain-specific language and server implementation for building web applications. The language runtime includes an integrated PostgreSQL client, Lua and jq interpreters, mustache renderer, GitHub OAuth and more. It provides a mainly declarative way to define websites with pages and API endpoints. It aims to reduce boilerplate by having a very opinionated set of features curated especially for database driven web applications. For example, user login, authentication and sessions are all built directly into the language runtime.
1 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.