All Projects → americanexpress → One App

americanexpress / One App

Licence: apache-2.0
✨ a fresh, modular take on web application development

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to One App

Tinypart
TinyPart is an iOS modularization framework implemented by Ojective-C. It also supports URL-routing and inter-module communication. TinyPart是一个由Objective-C编写的面向协议的iOS模块化框架,同时它还支持URL路由和模块间通信机制。
Stars: ✭ 120 (-33.7%)
Mutual labels:  modular
Androidmodulararchiteture
✔️ Android组件化架构,支持组件代码完全隔离/组件循环依赖/便捷集成调试/快速接入,组件内基于 mvvm结构,组件提供高度服用的模块可直接使用,采用 wanAndroid api进行迭代开发。Android componentized architecture, support component code complete isolation / component circular dependency / convenient integrated debugging / fast access, component based mvvm structure, iterative development using wanAndroid api
Stars: ✭ 144 (-20.44%)
Mutual labels:  modular
Python Markdown Editor
Standalone editor for your markdown files
Stars: ✭ 164 (-9.39%)
Mutual labels:  modular
Navigator
Android Multi-module navigator, trying to find a way to navigate into a modularized android project
Stars: ✭ 131 (-27.62%)
Mutual labels:  modular
Puppertino
A CSS framework based on Human Guidelines from apple
Stars: ✭ 138 (-23.76%)
Mutual labels:  modular
Ai Blocks
A powerful and intuitive WYSIWYG interface that allows anyone to create Machine Learning models!
Stars: ✭ 1,818 (+904.42%)
Mutual labels:  modular
Libmodule
C simple and elegant implementation of an actor library
Stars: ✭ 118 (-34.81%)
Mutual labels:  modular
Shaden
🎧 A modular audio synthesizer.
Stars: ✭ 175 (-3.31%)
Mutual labels:  modular
Mirai
The core for Mirai Bot v4 [Deprecated]
Stars: ✭ 142 (-21.55%)
Mutual labels:  modular
Ignition Go
Bootstrap4 /Codeigniter 3 Modular (HMVC) App Building Framework - to build enterprise class web applications... Versions: CodeIgniter 3.1.9 AdminLTE 3.4 Bootstrap 4.5.0
Stars: ✭ 166 (-8.29%)
Mutual labels:  modular
Openjscad.org
JSCAD is an open source set of modular, browser and command line tools for creating parametric 2D and 3D designs with JavaScript code. It provides a quick, precise and reproducible method for generating 3D models, and is especially useful for 3D printing applications.
Stars: ✭ 1,851 (+922.65%)
Mutual labels:  modular
Http
An opinionated framework for scalable web 🌎
Stars: ✭ 136 (-24.86%)
Mutual labels:  modular
Mag.js
MagJS - Modular Application Glue
Stars: ✭ 157 (-13.26%)
Mutual labels:  modular
Concierge
Modular chat bot. (Karma + Sassy + Hubot) * (Discord + Facebook + Messenger + Slack + Skype + Telegram + Hipchat + ...) = Concierge
Stars: ✭ 121 (-33.15%)
Mutual labels:  modular
Spaceace
A fancy immutable storage library for JavaScript
Stars: ✭ 167 (-7.73%)
Mutual labels:  modular
Blazor.diagrams
A fully customizable and extensible all-purpose diagrams library for Blazor
Stars: ✭ 119 (-34.25%)
Mutual labels:  modular
Breko Hub
Babel React Koa Hot Universal Boilerplate
Stars: ✭ 145 (-19.89%)
Mutual labels:  modular
Mollenos
MollenOS/Vali is a modern operating system that is built with focus on abstraction and a modular design, allowing anyone to port it to any architecture. It currently targets the x86-32 and x86-64 platform.
Stars: ✭ 182 (+0.55%)
Mutual labels:  modular
Oxide
Old repository for the Oxide mod. See individual repositories for updates
Stars: ✭ 173 (-4.42%)
Mutual labels:  modular
Netcorecms
NetCoreCMS is a modular theme supported Content Management System developed using ASP.Net Core 2.0 MVC. Which is also usable as web application framework. This project is still under development. Please do not use before it's first release.
Stars: ✭ 165 (-8.84%)
Mutual labels:  modular

