Awesome
<div align="center"> <img height="128px" width="128px" src="https://raw.githubusercontent.com/HapticX/happyx/master/examples/website/src/happyx/public/icon.webp">Macro-oriented asynchronous full-stack web-framework written in Nim with ♥
</div>
Why HappyX? 💁♀️
HappyX is a web framework with asynchronous, macro-oriented, full stack support.
In HappyX you can write single page
, static site generation
and server side rendering
applications 💡
You can write Rest API with HappyX also 🔌
HappyX is very simple to use. Keep your peace of mind 🙂
Why Not Jester/Karax? 🤔
Jester and Karax have many features, but Jester is a backend web framework
, and Karax is a frontend web framework
. HappyX is a full-stack web framework
that combines the features of Jester and Karax and slightly improves them 🛠
With HappyX you mustn't learn new libraries/frameworks to switch between frontend
and backend
. You can switch between them easily using HappyX ✌
HappyX is macro-oriented web framework so you mustn't write a lot of code ✨
Features ⚡
- Multiple options for HTTP server! Happyx use
asynchttpserver
as default HTTP server (httpx
via-d:happyxHttpx
,httpbeast
via-d:happyxBeast
andmicrohttpserver
via-d:happyxMicro
as alternative HTTP servers). - Support
SPA
onJS
backend andSSR
on other backends. - Build HTML, CSS and pure JS with
buildHtml
,buildStyle
andbuildJs
macros. - Request models that supports
JSON
/XML
/Form-Data
/x-www-form-urlencoded
withmodel
macro. - Routing and powerful path params.
- Assignment path params with
pathParams
macro. - Powerful mounting sub-applications with
mount
macro. - Logging with
-d:debug
. - Automatic translate with
-d:hpxTranslate
or-d:translate
flags. - CLI tool for
creating
,serving
andbuilding
your projects. - Hot code reloading (only for
SPA
projects as of now). - Python bindings
- NodeJS bindings
Minimal Example 👩💻
<table height="180px"> <thead> <tr> <td align="center">SPA</td> <td align="center">SSR</td> </tr> </thead> <tbody> <tr> <td> <pre lang="nim"><code>import happyxappRoutes "app":
"/":
"Hello, world!"
</code></pre> </td><td> <pre lang="nim"><code>import happyx
serve "127.0.0.1", 5000:
"/":
"Hello, world!"
</code></pre> </td> <tr>
</tbody> </table>Get Started 👨🔬
Installing 📥
Nimble
nimble install happyx@#head
Nimble via Git
nimble install https://github.com/HapticX/happyx
PyPI
pip install happyx
Usage ▶
SSR
hpx create --name ssr_project --kind SSR
cd ssr_project/src
Main script will be able in /ssr_project/src/main.nim
Run 💻
HTTP Server | Flag |
---|---|
Default | no flags |
Httpx | -d:httpx |
MicroAsyncHttpServer | -d:micro |
HttpBeast | -d:beast |
SPA
hpx create --name spa_project --kind SPA --path-params
cd spa_project
Main script will be able in /spa_project/src/main.nim
Run 💻
Just run this command and see magic ✨
hpx dev --reload
Have A Question? 👀
Have A Nice Idea? 🍍
Open issue or contact us hapticx.company@gmail.com
Contributing 🌀
See Contributing.md for more information