{"id":13765802,"url":"https://github.com/americanexpress/one-app","last_synced_at":"2025-04-12T18:45:28.442Z","repository":{"id":37270575,"uuid":"225661769","full_name":"americanexpress/one-app","owner":"americanexpress","description":"✨ a fresh, modular take on web application development","archived":false,"fork":false,"pushed_at":"2024-04-13T15:41:54.000Z","size":33795,"stargazers_count":290,"open_issues_count":16,"forks_count":81,"subscribers_count":28,"default_branch":"main","last_synced_at":"2024-04-13T21:56:18.121Z","etag":null,"topics":["holocron","holocron-modules","micro-ui","microfrontends","modular","one-app"],"latest_commit_sha":null,"homepage":"https://one-amex-docs.americanexpress.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/americanexpress.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-12-03T16:07:02.000Z","updated_at":"2024-04-16T14:54:04.218Z","dependencies_parsed_at":"2024-01-22T18:17:43.602Z","dependency_job_id":"66535b62-fd12-4675-a56f-762845e702ea","html_url":"https://github.com/americanexpress/one-app","commit_stats":{"total_commits":530,"total_committers":41,"mean_commits":"12.926829268292684","dds":0.7018867924528303,"last_synced_commit":"ef9d251af4388890673d64aed35e297e8086cf6c"},"previous_names":[],"tags_count":160,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/americanexpress%2Fone-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/americanexpress%2Fone-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/americanexpress%2Fone-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/americanexpress%2Fone-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/americanexpress","download_url":"https://codeload.github.com/americanexpress/one-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248617365,"owners_count":21134190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["holocron","holocron-modules","micro-ui","microfrontends","modular","one-app"],"created_at":"2024-08-03T16:00:46.302Z","updated_at":"2025-04-12T18:45:28.423Z","avatar_url":"https://github.com/americanexpress.png","language":"JavaScript","funding_links":[],"categories":["Tools"],"sub_categories":["Frameworks"],"readme":"[one-app-bundler]: https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-bundler\n[react]: http://reactjs.org/\n\n\u003ch1 align=\"center\"\u003e\n  \n  [One App is now InnerSource](https://github.com/americanexpress/one-app/issues/1393)\n\n  \u003chr/\u003e\n  \n  \u003cimg src='https://github.com/americanexpress/one-app/raw/main/one-app.png' alt=\"One App - One Amex\" width='50%'/\u003e\n\u003c/h1\u003e\n\nOne App is a fresh take on web application development. It consists of a\n[Node.js](https://nodejs.org) server that serves up a single page app built using [React] components\nand makes use of [Holocron](https://github.com/americanexpress/holocron) to allow for code splitting\nvia independently developed, tested, and deployed **Holocron Modules**.\n\nOur goal is to provide a web application framework for building fast, scalable, secure, and modular\nexperiences. Leave the tooling to us and focus on what matters - delivering performant, maintainable\nexperiences to your users.\n\n\u003e While American Express has been using One App in production since 2016, this open source iteration\n\u003e of the framework is in a soft launch state. There will be a full documentation site forthcoming.\n\n## 📖 Table of Contents\n\n- [Features](#-features)\n- [Quick Start](#-quick-start)\n- [Documentation](#-documentation)\n- [License](#%EF%B8%8F-license)\n- [Code Of Conduct](#%EF%B8%8F-code-of-conduct)\n- [Community](#community)\n- [Contributing](#-contributing)\n\n## ✨ Features\n\n- Modular design allowing for groups of UI components to be independently developed, tested, and\n  deployed.\n- Easy configuration management.\n- Server side rendering as a first class citizen.\n- Built-in internationalization.\n- Built-in dynamic routing.\n\nFor a breakdown on these features and an architectural overview, take a look at our\n[overview documentation](./docs/overview/README.md)\n\n## 🚀‍ Quick Start\n\n### Create a Module with [generator-one-app-module](https://github.com/americanexpress/one-app-cli/tree/main/packages/generator-one-app-module)\n\nThe easiest way to do this is via\n[`npx`](https://blog.npmjs.org/post/162869356040/introducing-npx-an-npm-package-runner) (comes with\n`npm` versions 5.2.0 and above). This will use the\n[One App Module Generator](https://github.com/americanexpress/one-app-cli/tree/main/packages/generator-one-app-module)\nto generate a basic One App module.\n\nRun the following command in the directory you want your module to live:\n\n```bash\nexport NODE_ENV=development\nnpx -p yo -p @americanexpress/generator-one-app-module -- yo @americanexpress/one-app-module\n```\n\nSelect the `root module` option when asked.\n\n\u003e [Docker](https://www.docker.com/) is required for this next step\n\nWhen the generator has finished:\n\n```bash\ncd ./[your-module-name]\nnpm start\n```\n\nVisit `localhost:3000`\n\nPlease follow the [Getting Started](./docs/overview/Getting-Started.md) guide for more information.\n\n### Clone and Install One App Locally\n\n\u003e When you want to work on One App directly or are unable to use\n\u003e [One App Runner](./docs/guides/One-App-Runner.md)\n\n```bash\nexport NODE_ENV=development\ngit clone https://github.com/americanexpress/one-app.git\ncd one-app\nnpm ci --no-optional\n```\n\n### Serve local Module's to One App\n\n\u003e When you are directly running the One App server locally and would like to load a local Module\n\nAt the root of your `one-app` repo, run:\n\n```bash\nnpm run serve-module \u003cpath-to-local-module\u003e\n# e.g. npm run serve-module ../my-first-module\n```\n\nThe `serve-module` command generates a `static` folder in the `one-app` root directory, containing a\n`module-map.json` and a `modules` folder with your bundled module code:\n\n```\none-app/static\n├── module-map.json\n└── modules\n    └── my-first-module\n        └── 1.0.0\n            ├── my-first-module.browser.js\n            ├── my-first-module.browser.js.map\n            ├── my-first-module.legacy.browser.js\n            ├── my-first-module.legacy.browser.js.map\n            ├── my-first-module.node.js\n            └── my-first-module.node.js.map\n```\n\nPaired with the built-in [one-app-dev-cdn](https://github.com/americanexpress/one-app-dev-cdn)\nlibrary, you're able to utilize the [Holocron Module Map](./docs/api/server/Module-Map-Schema.md)\nwhile running your entire One App instance locally. No need to deploy and fetch remote assets from a\nCDN at this step.\n\n### The Root Module\n\nThe root module serves as the entry point for one-app to load an application.\n\n```\n          | ------ your application ------- |\n* one-app -\u003e root-module -\u003e [other modules] |\n          | ------------------------------- |\n```\n\nIt is possible for your application to consist of only the root module, however most application\nwill want to take advantage of code splitting using\n[Holocron](https://github.com/americanexpress/holocron) and have the root module load other modules.\nMore on this in the [Routing](./docs/api/modules/Routing.md) section in the API docs.\n\nFor a module to act as the root module the only requirements are:\n\n- Returns a React component bundled with\n  [one-app-bundler](https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-bundler).\n- Provides a valid [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)\n  though the [appConfig](./docs/api/modules/App-Configuration.md) static.\n\n### Declaring a module as your Root Module and start One App:\n\nStart up One App and declare your new module as the [Root Module](#the-root-module):\n\n```bash\nnpm start -- --root-module-name=\u003cmodule-name\u003e\n# e.g. npm start -- --root-module-name=my-first-module\n```\n\nThis starts One App and makes it available at http://localhost:3000/ where you can see it in action!\n\nOpen another terminal window, run `npm run watch:build` in your module's directory and make some\nedits to the module. One App will pick up these changes and update the module bundles accordingly.\nWhen you reload your browser window, One App will be displaying your updated module.\n\n## 📜 Documentation\n\n- [One App Overview](./docs/overview/README.md)\n- [Getting Started](./docs/overview/Getting-Started.md)\n- [Guides](./docs/guides/README.md)\n- [API](./docs/api/README.md)\n- [Troubleshooting](./docs/troubleshooting/README.md)\n\n## Community\n\nThe One App community can be found on\n[GitHub Discussions](https://github.com/americanexpress/one-app/discussions), where you can ask\nquestions, voice ideas, and share your projects.\n\n## 🏆 Contributing\n\nWe welcome Your interest in the American Express Open Source Community on Github. Any Contributor to\nany Open Source Project managed by the American Express Open Source Community must accept and sign\nan Agreement indicating agreement to the terms below. Except for the rights granted in this\nAgreement to American Express and to recipients of software distributed by American Express, You\nreserve all right, title, and interest, if any, in and to Your Contributions. Please\n[fill out the Agreement](https://cla-assistant.io/americanexpress/one-app).\n\nPlease see our [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## 🗝️ License\n\nAny contributions made under this project will be governed by the\n[Apache License 2.0](./LICENSE.txt).\n\n## 🗣️ Code of Conduct\n\nThis project adheres to the [American Express Community Guidelines](./CODE_OF_CONDUCT.md). By\nparticipating, you are expected to honor these guidelines.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famericanexpress%2Fone-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famericanexpress%2Fone-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famericanexpress%2Fone-app/lists"}