One App - One Amex

One App Docker Release One App Integration Tests One App Unit and Lint Tests

One App is a fresh take on web application development. It consists of a Node.js server that serves up a single page app built using React components and makes use of Holocron to allow for code splitting via independently developed, tested, and deployed Holocron Modules.

Our goal is to provide a web application framework for building fast, scalable, secure, and modular experiences. Leave the tooling to us and focus on what matters - delivering performant, maintainable experiences to your users.

While American Express has been using One App in production since 2016, this open source iteration of the framework is in a soft launch state. There will be a full documentation site forthcoming.

👩‍💻 Hiring 👨‍💻

Want to get paid for your contributions to one-app?

Send your resume to [email protected]

📖 Table of Contents

✨ Features

  • Modular design allowing for groups of UI components to be independently developed, tested, and deployed.
  • Easy configuration management.
  • Server side rendering as a first class citizen.
  • Built-in internationalization.
  • Built-in dynamic routing.

For a breakdown on these features and an architectural overview, take a look at our overview documentation

🚀‍ Quick Start

Create a Module with generator-one-app-module

The easiest way to do this is via npx (comes with npm versions 5.2.0 and above). This will use the One App Module Generator to generate a basic One App module.

Run the following command in the directory you want your module to live:

export NODE_ENV=development
npx -p yo -p @americanexpress/generator-one-app-module -- yo @americanexpress/one-app-module

Select the root module option when asked.

Docker is required for this next step

When the generator has finished:

cd ./[your-module-name]
npm start

Visit localhost:3000

Please follow the Getting Started guide for more information.

Clone and Install One App Locally

When you want to work on One App directly or are unable to use One App Runner

export NODE_ENV=development
git clone https://github.com/americanexpress/one-app.git
cd one-app
npm ci --no-optional

Serve local Module's to One App

When you are directly running the One App server locally and would like to load a local Module

At the root of your one-app repo, run:

npm run serve-module <path-to-local-module>
# e.g. npm run serve-module ../my-first-module

The serve-module command generates a static folder in the one-app root directory, containing a module-map.json and a modules folder with your bundled module code:

one-app/static
├── module-map.json
└── modules
    └── my-first-module
        └── 1.0.0
            ├── my-first-module.browser.js
            ├── my-first-module.browser.js.map
            ├── my-first-module.legacy.browser.js
            ├── my-first-module.legacy.browser.js.map
            ├── my-first-module.node.js
            └── my-first-module.node.js.map

Paired with the built-in one-app-dev-cdn library, you're able to utilize the Holocron Module Map while running your entire One App instance locally. No need to deploy and fetch remote assets from a CDN at this step.

The Root Module

The root module serves as the entry point for one-app to load an application.

          | ------ your application ------- |
* one-app -> root-module -> [other modules] |
          | ------------------------------- |

It is possible for your application to consist of only the root module, however most application will want to take advantage of code splitting using Holocron and have the root module load other modules. More on this in the Routing section in the API docs.

For a module to act as the root module the only requirements are:

Declaring a module as your Root Module and start One App:

Start up One App and declare your new module as the Root Module:

npm start -- --root-module-name=<module-name>
# e.g. npm start -- --root-module-name=my-first-module

This starts One App and makes it available at http://localhost:3000/ where you can see it in action!

Open another terminal window, run npm run watch:build in your module's directory and make some edits to the module. One App will pick up these changes and update the module bundles accordingly. When you reload your browser window, One App will be displaying your updated module.

📜 Documentation

Community

The One App community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects.

🏆 Contributing

We welcome Your interest in the American Express Open Source Community on Github. Any Contributor to any Open Source Project managed by the American Express Open Source Community must accept and sign an Agreement indicating agreement to the terms below. Except for the rights granted in this Agreement to American Express and to recipients of software distributed by American Express, You reserve all right, title, and interest, if any, in and to Your Contributions. Please fill out the Agreement.

Please see our CONTRIBUTING.md.

🗝️ License

Any contributions made under this project will be governed by the Apache License 2.0.

🗣️ Code of Conduct

This project adheres to the American Express Community Guidelines. By participating, you are expected to honor these guidelines.

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