happyx

Macro-oriented full-stack web-framework written with β™₯


Keywords
web, async, framework, frontend, backend, hapticx, happyx, full-stack, hacktoberfest, http-server, javascript, nim, open-source, python, server, spa, ssg, ssr, typescript, web-framework
License
MIT
Install
nimble install happyx@#v1.12.0

Documentation

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