[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: [ANN] Fullmoon - Fast and minimalistic web framework based on Redbean web server.
- From: Paul K <paul@...>
- Date: Thu, 16 Dec 2021 23:17:47 -0800
I'm pleased to announce Fullmoon [1] - a Lua web framework for Redbean
[2] (a portable, single-file distributable web server).
These are the features that Redbean provides:
- Single file deployment and distribution (Linux, Windows, and macOS)
- Efficient serving of static and gzip encoded assets
- Integrated SSL support (using MbedTLS) including SSL virtual hosting
- Integrated crypto hashing (SHA1, SHA224/256/384/512, and BLAKE2B256)
- Integrated password-hashing (using Argon2)
- HTTP/HTTPS client for external requests
- Ships with Lua 5.4 and SQLite 3.35
And this is what Fullmoon adds to it:
- Lightweight package (~500 LOC) with no external dependencies
- Simple and flexible routing with variables and custom filters
- Template engine with JSON support and efficient memory utilization
- Optimized execution with pre-compiled routes and lazy loaded methods
- Cookie/header generation and processing
- Custom 404 and other status pages
- Access to all Redbean features
I realize that there are already several web frameworks in Lua and in
fact started with integrating Lapis with Redbean (I can share what I
ended up with if someone is interested), but due to the differences
between nginx and Redbean models, this ended up being a bit of a dead
end that couldn't leverage everything that Redbean provides out of the
box (or at least not easily).
Here is a working examples that registers a template and a route that
returns a response:
local fm = require "fullmoon"
fm.setTemplate("hello", "Hello, {%& name %}")
fm.setRoute("/hello/:name", function(r)
return fm.serveContent("hello", {name = r.params.name})
end)
fm.run()
You may check the project documentation and let me know your
comments/feedback. Thank you.
Paul.
[1] https://github.com/pkulchenko/fullmoon
[2] https://redbean.dev/