
### 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 ✨
