What's past is prologue.
Prologue is a Full-Stack Web Framework which is ideal for building elegant and high performance web services.
Now we are working on rewriting network infrastructure.
https://github.com/iocrate/netkit
Also working on http2.
https://github.com/nimlight/zest
You can read documentation in https://planety.github.io/prologue.
-
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)
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
# 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.
# 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.