Prologue
Powerful and flexible web framework written in Nim
`Prologue` is a powerful and flexible web framework written in Nim. It is ideal for building elegant and high performance web services. The project is written primarily in Nim, distributed under the Apache License 2.0 license, first published in 2020. It has gained significant community traction with 1,340 stars and 53 forks on GitHub. Key topics include: async, async-web-applications, full-stack, hacktoberfest, http-framework.
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
<table class="tg"> <tbody> <tr> <td class="tg-0pky">Documentation</td> <td class="tg-c3ow" text-align="center" colspan="2"><a href="https://planety.github.io/prologue" target="_blank" rel="noopener noreferrer">Index Page</a></td> </tr> <tr> <td class="tg-c3ow">Core API</td> <td class="tg-0pky"><a href="https://planety.github.io/prologue/coreapi/theindex.html" target="_blank" rel="noopener noreferrer">Index Page</a></td> <td class="tg-0pky"><a href="https://planety.github.io/prologue/coreapi/application.html" target="_blank" rel="noopener noreferrer">Search Page</a></td> </tr> <tr> <td class="tg-c3ow">Full API</td> <td class="tg-0pky"><a href="https://planety.github.io/prologue/plugin/theindex.html" target="_blank" rel="noopener noreferrer">Index Page</a></td> <td class="tg-0pky"><a href="https://planety.github.io/prologue/plugin/plugin.html" target="_blank" rel="noopener noreferrer">Search Page</a></td> </tr> </tbody> </table>Welcome to write your own experience with Prologue at our wiki. To get familiar with the code structure, use DeepWiki:
Features
-
Core
- Configure and Settings
- Context
- Param and Query Data
- Form Data
- Static Files
- Middleware
- Powerful Routing System(based on nest)
- Cookie
- Startup and Shutdown Events
- URL Building
- Error Handler
-
Plugin
- I18n
- Basic Authentication
- Minimal OpenAPI support
- Websocket support
- Mocking test
- CORS Response
- Data Validation
- Session
- Cache
- Signing
- Command line tools
- Cross-Site Request Forgery
- Clickjacking Protection
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.
bashnimble install prologue
Chronos Backend
Prologue can use chronos instead of asyncdispatch via the kairos HTTP server:
nimrequires "prologue[kairos]"
Or without nimble, pass -d:asyncBackend=chronos to the compiler. No code changes needed — your handlers work with both backends.
Usages
Hello World
nimimport prologue proc hello*(ctx: Context) {.async.} = resp "<h1>Hello, Prologue!</h1>" let app = newApp() app.get("/", hello) 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
Contributors
Showing top 12 contributors by commit count.