Parsley + Basil
Make websites the fun way
Parsley is a friendly little programming language. Basil is the web server it lives in. Write a file, refresh the browser, smile.
- no compiler
- no npm
- no TypeScript
- no build step
- one small binary
let Page = fn({title, users}) {
<html>
<body>
<h1>title</h1>
<ul>
for (user in users) {
<li><b>user.name</b> " — " user.email</li>
}
</ul>
</body>
</html>
}
let emailList <== CSV(@./email-list.csv)
<Page title="Active Users" users={emailList}/>
HTML is part of the language
That program up there is the whole thing — a CSV file becoming a web page, no template engine bolted on the side. And dates, money, file paths, and URLs are real types you can write literally:
@2024-01-15a date$99.99money@./config.jsona file pathhttps://herbaceous.neta URL
Try it
One line installs both basil (the server) and pars (the language and REPL):
curl -fsSL https://herbaceous.net/install.sh | shOr grab a binary for your platform from the releases page. macOS, Linux, and Windows; Apple Silicon and Intel.
Why?
Because building for the web in the early 2000s was fun, and somewhere between then and now we buried that fun under toolchains. Parsley and Basil are an attempt to dig it back up — with modern niceties like passkeys, full-text search, an image server, and a built-in SQL database, but without the ceremony.
Read the whole story — or skip straight to a working website in ten minutes.