Web micro-framework written in Vala
Vala

README.md

Valum web micro-framework

Build Status Documentation Status codecov.io

Valum is a web micro-framework entirely written in the Vala programming language.

using Valum;
using VSGI;

var app = new Router ();

app.use (basic ());

app.get ("/", (req, res) => {
    res.headers.set_content_type ("text/plain", null);
    return res.extend_utf8 ("Hello world!");
});

Server.new_with_application ("http", "org.valum.example.App", app.handle).run ({"app", "--forks=4"});

Installation

The installation process is fully documented in the user documentation.

Features

  • streaming-first API for minimal overhead with support for async I/O through GIO
  • 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 and OPTIONS
    • subrouting
    • status codes through error domains (i.e. throw new Redirection.PERMANENT ("http://example.com/");
    • filtering by composition
    • context to hold states
  • middlewares for subdomains, server-sent events, content negotiation and much more
  • written upon VSGI so that you can deploy using libsoup-2.4 built-in HTTP server, CGI, FastCGI or SCGI
  • support plugin for custom server implementation
  • support for fork to scale on multi-core architecture
  • extensively documented at docs.valum-framework.org

Contributing

Valum is built by the community under the LGPL license, so anyone can use or contribute to the framework.

  1. fork repository
  2. pick one task from TODO.md or GitHub issues
  3. let us know what you will do (or attempt!)
  4. code
  5. make a pull request of your amazing changes
  6. let everyone enjoy :)

We use semantic versionning, 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!)

Discussions and help

You can get help with Valum from different sources: