All Projects → puzzle-js → Puzzle Js

puzzle-js / Puzzle Js

Licence: mit
⚡ Micro frontend framework for scalable and blazing fast websites.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Puzzle Js

Catberry
Catberry is an isomorphic framework for building universal front-end apps using components, Flux architecture and progressive rendering.
Stars: ✭ 793 (+99.25%)
Mutual labels:  framework, isomorphic
Microservices Framework Benchmark
Raw benchmarks on throughput, latency and transfer of Hello World on popular microservices frameworks
Stars: ✭ 615 (+54.52%)
Mutual labels:  framework, microservice-framework
Awesome Nextjs
📔 📚 A curated list of awesome resources : books, videos, articles about using Next.js (A minimalistic framework for universal server-rendered React applications)
Stars: ✭ 6,812 (+1611.56%)
Mutual labels:  framework, isomorphic
Mam mol
$mol - fastest reactive micro-modular compact flexible lazy ui web framework.
Stars: ✭ 385 (-3.27%)
Mutual labels:  framework, isomorphic
Nuxt.js
The Intuitive Vue(2) Framework
Stars: ✭ 38,986 (+9695.48%)
Mutual labels:  framework, isomorphic
Devis
A microservices framework for Node.js
Stars: ✭ 72 (-81.91%)
Mutual labels:  framework, microservice-framework
Danf
Danf is a Node.js full-stack isomorphic OOP framework allowing to code the same way on both client and server sides. It helps you to make deep architectures and handle asynchronous flows in order to help in producing scalable, maintainable, testable and performant applications.
Stars: ✭ 58 (-85.43%)
Mutual labels:  framework, isomorphic
Celestite
Beautifully reactive, server-side rendered Svelte apps w/ a Crystal backend
Stars: ✭ 185 (-53.52%)
Mutual labels:  framework, isomorphic
Hyperapp
The tiny framework for building hypertext applications.
Stars: ✭ 18,724 (+4604.52%)
Mutual labels:  framework
Mip
[Deprecated] 请查看 mip2
Stars: ✭ 390 (-2.01%)
Mutual labels:  framework
Transmittable Thread Local
📌 TransmittableThreadLocal (TTL), the missing Java™ std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
Stars: ✭ 4,678 (+1075.38%)
Mutual labels:  framework
Qpc
QP/C real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 379 (-4.77%)
Mutual labels:  framework
Di
Dependency injection container in go (golang)
Stars: ✭ 390 (-2.01%)
Mutual labels:  framework
Libgdx
Desktop/Android/HTML5/iOS Java game development framework
Stars: ✭ 19,420 (+4779.4%)
Mutual labels:  framework
Bach
Bach Testing Framework
Stars: ✭ 392 (-1.51%)
Mutual labels:  framework
Raxx
Interface for HTTP webservers, frameworks and clients
Stars: ✭ 378 (-5.03%)
Mutual labels:  framework
Ergo
a Framework for creating mesh networks using technologies and design patterns of Erlang/OTP in Golang
Stars: ✭ 376 (-5.53%)
Mutual labels:  framework
Larapi
An API-friendly fork of Laravel. Authentication, error handling, resource filtering, sorting, pagination and much more included
Stars: ✭ 397 (-0.25%)
Mutual labels:  framework
Vugu
Vugu: A modern UI library for Go+WebAssembly (experimental)
Stars: ✭ 4,251 (+968.09%)
Mutual labels:  framework
Reactbundle
Client and Server-side React (React.js) rendering in a Symfony Bundle
Stars: ✭ 385 (-3.27%)
Mutual labels:  isomorphic

PuzzleJs Logo

PuzzleJs Framework

Micro frontend framework for scalable and blazing fast websites.

CircleCI npm npm Known Vulnerabilities codecov

New documentation and demo is under development

Live Demo - Repository

PuzzleJs makes it easy to create gateways and storefront projects that talk each other. It is inspired by Facebook's BigPipe, developed with lots of great features and passion.

Why?

The traditional model is very inefficient for modern websites.

  • Multiple teams working on the same code make everything harder to manage.
  • Time to first byte is as fast as the slowest api.
  • While backend is collecting data, user browser is wasting time waiting for first byte.
  • Features can't be online as soon as it is fully developed and tested, because other teams' features are not ready yet.
  • You can't use different technologies except from the existing one.
  • You can't scale specific process, because you are dependent to whole system.

Features

  • First Time To Byte PuzzleJs compiles html template into javascript function on compile time. This operation is fully independent from the request, so PuzzleJs can send the first chunk using this function.
  • Seo Friendly PuzzleJs is fully SEO friendly, as everything is prepared and rendered on server side.
  • Extensibility It is easy to extend PuzzleJs with your custom functions.
  • Easy You can easily create a gateway or storefront and connect them by providing a configuration file.
  • Independent You can use any technology on your gateways, PuzzleJs is fully independent from your technologies. ReactJs, Vue or anything else.
  • Scalable PuzzleJs can create storefront and gateways independent from each other. So you can easily scale single project on Dockerized environments.
  • Fail-Safe When your api required by a fragment is down, PuzzleJs guarantees other page fragments will be still working.

Getting Started

Checkout quick start guide for fastest implementation.

  1. Create one or more gateway projects.
  2. Create fragments and api on gateway projects.
  3. Create a storefront project and connect gateways with a config file.
  4. Create pages on storefront project and provide html files with desired fragments.

Please check the guide for full documentation.

How PuzzleJs works?

Compile time

  1. Gateways start exposing their fragments, api and gateway information.
  2. Storefront fetches registered gateways' information.
  3. Storefront downloads and caches required fragments, dependencies and assets.
  4. Storefront compiles html into in memory javascript function for fastest template rendering.

On Request

  1. Storefront sends a chunked response with the compiled function but doesn't close the connection. Users are now able to see your website with static contents and placeholders. It also sends backend requests to gateways to recieve rendered fragments.
  2. After any fragment is recieved from gateway, it sends it to browser as a chunk and replaces previously sended placeholder with the content.
  3. When all fragments are sent, PuzzleJs closes connection.

Documentation

Read the guide to familiarize yourself with how PuzzleJs works.

Changelog

Showcase

Contributions

Feel free to contribute to PuzzleJs, please read Contributions for detailed information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].