All Projects → namecheap → Ilc

namecheap / Ilc

Licence: apache-2.0
Isomorphic Layout Composer - complete solution for Micro Frontends composition into SPA with SSR & i18n support

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ilc

Tailorx
A streaming layout service for front-end microservices used in Isomorphic Layout Composer
Stars: ✭ 27 (-91.23%)
Mutual labels:  microservices, frontend
Reactive Interaction Gateway
Create low-latency, interactive user experiences for stateless microservices.
Stars: ✭ 465 (+50.97%)
Mutual labels:  microservices, frontend
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (-59.09%)
Mutual labels:  microservices, frontend
Aofe.code
《前端架构:从入门到微前端》源码,code for Architecture of Frontend
Stars: ✭ 292 (-5.19%)
Mutual labels:  microservices, frontend
Todomvc Ddd Cqrs Eventsourcing
Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design
Stars: ✭ 134 (-56.49%)
Mutual labels:  microservices, frontend
Snuggsi
snuggsi ツ - Easy Custom Elements in ~1kB
Stars: ✭ 288 (-6.49%)
Mutual labels:  frontend
Surging
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service gove…
Stars: ✭ 3,088 (+902.6%)
Mutual labels:  microservices
Zheng
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
Stars: ✭ 16,163 (+5147.73%)
Mutual labels:  microservices
Telegram List
List of telegram groups, channels & bots // Список интересных групп, каналов и ботов телеграма // Список чатов для программистов
Stars: ✭ 3,362 (+991.56%)
Mutual labels:  frontend
Oruga
🐛 Oruga is a lightweight library of UI components without CSS framework dependency
Stars: ✭ 297 (-3.57%)
Mutual labels:  frontend
Fe Advance
前端进阶十日谈
Stars: ✭ 296 (-3.9%)
Mutual labels:  frontend
Cli
✨ A powerful CLI for the Create Go App project. Create a new production-ready project with backend, frontend and deploy automation by running one CLI command!
Stars: ✭ 292 (-5.19%)
Mutual labels:  frontend
Experimental React Like Framework
A new, experimental frontend for React inspired by SwiftUI. In development.
Stars: ✭ 290 (-5.84%)
Mutual labels:  frontend
Webpack Libs Optimizations
Using a library in your webpack project? Here’s how to optimize it
Stars: ✭ 3,187 (+934.74%)
Mutual labels:  frontend
Nodebook
📖 Livre publié aux Éditions Eyrolles • Première édition : Node.js v10 et npm v6.
Stars: ✭ 286 (-7.14%)
Mutual labels:  frontend
Memstate
In-memory event-sourced ACID-transactional distributed object graph engine for .NET Standard
Stars: ✭ 280 (-9.09%)
Mutual labels:  microservices
Go Micro
A pluggable Go framework for distributed systems development
Stars: ✭ 17,350 (+5533.12%)
Mutual labels:  microservices
Obvs
An observable microservice bus library for .NET, that wraps the underlying message transports in simple Rx based interfaces.
Stars: ✭ 290 (-5.84%)
Mutual labels:  microservices
Solution Architecture
Solution Architecture links, articles, books, video lessons, etc.
Stars: ✭ 289 (-6.17%)
Mutual labels:  microservices
Translate
阿里云翻译小组,为社区输出优质的技术文章。
Stars: ✭ 293 (-4.87%)
Mutual labels:  frontend

Isomorphic Layout Composer logo


Latest version Demo website Actions Status Docker Pulls Docker Pulls

Isomorphic Layout Composer (ILC) - layout service that compose a web page from fragment services. It supports client/server based page composition.

It's key difference and advantage against other solutions lays in the fact that it does page composition isomorphically. It means that page will be assembled at server side using apps that support server side rendering (SSR) and after that it will be hydrated at client side so all further navigation will be handled by client side rendering.

Such approach allows to combine advantages of the Micro Frontends, SPA & Server Side Rendering approaches.

This repository also contains an example of how you can create a front-end that is composed from multiple applications which work in concert and deliver unified experience.

Why do I need ILC?

Microservices get a lot of traction these days. They allow multiple teams to work independently from each other, choose their own technology stacks and establish their own release cycles. Unfortunately, frontend development hasn’t fully capitalized yet on the benefits that microservices offer. The common practice for building websites remains “the monolith”: a single frontend codebase that consumes multiple APIs.

What if we could have microservices on the frontend? This would allow frontend developers to work together with their backend counterparts on the same feature and independently deploy parts of the website — “fragments” such as Header, Product, and Footer. Bringing microservices to the frontend requires a layout service that composes a website out of fragments. ILC was developed to solve this need.

Key features

  • 📦 Based on single-spa & TailorX - battle tested solutions inside
  • 📱 Technology Agnostic - use it with React, Vue.js, Angular, etc...
  • ⚙️ Server Side Rendering support - key advantage over competitors
  • 🗄 Built-in registry - add new apps, pages or change configs and templates in few clicks. More info here.
  • ⚡️ Built for speed - server side part of the system adds just ~17ms of latency
  • 👨‍💻 Develop right at production - Doc
  • 🌐 Internationalization support - it is ready to serve your clients from any country. Doc, Demo with localized navbar
  • 📡 Other advanced features - Plugins, App Wrappers.
  • 💲 Baked by Namecheap - we use it internally and plan to evolve it together with community

🚀 Quick start

Check out demo website available online or go through the steps to spin it up locally:

  1. Clone this repository
  2. Run docker-compose up -d
  3. During first launch or shutdown only. Run docker-compose run registry npm run seed
  4. PROFIT 😎

More information about demo applications used in this quick start you can find here.

And don't miss the Step-By-Step lessons about apps development with ILC.

Architecture overview

ILC Architecture overview

Repo structure

|– ilc: code of the Isomorphic Layout Composer
|– registry: app that contains configuration used by ILC. Such as list of micro-fragments, routes, etc...

Further reading

🔌 Adapters

To conveniently connect various frameworks to ILC we rely on the ecosystem of the single-spa provided adapters. However sometimes we need to extend original ones to deliver better integration with ILC. Here are the list of the adapters that were forked & modified:

Notes

Why @portal/

We're using webpack (a static module bundler) to build each application for our micro-frontend approach. Webpack requires access to everything it needs to include in the bundle at build time. This means when an app that imports a service, for example planets importing the fetchWithCache service, webpack will try to bundle the service into the planets bundle. The built in way to avoid webpack doing this is webpack externals, using externals works really well but to avoid having to include a regex for each service I'm using the postfix to signal to webpack (and developers) that the import is another micro-app/service/front-end. The prefix isn't required if you would rather include a different postfix or none at all it should work, you'll just have to modify each webpack config for externals.

Code splitting

Code splitting is a complicated topic. I'm not going to dive into each facet of it within Webpack, see Webpacks docs for that.

In our project code splitting is further complicated because webpack's module format expects to load more modules from the website root, which will always fail in this project unless webpack is told where to load additional modules. Right now there is a single example of this, done in the people application.

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].