
### Macro-oriented asynchronous full-stack web-framework written in Nim with ♥

[](https://wakatime.com/badge/user/eaf11f95-5e2a-4b60-ae6a-38cd01ed317b/project/bbd13748-36e6-4383-ac40-9c4e72c060d1)
[](https://github.com/HapticX/happyx/actions/workflows/tests.yml)
[](https://hapticx.github.io/happyx/happyx.html)
[](https://github.com/HapticX/happyx-tutorial-series)

[](https://github.com/HapticX/hpx-vs-code)
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 and microhttpserver via -d:happyxMicro as alternative HTTP servers).
- Support
SPA on JS backend and SSR on other backends.
- Build HTML, CSS and pure JS with
buildHtml, buildStyle and buildJs macros.
- Request JSON models with
model 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 and building your projects.
- Hot code reloading (only for
SPA projects as of now).
Minimal Example 👩💻
| SPA |
SSR |
import happyx
appRoutes("app"):
"/":
"Hello, world!"
|
import happyx
serve("127.0.0.1", 5000):
"/":
"Hello, world!"
|
Get Started 👨🔬
Installing 📥
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 ✨
Have A Nice Idea? 🍍
Open issue or contact us hapticx.company@gmail.com
Contributing 🌀
See Contributing.md for more information
Star History ✨
