Skip to content

Repository files navigation

Frappe Suite logo

Frappe Suite

Original, intentionally designed productivity tools

License: AGPL v3 Tests

image

Frappe Suite

Frappe Suite brings seven collaboration products into one Frappe app. Keep files, documents, spreadsheets, presentations, meetings, email, and calendars in one connected workspace.

Product What it does
Drive Store, organize, share, and preview files
Writer Create and collaborate on documents
Sheets Build collaborative spreadsheets
Slides Create and present slide decks
Meet Run video meetings
Mail Manage email in a modern client
Calendar Plan events and manage schedules

Mail Servers and Suite Cloud

Suite does not run or administer a mail server itself. The servers are Stalwart clusters managed by the separate Suite Cloud app, and a Suite site is one tenant of a cluster:

  • End users read and send mail straight against the cluster over JMAP, with an app password minted for each account. Suite only needs the cluster's URL for that.
  • Every admin change (domains, accounts, passwords, groups, mailing lists) goes through Suite Cloud's site API. Suite Cloud checks that the site owns what it is touching and pushes the change to the cluster. The site never holds cluster admin credentials.

A site therefore carries five connection values, which Frappe Cloud writes into site_config.json when it registers the site (the settings override them on a self-managed site):

  • Mail Settings, or the mail key of the site config: server_url (the JMAP URL users connect to) and verify_ssl.
  • Suite Settings, or top-level keys of the same name in the site config: suite_cloud_url, site_api_key and site_api_secret. They are read through get_suite_cloud_config in suite/suite_core/utils.py, and Validate Suite Cloud Credentials on Suite Settings confirms them.

The two halves stand apart. Mail and Calendar need only the JMAP server: a site with server_url and no Suite Cloud is fully usable by anyone who has an account. The Admin Dashboard, account creation and signup need Suite Cloud: without it the dashboard is hidden from admins, its routes lead back to the mailbox, and every endpoint in suite/mail/api/admin.py refuses.

The client lives in suite/mail/suite_cloud/, the facade the rest of Mail uses in suite/mail/directory.py, and the Admin Dashboard's endpoints in suite/mail/api/admin.py.

Sites that deployed servers through Suite before this split keep their data: update Suite, run bench --site yoursite migrate, then bench --site yoursite install-app suite_cloud.

Under the Hood

  • Frappe Framework: Provides the database, authentication, permissions, realtime events, and APIs shared by Drive, Writer, Sheets, Slides, Meet, Mail, and Calendar.
  • Frappe UI: Power the interface and reusable components across every Suite product.
  • Yjs: Keeps documents in Writer and spreadsheets in Sheets synchronized during realtime collaboration.
  • Hocuspocus: Runs the collaboration server used for realtime spreadsheet editing in Sheets.
  • mediasoup: Powers Meet's WebRTC selective forwarding unit for group video calls.

Migrating from the Standalone Apps

Frappe Suite ships the same modules and DocTypes as the standalone apps, so it cannot be installed on a site that still has any of them — installation aborts with a message listing the conflicting apps. To move an existing site to Suite:

  1. Take a backup of the site, including files.
  2. Uninstall all the standalone apps (Drive, Writer, Sheets, Slides, Meet, Mail, Calendar). Uninstalling deletes each app's data on the site, which is why the backup comes first.
  3. Install Frappe Suite.
  4. Restore the backup. Suite uses the same tables, so the restored data is picked up as-is.

The same steps apply to sites hosted on Frappe Cloud: download a backup from the site dashboard (Backups), remove the standalone apps from the Apps tab, install Frappe Suite, and then restore the backup from Backups → Restore.

Migrating with bench

# 1. Back up the site along with its public and private files
bench --site yoursite backup --with-files

# 2. Uninstall every standalone app present on the site
#    (run only the lines for the apps your site actually has)
bench --site yoursite uninstall-app drive
bench --site yoursite uninstall-app writer
bench --site yoursite uninstall-app sheets
bench --site yoursite uninstall-app slides
bench --site yoursite uninstall-app meet
bench --site yoursite uninstall-app mail
bench --site yoursite uninstall-app calendar_app

# 3. Install Frappe Suite
bench get-app https://github.com/frappe/suite
bench --site yoursite install-app suite

# 4. Restore the backup taken in step 1
bench --site yoursite restore sites/yoursite/private/backups/<timestamp>-database.sql.gz \
	--with-public-files sites/yoursite/private/backups/<timestamp>-files.tar \
	--with-private-files sites/yoursite/private/backups/<timestamp>-private-files.tar

The restored database still lists the standalone apps as installed, so point the site at Suite and migrate:

bench --site yoursite remove-from-installed-apps drive
bench --site yoursite remove-from-installed-apps writer
bench --site yoursite remove-from-installed-apps sheets
bench --site yoursite remove-from-installed-apps slides
bench --site yoursite remove-from-installed-apps meet
bench --site yoursite remove-from-installed-apps mail
bench --site yoursite remove-from-installed-apps calendar_app
bench --site yoursite install-app suite
bench --site yoursite migrate

Development Setup

Install Bench and create a Frappe site by following the Frappe Framework installation guide.

From your bench directory, get and install Suite:

bench get-app https://github.com/frappe/suite
bench new-site suite.localhost --install-app suite
bench start

In a separate terminal, install frontend dependencies and start the development server:

cd apps/suite
yarn install
yarn dev

To create a production build instead:

bench build --app suite

Meet SFU

Meet requires a separate mediasoup SFU server for video calls. Follow the Frappe Meet SFU setup guide to configure and run it.

Contributing

Contributions are welcome. Please open an issue to report a bug or propose a change before submitting a pull request.

License

Frappe Suite is licensed under the GNU Affero General Public License v3.


About

[Experimental] Original, intentionally designed productivity tools

Resources

Stars

87 stars

Watchers

5 watching

Forks

Releases

Contributors

Languages