{"id":52037860,"url":"https://github.com/adobe/aem-sample-we-retail-journal","last_synced_at":"2026-08-01T21:03:42.149Z","repository":{"id":36407732,"uuid":"152134387","full_name":"adobe/aem-sample-we-retail-journal","owner":"adobe","description":"We.Retail Journal is a sample showcasing SPA Editing capabilities in AEM using React and Angular","archived":false,"fork":false,"pushed_at":"2024-04-08T12:49:33.000Z","size":2657,"stargazers_count":69,"open_issues_count":2,"forks_count":63,"subscribers_count":19,"default_branch":"master","last_synced_at":"2026-04-21T04:34:39.045Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CSS","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/adobe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-08T19:25:24.000Z","updated_at":"2026-03-20T17:10:51.000Z","dependencies_parsed_at":"2022-07-29T00:38:34.300Z","dependency_job_id":null,"html_url":"https://github.com/adobe/aem-sample-we-retail-journal","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/adobe/aem-sample-we-retail-journal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Faem-sample-we-retail-journal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Faem-sample-we-retail-journal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Faem-sample-we-retail-journal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Faem-sample-we-retail-journal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adobe","download_url":"https://codeload.github.com/adobe/aem-sample-we-retail-journal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Faem-sample-we-retail-journal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36170392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-01T02:00:05.789Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-08-01T21:03:41.540Z","updated_at":"2026-08-01T21:03:42.141Z","avatar_url":"https://github.com/adobe.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/adobe/aem-sample-we-retail-journal/tree/master.svg?style=svg)](https://circleci.com/gh/adobe/aem-sample-we-retail-journal/tree/master)\n\n# We.Retail Journal Single Page Applications\n\nContains We.Retail Journal SPAs for authoring on AEM.\n\n## Branching model\nThe current repository follows the [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) branching model design.\n\nGo to the [master](../../tree/master) branch to access the latest public state of the project.\n\n## Modules\n\nThis project contains:\n\n* `content`: Content Structure including /apps components and client libraries as well the /content specific sites and pages. The client library will be generated while building the SPAs.\n* `react-app`: We.Retail Journal React application.\n\n\n\n## Usage of online fonts\n\nThe application is using online Fonts included via Typekit.\n\nYou would either need a network connection or have the fonts installed on your computer:\n* Proxima Nova Regular\n* Bagatela Light\n\n## Build\n\nThe project has the following minimal requirements:\n* Java SE Development Kit 8 or newer\n* Apache Maven 3.3.1 or newer\n\n## Build all modules\n\nTo build all the modules run in the project root directory the following command with Maven 3:\n\n    mvn clean install\n\n### Module build order\n\nThe `react-app` module builds and transpiles the es6 javascript source code into a browser friendly 2015 version. \nIt then creates a client library and copy the built javascript files in the `content` module. \nRun your Maven command lines from the root of the project to respect the module build ordering and ensure the latest version of the `react-app` module is used.   \n\nFor ease of build and installation the following profiles are provided:\n\n * ``autoInstallPackage`` - installs the package/bundle to an existing AEM author instance\n * ``autoInstallPackagePublish`` - installs the package/bundle to an existing AEM publish instance\n * ``autoInstallSinglePackage`` - package all the dependencies into a single content package and install everything to an existing AEM author instance\n * ``autoInstallSinglePackagePublish`` - package all the dependencies into a single content package and install everything to an existing AEM publish instance\n \n### UberJar\n \nThis project relies on the unobfuscated AEM 6.3 cq-quickstart. This is publicly available on https://repo.adobe.com\n \nFor more details about the UberJar please head over to the\n[How to Build AEM Projects using Apache Maven](https://docs.adobe.com/docs/en/aem/6-2/develop/dev-tools/ht-projects-maven.html#What%20is%20the%20UberJar?)\ndocumentation page.\n \n### Install everything\n \nYou can install everything needed to use the components on your running AEM instance by issuing the following command in the top level folder of the project:\n \n    mvn clean install -PautoInstallSinglePackage\n\nYou can also choose build environment by using setting `build.environment` property (format: colon + name):\n\n    mvn clean install -PautoInstallSinglePackage -Dbuild.environment=\":production\"\n\nAvailable environments:\n\n* empty string (default): non-production / development\n* `production`: production\n\n### Install local version of NPM sub-modules\n\nYou can install local version of the NPM modules `@adobe/cq-spa-page-model-manager` and `@adobe/cq-spa-component-mapping` by changing a few lines in the `react-app` module's POM. By default, the released versions of those modules are transitively installed by `@adobe/cq-react-editable-components` but it is possible to override this and install local development versions instead.\n\nFirst, build and link the local NPM modules you want to use by running (for instance, in your local checkout of `@adobe/cq-spa-page-model-manager`):\n    \n    npm run build \u0026\u0026 npm link\n    \nThen use the `npmLinkDeps` profile when installing the project's bundles and packages such as:\n\n    mvn clean install -PautoInstallPackage,npmLinkDeps\n \n### Individual packages/bundles\n \nYou can install individual packages/bundles by issuing the following command in the top level folder of the project:\n \n    mvn clean install -PautoInstallPackage -pl \u003cproject_name(s)\u003e -am\n \nPlease note that\n\n * ``-pl/-projects`` option specifies the list of projects that you want to install\n * ``-am/-also-make`` options specifies that dependencies should also be built\n\n ## Guidelines for SPA development in AEM\n\nDeveloping single page applications on AEM assumes that the front-end developer observes standard best practices when creating an SPA. If as a front end developer you follow these general best practices as well as few AEM-specific principles, your SPA will be functional with AEM and its content-authoring capabilities.\n\n* *Portability* - As with any components, the components should be built to be as portable as possible. The SPA should be built with portable and reusable components.\n* *AEM Drives Site Structure* - The front end developer creates components and owns their internal structure, but relies on AEM to define the content structure of the site.\n* *Dynamic Rendering* - All rendering should be dynamic.\n* *Dynamic Routing* - The SPA is responsible for the routing and AEM listens to it and fetches based on it. Any routing should be dynamic as well.\n\nIf you keep these principles in mind as you develop your SPA, it will be as flexible and as future proof as possible while enabling all supported AEM authoring functionality. \n\nFor further details about SPA development on AEM including guideliens, walkthroughs, best practices and examples, see the [AEM Developer Documentation](https://adobe.com/go/aem-dev-spa).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Faem-sample-we-retail-journal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadobe%2Faem-sample-we-retail-journal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Faem-sample-we-retail-journal/lists"}