

Full-Stack Web Framework Written in Nim
source link: https://github.com/planety/prologue
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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
Recommend
-
15
What is ActiveJ? ActiveJ is a brand-new full-stack Java framework that can be used in diverse web, cloud, and microservices high-load scenarios. ActiveJ is a natively high-performance solution...
-
12
-
12
Hilla combines a Java back end built on Spring with a TypeScript front end built with Lit, a fast, reactive framewor...
-
11
The Fullstack Go Framework for Prolific Web Developers. Bud writes the boring code for you, helping you launch your website faster. Video Demo Watch a video demonstrating how to build a minimal HN clone in 15 minutes with Bu...
-
9
Remult What is Remult? Remult is a full-stack CRUD framework that uses your TypeScript model types to provide: Secure REST API (highly configurable) Type-sa...
-
10
-
12
Fastify DX is an upcoming full stack framework built on top of Fastify and Vite. In this early stage, we're working to define a
-
9
Ranked #2 for todayRemixNext gen full stack web frameworkRemix is a full stack web framework that lets you focus on the user interface...
-
9
Full-stack, no-declaration, framework to quickly and effortlessly create web applications with modern Java.
-
12
Introduction Web frameworks/libraries in Python provide a good foundation for developers who want to develop website applications by combining different features provided by these libraries in Python. Due to its simplici...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK