Challenge Overview
Challenge Objectives
-
Target environment: Desktop browsers
-
Basic Requirements: Explore a way to replace the TinyMCE editor with a new open-source editor. It should cover all the existing functionalities of TinyMCE.
Project Background
TinyMCE is an online rich-text editor released as open-source software under the LGPL. It has the ability to convert HTML textarea fields or other HTML elements to editor instances.
TinyMCE is a great rich-text editor but its license LGPL is too restricted. So our client wants to rewrite TinyMCE and open source it with a license without any license cost (Apache/BSD).
The rewritten TinyMCE should provide the same API as the original TinyMCE,
Additionally, the client wants to implement the additional features to the rewritten TinyMCE.
-
Import MS Word document and convert it to HTML
-
PDF preview
-
Print preview
-
PDF generation
-
HTML preview
-
Save HTML into Oracle DB (under the column type CLOB)
-
Implement macros, the macro is a template of HTML that can be inserted into the TinyMCE editor, it should be implemented as extJS.
Technology Stack
-
Javascript/Typescript
-
CSS
-
HTML
-
Java
-
Oracle
-
...
Individual requirements
The source code of TinyMCE is https://github.com/tinymce/tinymce
In this challenge, we are looking for you to
-
Explore and recommend any open source products or tech stack to rewrite the TinyMCE, specifically, all the dependencies should be under the license Apache/BSD. The app should be written by Typescript.
The new solution should be an apple to apple replacement of the current product TinyMCE and it’s integration with the macros & application as used by the client. -
Write a detailed document to describe
-
how TinyMCE implements its API and plugin scheme, and how will you replicate the same features with the new tech stack.
-
how to import the word document and convert it to HTML
-
how to export to PDF
-
how to preview PDF
-
how to preview HTML
-
how to preview Print
- how to support macros written in extJS.
- How to connect with the application’s service. How to invoke the application service from a web application. It has to be invoked from the editor when the user 'save' the document after editing.
-
-
Write one or some demo apps to verify your proposed method
-
how to import the word document and convert it to HTML
-
how to export to PDF
-
how to preview PDF
-
how to preview HTML
-
how to preview Print
-
how to support macros written in extJS.
-
Some notes:
-
For the demo apps, you can either write one demo app for each feature or write one demo app for all the features. But one demo app for all the features is preferable.
-
The demo app should be a web app, it can be just functional, UI looking is not necessary to be not fancy. We just need your app(s) to verify all the proposed methods are feasible.
- The content should have some complicated elements, like tables, images, lists, bold, italic text, etc. The format of MS word, HTML, PDF, Print and its generated counterparts should be identical.
- ���While estimating the efforts, consider the coding standards to be considered as per the client’s requirement. The requirement is attached in the forum.
The license of all the modules provided by TinyMCE is Apache 2.0, we might be able to reuse them.
Here are some of the modules for your reference
-
@ephox/dom-globals: https://www.npmjs.com/package/@ephox/dom-globals
-
@ephox/bedrock: https://www.npmjs.com/package/@ephox/bedrock
-
@ephox/oxide-icons-tools: https://www.npmjs.com/package/@ephox/oxide-icons-tools
-
@ephox/swag: https://www.npmjs.com/package/@ephox/swag
-
@ephox/tslint-rules: https://www.npmjs.com/package/@ephox/tslint-rules
-
@ephox/wrap-jsverify: https://www.npmjs.com/package/@ephox/wrap-jsverify
-
@ephox/alloy: https://www.npmjs.com/package/@ephox/alloy
References
You can take the following plugins for reference
-
TinyMCE plugin: Paste content from MS Word: https://www.tiny.cloud/docs/enterprise/paste-from-word/
-
TinyMCE plugin: Export to PDF https://github.com/Api2Pdf/api2pdf.tinymce
-
TinyMCE extJS plugin (might be a bit outdated): https://www.senchadevs.com/extensions/ext-ux-form-tinymcetextarea
Review
This challenge will be reviewed by the copilot (and the PM/client) subjectively, so there is no appeal and appeal response phase.
If you have any concerns or doubts, please raise your questions in the forum, thanks.
Final Submission Guidelines
Please zip all the following content in a zip archive.
1. Well-Formatted document (in .md/.pdf/.docx) to cover all required content in the specification.
2. The source code of your demo app(s). You should document the verification steps in the document above.
3. Any other contents that you think are required for augmenting your solution.