Skip to content

Build Status

License: BSD-3-Clause Version buy me a coffee

Prologue

What's past is prologue.

Purpose

Prologue is a powerful and flexible web framework written in Nim. It is ideal for building elegant and high performance web services.

Reduce magic. Reduce surprise.

Documentation

Documentation Index Page
Core API Index Page Search Page
Full API Index Page Search Page

Installation

First you should install Nim language which is an elegant and high performance language. Follow the instructions and set environment variables correctly.

Then you can use nimble command to install prologue.

nimble install prologue

Prologue also provides some extensions. You can use logue extension to install all of them. If you just want to install one of them, you can use logue extension module for example logue extension redis.

Usage

Hello World

# app.nim
import prologue

proc hello*(ctx: Context) {.async.} =
  resp "<h1>Hello, Prologue!</h1>"

let app = newApp()
app.addRoute("/", hello)
app.run()

Run app.nim ( nim c -r app.nim ). Now the server is running at localhost:8080.

Another example

# app.nim
import prologue
import prologue/middlewares


# Async Function
proc home*(ctx: Context) {.async.} =
  resp "<h1>Home</h1>"

proc helloName*(ctx: Context) {.async.} =
  resp "<h1>Hello, " & ctx.getPathParams("name", "Prologue") & "</h1>"

proc doRedirect*(ctx: Context) {.async.} =
  resp redirect("/hello")

proc login*(ctx: Context) {.async.} =
  resp loginPage()

proc do_login*(ctx: Context) {.async.} =
  resp redirect("/hello/Nim")


let settings = newSettings(appName = "Prologue")
var app = newApp(settings = settings)
app.use(debugRequestMiddleware())
app.addRoute("/", home, @[HttpGet, HttpPost])
app.addRoute("/home", home, HttpGet)
app.addRoute("/redirect", doRedirect, HttpGet)
app.addRoute("/login", login, HttpGet)
app.addRoute("/login", do_login, HttpPost, middlewares = @[debugRequestMiddleware()])
app.addRoute("/hello/{name}", helloName, HttpGet)
app.run()

Run app.nim (nim c -r app.nim). Now the server is running at localhost:8080.

More examples

Extensions

If you need more extensions, you can refer to awesome prologue and awesome nim.

Donations

Thanks for supporting me.

https://github.com/sponsors/planety

Stars

Stargazers over time