Story Map Cascade
The Story Map Cascade℠ app lets you combine narrative text with maps, images, and multimedia content in an engaging, full-screen scrolling experience. In a Cascade story, sections containing text and in-line media can be interspersed with "immersive" sections that fill the screen with your maps, 3D scenes, images, and videos. Cascade is ideal for making compelling, in-depth stories that are very easy for people to navigate.
- Feedback / support
- Customize the look and feel
- Developer guide
A Cascade story can be created from ArcGIS Online, from the Esri Story Maps website or from a Portal for ArcGIS deployment. The Cascade's data are stored in a Web Application Item. This repository provides the application source code for developers that want to customize the application.
First create your Cascade story in ArcGIS Online using the step-by-step tutorial. Once your story is ready, you have to find its ID in ArcGIS Online. The ID is a 32 character string that you will find in your web browser's address bar when you are viewing your story.
- Download the application
- Deploy the application on your webserver. See FAQ for details
- Edit index.html, find the configuration section on line 41 and paste in your application ID
- Navigate to index.html (e.g.,
If you are using Portal for ArcGIS, please follow the instructions at the end of
app/config.js to configure the application.
Feedback / support
We would love to hear from you!
- StoryMaps Website
- Story Maps community forum
- Let us know about your story
- Story Maps Developers' Corner
- ArcGIS Blog
When you contact us, don't hesitate to include a link to your application to make it easier for us to understand what you are working on.
What are the supported browsers?
Cascade stories are supported on Internet Explorer 11 and above, Chrome, Firefox, Safari and the most recent tablet and smartphone devices. During the beta period, Cascade authoring is only supported on Chrome and Safari on a desktop computer. We are working on supporting more browsers.
We actively test the application in all major browsers but if you experience difficulties, especially with the builder, we recommend that you use Chrome.
Tips for your content
We have a series of blog posts coming, stay tuned!
Can I keep my story private?
Yes, the regular ArcGIS Online security model applies. By default your story is private, you can share it through Cascade builder or ArcGIS Online. When you share your story through the Cascade builder, its maps and layers will also be shared if you own them or have privileges to share them. You will still need to make sure webscenes and embedded apps are accessible to your audience when you share, as they are not shared automatically with the story.
Can I use private web map or layer?
When the story is hosted in ArcGIS Online or Portal for ArcGIS, users that don't have access to the story or a webmap used in the story will be redirected to the ArcGIS Online sign-in page. It is not possible to display an authentication dialog in the application when it's hosted in ArcGIS Online.
When the story is hosted on your web server, by default an authentication dialog will appear inside the application. But we recommend that you configure the application to use OAuth. OAuth 2.0 based authentication is available for ArcGIS Online and Portal for ArcGIS users with developer or organizational accounts. Follow the following procedure to add and register an application to get an OAuth application ID. Once you have that application, open
index.html, locate the
configOptions section and fill the
If you are using secured services but don't want users to have to authenticate, you can use a proxy to store the username/password to be used, see Working with Proxy Services, and add a proxy rules to specify what services need to use the proxy by editing
Deploying a Cascade story requires use of ArcGIS Online or Portal for ArcGIS. The Cascade content must be created using the Cascade builder and will live in a Web Application Item.
Can I use the template without ArcGIS Online or Portal for ArcGIS?
This is not a supported use case at that time. Please let us know if you are interested by such a scenario. Cascade rely heavily on the Portal for ArcGIS API but it is doable to modify the application to support other scenarios.
Where is the data stored?
The Cascade data are stored in a Web Application Item in ArcGIS Online or Portal for ArcGIS. This include the narrative content, reference to the webmap(s), webscene(s), picture(s), video(s), web page(s) and the settings.
The image and videos that you include in your story using the builder are not copied in ArcGIS Online unless you upload them through the ArcGIS option. You have to make sure that those medias that are stored on other services are and will remain accessible to your audience.
Can I deploy Cascade on Portal for ArcGIS?
Cascade is not included in Portal for ArcGIS. We are planning to include it in Portal for ArcGIS 10.5.1.
Can I use the builder with the downloadable?
Yes, when the story is configured with an application ID, adding the URL parameter 'edit' will open the builder. You will be prompted for user authentication.
How to deploy the application on a web server?
If you are not familiar with web servers here are three solutions:
- Use a free hosting service like Dropbox, you may have to configure Dropbox to enable webpage hosting
- Use the web server that comes with your server Operating System. On Windows this is Internet Information Services (IIS), if you have a
C:\inetpub\wwwrootfolder on your computer, you should be able to access its content using
- On Windows or Mac OS, use a simple web server like Mongoose (not recommended for production)
If you are experiencing some rendering issues like improper symbols appearing instead of icons, you will have an extra configuration to perform. Some servers require to configure a new mime type to be able to serve Cascade fonts correctly. See the following links for more information:
Can I use a single deployment of Cascade for multiple stories?
Yes. If you have customized the application and deployed it on your server, you don't need to copy it multiple times, edit index.html and paste a different application ID for each story you want to publish.
index.html, locate the
configOptions section and fill the
authorizedOwners property with the ArcGIS Online or Portal for ArcGIS login of the owner(s) of the story you want to use. This makes it possible for the application to display any of stories created by the specified user(s) through an URL parameter.
Example of the same application displaying two stories:
In addition to the configuration offered by the builder, the file
app/config.js provides various additional settings. This is for example the place where you can override some settings like the list of Geocoder services to be used (changes override ArcGIS Online or your Organization default settings). See the documentation provided in that file for more details.
Customize the look and feel
Cascade doesn't yet offer a configuration experience to customize the application colors. Most of the look and feel customization can be done using the regular application download and including the css/html overrides directly into
style tag is already present for you in
index.html (search for
/* CUSTOM CSS RULES */).
viewer-min.js, ...). In addition to being hard to edit, this will make application update complex for you.
If you want to change the behavior of one functionality or want to add new one, follow the developer guide below.
For more infomation about using and customizing Esri's Storytelling Apps follow the Story Maps Developers' Corner.
Application life cycle
Cascade fires events that allow customization with loose integration. This mean that you don't need to understand the application internals to implement simple extensions.
To try those events, look in the file
In addition to the events described above, the story data, configuration and useful helpers functions can be accessed through the global variable
console.log("Story title", app.Controller.getStoryTitle()); console.log("Sections objects", app.data.sections); console.log("First section bookmark", app.data.sections.getBookmark()); console.log("First section text preview", app.data.sections.getPreviewText()); console.log("Sections display informations", app.display.sections); console.log("Second section vertical position (px)", app.display.sections.top); console.log("IDs of all the ArcGIS content in the story", app.Controller.getArcGISContent());
Clone the repository or download a copy of the repository as a zip file.
To build a production version of the application from the source code, you first need to install Node.js.
Then initialize the environment by running the following commands in the Cascade folder:
npm install –g grunt-cli
This will create a new
node-modules folder in your project root with all the tools required to build the application. If you have trouble running the second command, see this documentation on how to install grunt-cli locally.
How to use the application from the source code
- Make accessible the Cascade folder on a web server. Use your favorite server or run one with
grunt server, this will start a server on port
- If using a Portal for ArcGIS instance configure the sharing url
- Run the following command:
- Navigate to index.html using the URL parameter
appidto specify the web item to be loaded, e.g.:
configOptions.appidis not supported in development mode)
- If you want to use a non-public story or the builder you need to configure an
index.html. Follow the following procedure to add and register an application to get an OAuth application ID. Once you have that application, open
index.html, locate the
configOptionssection and fill the
How to build application from the source code
- Open a terminal and navigate to the Cascade folder
- Run the following command:
The deploy folder now contains the built application that you can deploy to your web server.
Issues building the application
The build script performs code validation through ESLint, you can disable those validations by editing Gruntfile.js and look for the following comments
/* Comment out to disable code linting */.
The application is structured as follows:
|src/||Main source code folder with index.html|
|src/app/config.js||App configuration file (loaded at execution time)|
|src/app/storymaps/common/||Modules common across storymaps templates (main module is Core.js)|
|src/app/storymaps/common/builder/||Builder modules (main module is Builder.js)|
|src/app/storymaps/tpl/||Cascade modules (build configuration files in the root)|
|src/app/storymaps/tpl/builder/||Builder modules (main module is BuilderView.js)|
|src/app/storymaps/tpl/core/||Core modules (main module is MainView.js)|
|src/app/storymaps/tpl/view/||UI components of the viewer and builder|
|src/app/storymaps/tpl/view/media/||Map, Scene, Image, Video, WebPage, Text|
|src/app/storymaps/tpl/view/section/||Cover, Sequence, Immersive and Title sections|
|src/app/storymaps/issue-checker/||Issue checking utility (finds errors in story)|
|src/lib/||Dependencies (included in the final app)|
|src/lib-build/||Dependencies used by the build (not included in final app)|
The main dependencies are:
|app/viewer-min.css||Compressed CSS loaded when accessing the story as a viewer|
|app/builder-min.css||Compressed CSS loaded when accessing the story as an author|
Depending on the URL parameters, index.html will load the corresponding files.
Find a bug or want to request a new feature? Please let us know by submitting an issue.
Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.
Copyright 2016 Esri
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
A copy of the license is available in the repository's LICENSE.txt file.
Some open-source components of this project are licensed under other License terms, see
src/lib/ folder for respective license files.