Skip to content
Full-Stack Web Framework written in Nim.
Nim HTML
Branch: master
Clone or download

Latest commit

Latest commit f5975c0 Jun 9, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows add trigger Jun 8, 2020
docs change to testament Apr 29, 2020
examples some bugs in gc:arc Apr 19, 2020
src remove future stream and read file directly to socket to avoid memory… May 28, 2020
tests clean tests Jun 4, 2020
.travis.yml clean tests Jun 4, 2020
CONTRIBUTING.md minor Mar 19, 2020
LICENSE Update LICENSE Mar 11, 2020
README.md slogan Jun 5, 2020
azure-pipelines.yml clean tests Jun 4, 2020
config.nims clean tests Jun 4, 2020
mkdocs.yml minor Mar 6, 2020
prologue.nimble clean tests Jun 4, 2020

README.md

Build Status Build Status Build Status

License: BSD-3-Clause Version

Prologue

What's past is prologue.

Purpose

Prologue is a Full-Stack Web Framework which is ideal for building elegant and high performance web services.

Reduce magic. Reduce surprise.

Current Work

Now we are working on rewriting network infrastructure.

https://github.com/iocrate/netkit

Also working on http2.

https://github.com/nimlight/zest

Documentation

You can read documentation in https://planety.github.io/prologue.

Feature

  • Core

    • Base on httpbeast and asynchttpserver
    • Configure and Settings
    • Context
    • Param and Query Data
    • Form Data
    • Static Files
    • Middleware
    • Simple Route
    • Regex Route
    • CORS Response
    • Signing
    • Cookie
    • Session
    • Cache
    • Startup and Shutdown Events
    • URL Building
    • Data Validation
    • Exception Handler
    • Cross-Site Request Forgery
    • Cross-Site Scripting (XSS) Protection(Karax quote string automatically)
    • Clickjacking Protection
    • Authentication
    • I18n
  • Plugin

    • Minimal OpenApi support
    • Template(Using Karax Native)
    • Test Client(Using httpclient)

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

Usage

Hello World

# app.nim
import prologue


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


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

Run app.nim.Now the server is running at localhost:8080.

Another example

# app.nim
import prologue
import prologue/middlewares/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 = "StarLight")
var app = newApp(settings = settings, middlewares = @[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, @[debugRequestMiddleware()])
app.addRoute("/hello/{name}", helloName, HttpGet)
app.run()

Run app.nim.Now the server is running at localhost:8080.

More examples

Stars

Stargazers over time

You can’t perform that action at this time.