Skip to content

HapticX/happyx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

20072a2 · Jan 29, 2025
Dec 10, 2024
Jan 17, 2025
Dec 21, 2024
Jan 29, 2025
Jan 29, 2025
May 3, 2024
Jan 13, 2024
Jan 13, 2024
Jul 21, 2023
Jul 24, 2024
Dec 9, 2023
Jul 24, 2024
Jul 24, 2024
Jan 24, 2025

Repository files navigation

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

Nim language Python language

JavaScript language TypeScript language

wakatime Testing

Documentation Tutorials

VS Code Plugin

Python Bindings NodeJS Bindings

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 models that supports JSON/XML/Form-Data/x-www-form-urlencoded 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).
  • Python bindings
  • NodeJS bindings

Minimal Example 👩‍💻

SPA SSR
import happyx
appRoutes "app":
  "/":
    "Hello, world!"
import happyx
serve "127.0.0.1", 5000:
  "/":
    "Hello, world!"

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? 👀

StackOverflow

Have A Nice Idea? 🍍

Open issue or contact us hapticx.company@gmail.com

Contributing 🌀

See Contributing.md for more information

Donate 💰

Tinkoff

Star History ✨

Star History Chart