Valum is a Web micro-framework entirely written in the Vala programming language.
using Valum;
using VSGI;
var app = new Router ();
app.use (basic ()); /* handle stuff like 404 errors and more */
app.get ("/", (req, res) => {
res.headers.set_content_type ("text/plain", null);
return res.extend_utf8 ("Hello world!");
});
Server.@new ("http", handler: app).run ({"app", "--address=0.0.0.0:3003", "--forks=4"});
We maintain Docker images already setup with Valum and the latest LTS version of Ubuntu.
docker pull valum/valum
If you use Meson, you can install Valum as a subproject using Bower:
bower install valum
For other installation procedures, head to the user documentation.
Valum has a two layer architecture: VSGI a middleware that abstract away various network protocols under a simple interface and Valum itself, a Web micro-framework that provide all the features needed for writing applications and services. In short it provides:
- powerful routing mechanism to write expressive Web services:
- helpers and flags (i.e.
Method.GET | Method.POST
) for common HTTP methods - scoping
- rule system supporting typed parameters, group, optional and wildcard
- regular expression with capture extraction
- automatic
HEAD
andOPTIONS
- subrouting
- status codes through error domains (i.e.
throw new Redirection.PERMANENT ("http://example.com/");
- context to hold states
- helpers and flags (i.e.
- middlewares for subdomains, server-sent events, content negotiation and much more
- VSGI, an abstraction layer for various protocols:
- fast, asynchronous and elegant
- streaming-first API
- listen on multiple interfaces (e.g. port, UNIX socket, file descriptor) with tight GIO integration
- support libsoup-2.4 built-in HTTP server, CGI, FastCGI and SCGI out of the box
- support plugin for custom server implementation
fork
to scale on multi-core architecture- cushion for parsing CLI, logging and running a Web application
- extensive documentation at docs.valum-framework.org
Valum is built by the community under the LGPL license, so anyone can use or contribute to the framework.
- fork repository
- pick one task from TODO.md or GitHub issues
- let us know what you will do (or attempt!)
- code
- make a pull request of your amazing changes
- let everyone enjoy :)
We use semantic versioning, so make sure that your changes
- does not alter api in bugfix release
- does not break api in minor release
- breaks api in major (we like it that way!)
You can get help with Valum from different sources:
- mailing list: vala-list.
- IRC channel: #vala and #valum at irc.gimp.net
- Google+ page for Vala
- issues on GitHub with the
question
label