# What OpenPlatform is: one portal for all your web applications

> OpenPlatform is the Total.js enterprise portal that runs, integrates and manages several web applications behind one sign-in, with users, groups, permissions and notifications.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: en
Content-SHA256: c5101fd318eb1c8b7ff79aa421c4b307913ede4eac77dc6ba7b0518c17dd4169
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

OpenPlatform is a ready-to-run **portal for your web applications**. Your people sign in once, see the applications they are allowed to use and open them from one place; the administrators manage users, groups, permissions and notifications from one screen. It is open source under the **MIT licence**, written with Total.js 5 and PostgreSQL, and the application is the repository [totaljs/openplatform](https://github.com/totaljs/openplatform) (version 5).

This section describes OpenPlatform (revision `5a54a85` of the repository).

## What it gives you

- **One sign-in for many applications.** An application can be one of your own Total.js apps or any web application: OpenPlatform opens it with a signed token and the application asks OpenPlatform who the user is (see [how an app connects](/en/openplatform/how-an-app-connects/)).
- **Users, groups and permissions.** A user belongs to groups; a group decides which applications the user sees and which permission values each application receives (see [groups and permissions](/en/openplatform/groups-and-permissions/)).
- **Notifications.** Applications send notifications to their users through a small HTTP endpoint; the portal shows them and can email a digest of the unread ones (see [notifications and the public API](/en/openplatform/notifications-and-public-api/)).
- **Sessions the user controls.** Each user can see and remove their own sessions and change their password.
- **A setup screen** for the administrators (`/setup/`): users, groups, applications, settings, feedback and a dashboard with the visitors.

## How the project is organized

OpenPlatform is a Total.js application with three plugins and a few controllers:

| Part | What it does | Source |
|---|---|---|
| `login` plugin | the sign-in page, `POST /api/login/` and `POST /api/reset/` | `plugins/login/` |
| `portal` plugin | the portal for signed-in users (`GET /*`) | `plugins/portal/` |
| `setup` plugin | the administration screen and its API under `/setup/` | `plugins/setup/` |
| account API | `/api/` actions for the session, the account, the apps, the notifications and the sessions of the user | `controllers/api.js`, `schemas/account.js` |
| app protocol | `GET /verify/`, `POST /notify/`, `GET /session/` for the applications | `controllers/verify.js` |
| public API | `GET /users/`, uploads of images and the `SOCKET /sync/` of several instances | `controllers/api.js`, `controllers/socket.js` |

The rest of the section: [installing it](/en/openplatform/install-openplatform/), [registering an application](/en/openplatform/register-an-app/), the [settings and the database](/en/openplatform/settings-and-database/). The official documentation is at [docs.totaljs.com/openplatform](https://docs.totaljs.com/openplatform/), and the native client that Total.js 5 includes for the Open Platform protocol is in the recipe [OPENCLIENT](/en/total5/openclient-protocol/).
