Complete Platform & Stack

Epicenter goes far beyond just publishing your analysis or simulation online. Epicenter’s online hosting gives you a scalable web platform from which to serve your web-based analytics application, data visualization, or simulation. Project files — model and user interface — are hosted on our secure, load-balanced, auto-scaling servers. You can choose to put your data on our servers as well, or keep that in-house. You always get dedicated computing power, and you can customize the amount of these dedicated compute units on a per-project basis. With a subscription to Epicenter, we provide all the load-balancing and scaling for you, so you get the best performance, seamlessly, every time.
On top of this infrastructure, you can use Epicenter to build the user interface for your model. Epicenter provides a complete stack including both REST-based and JavaScript APIs, plus a template-based Interface Builder tool that generates HTML and JavaScript. And Epicenter is optimized for use with Node.js server-side scripting, further helping you build fast, scalable applications. All server-side scripts are available immediately after being uploaded and are completely sandboxed between different projects within your account. You can choose at which level of this complete stack you want to develop, based on your own expertise and which options make the most sense for you and your project.
  • Interface Builder
  • Flow.js
  • Epicenter.js
  • Auth API
    • Run API
    • Data API
  • Model APIs
Book Image

Read more about the Epicenter stack in our documentation.

Mathematical Modeling Tools

The core of most Forio Epicenter projects is a model, which encapsulates the business logic of the project. It might be a system dynamics model, a Monte Carlo simulation, a linear optimization, a machine learning algorithm, or something else.

You can create your Forio Epicenter models in several common languages:

  • Python: a powerful, fast, and flexible general-purpose programming language.
  • R: a programming language for statistical computing and data analysis.
  • Vensim: a specialized simulation tool supporting system dynamics models.
  • Powersim: a specialized simulation tool supporting system dynamics models and related analyses.
  • Forio SimLang: a specialized simulation language developed at Forio and familiar to users of the previous generation of our platform, Forio Simulate.
  • Julia: a high performance technical computing language.

Models of all types integrate automatically with Epicenter’s Interface Builder and complete stack of APIs. You can set parameters, perform calculations, run scenarios, and retrieve results directly from a web browser or mobile client. Model results are automatically saved to a server-side database allowing model interactions to be compared, shared, and archived.

Book Image

Read more about writing your model in our documentation.

Interface Builder

Epicenter’s Interface Builder is an amazingly fast and simple way to create beautiful modern interfaces for your model.

Select from a library of templates and themes to customize your interface for your project and audience. Add charts, graphs, tables, and images to visually illustrate your model, then publish it to the world. Projects created with the Interface Builder are viewable on multiple screen sizes making them even easier to share.

The code generated by the Interface Builder is editable, if you who want to get your feet wet with modern web technologies like HTML, CSS, and JavaScript. Start with an functional template and edit until the UI is perfectly on brand.

Book Image

Read more about how to use the Interface Builder in our documentation.

Web Components for Linking Model and UI

One of the key elements of Epicenter's complete platform and stack is Flow.js, a JavaScript library we developed to complement Epicenter. Flow.js allows you to connect model variables and functions by adding data attributes to DOM elements. This provides a data binding between variables and methods in your project's model and HTML elements in your project's user interface. User input is sent to the model immediately, and model variables displayed in the UI automatically update as the model changes.


<label for="revenue">Revenue</label>
  <input data-f-bind="revenue" type="text">
<label for="cost">Cost</label>
  <input data-f-bind="cost" type="text">
<label>Profit</label><div data-f-bind="profit"></div>
<button data-f-on-click="calculate_profit">Calculate</button>
<button data-f-on-click="reset">Reset</button>
        

Decoupling your model from your user interface in this way is beneficial as a general design principle, and can be especially helpful for larger development teams where the UI developers and the modelers are different people.

Get the Flow Inspector

Flow Inspector is an add-on component of Flow.js that allows you to easily determine which model variables are being used where and in which Flow.js (`data-f-`) attributes in your user interface.

It's a great way to help you understand the connection between your UI and your model. It can also help to debug problems in your UI, whether you're a front-end developer or a modeler.


If you're using a browser that supports it, you should be able to click and drag the bookmarklet below to your bookmarks or favorites bar.

Book Image

Learn about the Flow Inspector and Flow.js in our documentation.

Epicenter.js

Another of the key elements of Epicenter's complete platform and stack is Epicenter.js, a JavaScript library we developed to complement Epicenter. This library abstracts the underlying Epicenter REST-based APIs into a set of services and utilities.

If you are comfortable with JavaScript, the Epicenter.js library is an easy way to connect your project's model, data, and user interface. In contrast to Flow.js, which allows you to connect model variables and functions by adding data attributes to DOM elements, Epicenter.js makes it easy to write custom JavaScript while accessing the underlying model through a few simple adapters. Epicenter.js also provides support for features commonly required by multiplayer competitive or collaborative simulations, such as sharing sets of model interactions between end users, and enabling chat or other notifications between end users.

Book Image

Read more about Epicenter.js in our documentation.

Multiplayer Simulations

Many projects require end users to work together — either collaboratively, competitively, or both.

For these multiplayer games, you typically want multiple end users to share the same set of interactions and work within a common state. Epicenter allows you to create 'worlds' to handle such cases. Support for this is built in to Epicenter, accessible with a few clicks: everything from creating groups, end users, and facilitators, to automatically assigning users to roles within their worlds, to separately tracking the state of each world.

And unlike elaborate, one-off custom development, Epicenter is a platform — so all these features are built in, ready for immediate use in any or all of your projects.

Collaborative Development & Role-Based Security

It takes a diverse set of skills to produce a professional analytics application or training simulation. Team members collaborate to bring an application to life: JavaScript developers, data scientists, user interface designers, QA testers, technical support representatives, and clients.

Team members each have an Epicenter account (so can create their own personal projects), and can collaborate on projects based on the subscription plan selected. During collaboration on these team projects, each team member can be restricted to particular roles as needed — so everyone can stay focused on their work, with access to view or edit only relevant parts of the project.

End users can play with projects through the user interfaces created by team members, but do not have project authoring privileges. End users are organized into groups, for example based on a seminar, class, or department. Facilitators, a special class of end users, have access to all data for the group.

Enterprise Security & Support

If using the Forio Epicenter platform from our cloud-based hosting is not for you, we can help you run Epicenter specifically for your organization. Forio’s experts in scalable, distributed systems work closely with your IT team throughout the entire lifecycle of your enterprise apps. Enterprise solutions may be hosted by Forio or installed in your local, on premise, environment.

Whether on premise or in the cloud, Epicenter secures your requests and data by using authentication with industry-standard OAuth 2.0 — giving you a fast, secure way of creating and managing your users while you focus on your features.