All Projects → valum-framework → Valum

valum-framework / Valum

Licence: lgpl-3.0
Web micro-framework written in Vala

Programming Languages

vala
323 projects

Projects that are alternatives of or similar to Valum

Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (+36.45%)
Mutual labels:  asynchronous, web-framework
Falco
A functional-first toolkit for building brilliant ASP.NET Core applications using F#.
Stars: ✭ 214 (+5.42%)
Mutual labels:  asynchronous, web-framework
Catacumba
Asynchronous web toolkit for clojure built on top of Ratpack / Netty
Stars: ✭ 192 (-5.42%)
Mutual labels:  asynchronous, web-framework
Polyel-Framework
⚡️ Voltis Core: A PHP framework based on Swoole from the ground up
Stars: ✭ 22 (-89.16%)
Mutual labels:  asynchronous, web-framework
Bocadillo
(UNMAINTAINED) Fast, scalable and real-time capable web APIs for everyone
Stars: ✭ 401 (+97.54%)
Mutual labels:  asynchronous, web-framework
Ktor
Framework for quickly creating connected applications in Kotlin with minimal effort
Stars: ✭ 9,190 (+4427.09%)
Mutual labels:  asynchronous, web-framework
Index.py
An easy-to-use high-performance asynchronous web framework.
Stars: ✭ 158 (-22.17%)
Mutual labels:  asynchronous, web-framework
Asio samples
Examples (code samples) describing the construction of active objects on the top of Boost.Asio. A code-based guide for client/server creation with usage of active object pattern by means of Boost C++ Libraries.
Stars: ✭ 191 (-5.91%)
Mutual labels:  asynchronous
Paco
Small utility library for coroutine-driven asynchronous generic programming in Python 3.4+
Stars: ✭ 198 (-2.46%)
Mutual labels:  asynchronous
Play Ws
Standalone Play WS, an async HTTP client with fluent API
Stars: ✭ 190 (-6.4%)
Mutual labels:  asynchronous
Rocket
A web framework for Rust.
Stars: ✭ 15,760 (+7663.55%)
Mutual labels:  web-framework
Amber
A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance.
Stars: ✭ 2,345 (+1055.17%)
Mutual labels:  web-framework
Flamingo
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.
Stars: ✭ 198 (-2.46%)
Mutual labels:  web-framework
Node Rfc
Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js
Stars: ✭ 190 (-6.4%)
Mutual labels:  asynchronous
Aiomisc
aiomisc - miscellaneous utils for asyncio
Stars: ✭ 200 (-1.48%)
Mutual labels:  asynchronous
Aioquant
Asynchronous event I/O driven quantitative trading framework.
Stars: ✭ 188 (-7.39%)
Mutual labels:  asynchronous
Luv
Cross-platform asynchronous I/O and system calls
Stars: ✭ 203 (+0%)
Mutual labels:  asynchronous
Aiosmtplib
asyncio smtplib implementation
Stars: ✭ 200 (-1.48%)
Mutual labels:  asynchronous
Threadly
A library of tools to assist with safe concurrent java development. Providing unique priority based thread pools, and ways to distrbute threaded work safely.
Stars: ✭ 196 (-3.45%)
Mutual labels:  asynchronous
Social Platform Donut Frontend
This is an Open Source social Platform where people can interact with Open Source expertise around the globe and work on different projects
Stars: ✭ 195 (-3.94%)
Mutual labels:  web-framework

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 ()); /* 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"});

Installation

Docker

We maintain Docker images already setup with Valum and the latest LTS version of Ubuntu.

docker pull valum/valum

Bower

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.

Features

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 and OPTIONS
    • subrouting
    • status codes through error domains (i.e. throw new Redirection.PERMANENT ("http://example.com/");
    • context to hold states
  • 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

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 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!)

Discussions and help

You can get help with Valum from different sources:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].