In a pandemic-altered world where digital collaboration has become the norm, providing a seamless collaborative experience to your users on their documents can add a large amount of value to your application. But typical methods of embedding real-time document collaboration can take weeks, even months, and require entire teams to support and maintain, whereas alternatives require reliance on server technology not designed to work with your existing infrastructure and security layers.

Today, that is why we are proud to announce a brand new PDFTron product -- WebViewer Collaboration!

A set of plug-and-play modules for any application, WebViewer Collaboration offers a straightforward way to embed real-time document collaboration. It includes all the pieces to support the entire collaboration flow, enabling you to rapidly assemble a great end-to-end experience. Best of all, it doesn't require you to change any of your existing infrastructure!

WebViewer Collaboration is free to use with a WebViewer license, though you must first claim your license before it can be used in production. Download modules via NPM and see the get started guide.

Read on to learn all about the developer challenges that inspired us to build WebViewer Collaboration, how it reduces your integration costs and timelines, and details on cool new features covering the entire document collaboration workflow.

The Collaboration Problem

Organizations today seek to help their users become more productive by powering a workflow, whether review and approvals, redactions, document preparation and more -- directly as part of their commercial or internal application.

Ideally, users should be able to access capabilities without reliance on email and additional software, making for a less-than-ideal collaboration experience as users are forced to exit applications, with the workflow fragmented across various systems and apps.

But embedding document collaboration has been no piece of cake either. Although PDFTron customers have built collaboration workflows for many years, implementations can still take months and require full teams to tackle new, emergent requirements and use cases.

Third-party collaboration servers offer an alternative but are often impractical; these don’t seamlessly integrate with your infrastructure (database, authentication, user permissions, document repositories, etc.). They are, by definition, insecure black boxes, hard to tailor to your needs.

Rapid Integration with WebViewer Collaboration

WebViewer Collaboration provides a much-needed solution. It enables rapid integration of real-time collaboration capabilities directly inside any new or existing application, thus shortening timelines, reducing development costs, and improving security. And it comes with all the features needed to handle the entire collaboration workflow -- from user authentication and permissions to browser and email-based notifications.

Works with any application

Simplifying setup, WebViewer Collaboration was designed to be compatible with any application, new or existing. It integrates with any kind of database, and can even work with your existing data. It follows GraphQL paradigms, meaning you just need to provide a "glue" layer between our server and your database (aka resolvers).

WebViewer Collaboration is also designed to work with any user authentication system, so you do not need to change any of your infrastructure to use it!

If you are starting an application from scratch and do not have a database, you can use our default PostgreSQL database, which requires very minimal configuration.

View the "how it works" guide for more information.

Features for the Entire Collaboration Flow

Below is a list of all the features built into WebViewer Collaboration. If you have any ideas for features you would like to see added, please get in touch!

Real-time annotation syncing

The core feature of WebViewer Collaboration is real-time annotation syncing. This means that all users viewing a document will see the annotations that other users add, in real time, including comments and replies to comments in discussion-like threads.

User authentication and SSO

WebViewer Collaboration supports single-sign-on, meaning you can use your existing log-in flow to authenticate users. Once a user is signed in and authenticated, we provide many useful APIs to get information about the user, including documents they belong to and any unread messages they may have.

View the user authentication guide for more information.

Flexible user permissions

WebViewer Collaboration gives you granular control over what users are allowed to perform specific actions. For example, you could set it so only the document author can create annotations, or have only certain users allowed to add documents.

WebViewer Collaboration ships with sensible defaults for user permissions, so in most cases, zero configuration is required!

Email and browser notifications

Staying on top of things is critical in a digital collaboration environment, which is why WebViewer Collaboration also comes with support for email and browser notifications.

Send your users notifications when they are invited to a document or get a new message. You can also trigger email notifications when a user is not online but still receiving new in-document messages.

These notifications are completely customizable, but we provide good defaults for those who want to keep configuration to a minimum.

To make things even easier, we also provide a default SendGrid email integration. Just plug in your SendGrid API keys, and just like that you have email notification support!

See the notifications guide and the emails guide for more information.

Scroll synchronization

Next, in a document review workflow, it can be useful to know what part of a document another user is looking at. WebViewer Collaboration includes a feature to sync the scroll position of all users viewing a document. This is easily enabled with just a single API!

See the scroll sync guide for more information.

Mentions

Similar to most chat applications, WebViewer Collaboration comes with "mention" support. This allows you to tag certain users in messages. When a user is mentioned, you can send them a special notification or email, or do some other special functionality. We will be adding more features around mentions in the near future, such as getting a list of all the users' mentions. So stay tuned to this space for more news!

Built with developer experience in mind

Here at PDFTron, we strive to maintain an excellent developer experience across all our products, and WebViewer Collaboration is no exception.

WebViewer Collaboration ships with many developer focused features to help you quickly debug issues and get up and running with minimal effort.

Integrated testing suite

WebViewer Collaboration also comes out of box with a testing utility to help you debug and catch any errors in your implementation. Once done your initial integration, run it against our testing suite and get detailed logs about any issues that are found. This can be easily integrated into any CI system or existing testing suite for even more peace of mind.

With just a few lines of code, you can get a detailed problem report:

// test.js
const TestResolvers = require('@pdftron/collab-server/tests/resolvers')
const myResolvers = require('./server/resolvers');
(async () => {
  const errors = await TestResolvers(myResolvers);
  console.log(errors);
})()

See this guide for more information.

Typescript support

WebViewer Collaboration is written with Typescript, meaning that we have first-class TS definitions that ship by default with the packages. These should be enabled by default, no configuration required.

Extensive logging suite

WebViewer Collaboration uses Winston throughout, and provides detailed logs for just about every single action that takes place on both the server and the client.

You can set the log level to hide any logs you do not want to see, and you can also pass your own Winston Transports to the modules. This allows you to do things like HTTP logging, or writing logs to the disk.

Open-source samples

So far, we have three sample projects that you can try out and reference during your implementation.

The first sample is a fully fledged collaboration application built around the three collaboration modules. It integrates every feature we have and includes other things such as an authentication flow and maintaining application state. View the sample here.

The second sample shows how to integrate the modules into a SQL database. This is a very basic sample but shows how you might implement your resolvers. View the sample here.

The third sample shows how you might implement collaboration into an existing application. The repo contains two branches, one with collaboration and one without. By viewing the diff of these two branches, you can see what work needs to be done to implement collab into your existing app. View the sample here.

Conclusion

We have put a lot of time and thought into this product, and we sincerely hope that our efforts can make a big impact in your applications!

We encourage you to try out this project and see how it might fit into your application workflow. We recommend getting started by reading this guide, and then following the get started steps in each module.

As always, if you have any questions, run into issues, or have a cool idea for our project, please get in touch! We are always happy to hear from you.

Happy collaborating!