Knowledge Base



What is Forest?


Forest is a universal admin interface designed to manage all your application data and business operations. Forest helps developers to focus on their product instead of wasting time building and maintaining an outdated DIY admin.

How does Forest work?


Forest is comprised of an agent (Liana) and a front-end application (UI). Once you install the agent on your app, it will scan your ORM, retrieve the models, and generate an admin REST API that will communicate with the admin UI. Then, when the user logs on to our web app (http://app.forestadmin.com), it queries both the Forest’s server (to get the UI configuration) and your application (to retrieve the data).

What is Lumber?


Lumber is a CLI that generates an admin interface out of an existing MySQL or Postgres database. You can then start using and customizing your new admin microservice in no time.

How does Lumber work?


Lumber generates the admin REST api automatically based on your database schema. We only host the UI (http://app.forestadmin.com). It is up to you to decide on where the admin miscroservice is hosted. It means that your data will never reach our servers. You can test your admin on your local environment with a local database and then deploy it to your production environment.

Is it open source?

All products

Everything related to your data or business logic is open source, available freely on our GitHub account.

We host the admin UI. No data from your application ever reaches our servers as requests are initiated directly from your browser, to your application.

Does it rely on a DSL?

All products

Forest is based on a standard REST API. You don’t need to learn any DSL to customize the backend. Moreover, you are free to extend the API for all your particular needs.

How does it access the data from my collections?


The Liana (gem in Rails, package in Node, etc.) you install on your app will analyze the structure of your models and generate a dedicated admin REST API that handles all your common tasks such as CRUD actions, search & filters, sorting, pagination, charts, etc.

Can I simply point Forest at a database rather than plug it into my app?

All products

Yes. This is exactly what Lumber does: http://www.forestadmin.com/lumber. Lumber generates an ExpressJS admin microservice, isolated from your app.

Forest vs Lumber

What’s the difference between Forest and Lumber?

All products

Lumber is a generator that creates an admin microservice after scanning the structure of your database. Forest is an agent that you install directly on your app, where it analyzes the structure of your models. In the end, both generate a REST API that allows you to operate on your data via Forest’s UI.


Do you offer a self-hosted, on-premise version of Forest?

All products

No, but you can always contact our Enterprise team.

Forest is installed directly within your application (or in the microservice with Lumber). It generates an admin REST API automatically, so that your app can communicate with the UI, that is hosted on our side (http://app.forestadmin.com). It’s the only part of the product that’s on our servers.

We chose this architecture for two main reasons:

  • your data never reaches our servers.
  • we can continue to develop great features and implement them in the UI.

Note we can also help you setup a custom DNS to get a legible URL for your end users.


How does the pricing work?

All products

You can start using Forest for Free - see our blog post - and scale your admin features at your own pace.

Our Pro plan give you access to all our premium features, see our blog post. We charge you based on the number of activities you make on your production environment in your Forest admin interface. This means you will only be charged at the end of the month and based on your level of activity.

Our Enterprise plan is for businesses with specific back office needs requiring dedicated account management and custom setup (SLA, dedicated support, etc.): http://www.forestadmin.com/pricing


Supported technologies

Does Lumber works with MongoDB?


Yes. Your’re in the good place if you have an application (in any language) that has a MongoDB database and you would like to have a Forest admin interface built on top. For further details on how to implement Forest on a MongoDB database, see our MongoDB Example.

Do you have other frameworks support?


We’ve developed Lumber, an admin microservice generator that creates for you an admin microservice built to run Forest. For the moment, it’s compatible with any MySQL & Postgres databases. Check it out!

Data Privacy & Security

How secure is Forest?


Forest’s architecture is designed to make it impossible for us to access your data. Forest env secret is used to identify the project on Forest. The auth secret is used to secure requests to the admin API using JWT (https://jwt.io).

By default, all requests to your application data are secured (using SSL if available) and authenticated with a token that only you can generate.

What kind of information do you collect?

All products

The architecture of Forest is designed to make it impossible for us to access your actual data. Forest Lianas (our framework-specific agents) need to scan the schemas in order to generate the UI views.

Here is the complete list of information we collect or store in our database:

  • user info (email, encrypted Forest password, name)
  • project info (name, environments and API endpoints, mapping of the schema/models)
  • your Forest configuration (one configuration being specific to a team/project pair)
  • activity info (an auditable trail of every action performed within Forest)

How to setup HTTPS on Forest?

All products

Forest is adapting to your application protocol following the url provided in your environments settings. To setup HTTPS on Forest, simply provide a https application url in your environments settings.

Migrate to Forest

I have a lot of custom business logic that basic scaffolding won’t be able to handle…

All products

We wrote a blog post about this concern. We designed Forest from day one to handle all specific use cases, operations, and business logic. If you already have implemented custom logic to fit your own needs, it’ll only take a few lines of code to expose them to Forest and have them readily available in your admin.


Is it possible to have a separate Forest interface for both dev and prod environments?

All products

Yes. UI configurations are specific to environments. By default, you run Forest in the dev environment. You can create a new environment in the project settings.

Should we share the development environment or should each dev create their own?

All products

We recommend that each developer should have its own development environment.

When something is configured in one environment, how do you propagate the setup (i.e. dev -> staging -> prod)?

All products

To deploy a change from environment to another, you can use the “Copy layout configuration” feature in your project settings -> Environments. We recommend first to deploy from dev to staging, and then from staging to production.


Is it maintained?


Yes, Forest is funded and actively maintained. It is used by many teams, including all the projects from the startup studio eFounders. We host the front-end app on http://app.forestadmin.com, so you don’t have to maintain it. We continuously improve upon it. We provide open source packages to install Forest and generate the admin API automatically. They’re all available on our Github account: https://github.com/ForestAdmin


What is Forest bandwidth consumption? Is it hosted by Forest or the client?


Forest is hosted on your side. We do our best to reduce the number of queries and are constantly working on the optimization of those (both HTTP and database queries). This way, Forest should use less resources than home-made admins, and thus be more performant overall than any other custom-built solution. You can always isolate Forest in a completely separated part of your app in order to control the scope of your app and your admin independently.

Activity Log

Is it possible to use Forest to track users’ actions?


As long as you have data in your database, it is possible to act on them via Forest or display them in a dashboard. If you’re looking for tools specifically to track users’ behavior in your application, Forest will not be fitting. We recommend using tools such as Segment, Mixpanel or Heap. That being said, we’re working on integrations to bring those data back in your Forest.

Users, roles and permissions

What are the different users roles and rights in Forest?

All products

User roles determine the access level or permissions of your teammates. Forest Admin allows you to setup three different kinds of users or ‘Roles’.

  • Admin - can access project settings (manage teams, users roles and environments), customize the admin UI (activate layout editor) and manage data.
  • Editor - can customize the admin UI (activate layout editor) and manage data.
  • User - can manage data only.

Where can I manage users roles?

All products

You can define users roles in your project settings. Go to Settings -> Users and assign roles to each of your teammates.




How do I install it?

All products

Head over to http://www.forestadmin.com where you can start the installation process by entering your email and then Get started.


Why is there two login pages?

All products

The first one (with email + password) logs you in your Forest account. The second one (password only) authenticates you to your own application, to access your data. This process is necessary to keep the promise that Forest never have access to your data, as the second login generates the token with which every single one of our requests is authenticated.

CORS issue

I can’t unlock my account, I’m seeing a CORS error


That’s if you see something like the following in your browser’s console:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://app.forestadmin.com' is therefore not allowed access. The response had HTTP status code 404.

That happens when your CORS configuration is secured enough to the point that it does not allow our UI to reach your application. To solve this issue, simply whitelist http://app.forestadmin.com and https://app.forestadmin.com in your CORS configuration.

Liana update

How can I update Forest to the newest version?


Depending on your stack, you’ll have to run one of the following commands:

  • in Rails, run $ bundle update --source forest_liana
  • in Express/Sequelize, run $ npm install --save forest-express-sequelize@latest
  • in Express/Mongoose, run $ npm install --save forest-express-mongoose@latest

How can I update Lumber to the newest version?


Simply run the following command $ npm install -g lumber-cli@latest

Have there been any major changes that I should be aware of?

All products

A new version of Forest (2.0.0) has been released on November, 17. Important thing to know:

  • Collection names in Forest_liana are now based on the model name.
⚠️ If you update to a version greater than or equal to 2.0.0, make sure you haven't received any warnings or error messages before deploying to production.

JSON Web Token

What about supporting custom authentification?

All products

The admin API generated is protected using a JWT. You can use your own authentication strategy for your app’s API (JWT or not). Both authentication strategies are completely isolated.


How do I uninstall Forest?


If you made a clean install of Forest in a separate git commit, you can simply roll back to a previous commit.

Otherwise, you can always uninstall Forest manually:

  • if you created custom actions, collections, fields or charts: remove lib/forest_liana and the corresponding routes and files in app/controllers/forest
  • remove the Forest route created in your config/route.rb file
  • remove config/initializers/forest_liana.rb
  • remove the gem from your gem file
  • run bundle update


Stripe integration

All products

To enable the Stripe integration, make sure you have the following: