substance/substance
Save article ToRead Archive Delete · Log in Log out
1 min read · View original · github.com
Substance 
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.
Read the introduction post, check the project website, the examples and the API documentation.
Substance Beta 4 introduces support for realtime collaboration. While still under development, you can already check out and run our full-stack collaborative Notepad application.
Features
| Features | State |
|---|---|
| Custom document schemas | ✓ |
| Custom converters (XML, HTML, etc.) | ✓ |
| Custom HTML Rendering | ✓ |
| Annotations that can span over multiple nodes | ✓ |
| Annotations can hold information (e.g. a comment) | ✓ |
| Incremental document updates (undoable operations) | ✓ |
| Transformations for document manipulation | ✓ |
| Custom editing toolbars | ✓ |
| Commands for controlling the editor | ✓ |
| I18N support | ✓ |
| Realtime collaboration | Beta 4 |
| Persistence API for documents | Beta 4 |
| Key bindings | Beta 5 |
| Full Unicode support | Beta 5 |
| Plugins | Beta 5 |
| UI Components | |
| TextPropertyEditor for editing annotated text | ✓ |
| ContainerEditor for in-flow-editing | ✓ |
| Scrollable ContentPanel with Support for highlights | ✓ |
| Customizable Toolbar | ✓ |
| ScrollPane with interactive visual Scrollbar | ✓ |
| Interactive TOCPanel | ✓ |
| Predefined content types | |
| Paragraph | ✓ |
| Heading | ✓ |
| Blockquote | ✓ |
| Codeblock | ✓ |
| Image | ✓ |
| Embed (image, video, tweet etc.) | ✓ |
| List | Beta 4 |
| Table | Beta 4 |
| Predefined annotation types | |
| Strong | ✓ |
| Emphasis | ✓ |
| Link | ✓ |
| Subscript | ✓ |
| Superscript | ✓ |
| Code | ✓ |
| Comment | Beta 4 |
| Platform support | |
| Mozilla Firefox (>=42) | ✓ |
| Apple Safari (>=9) | ✓ |
| Google Chrome (>=47) | ✓ |
| Microsoft Edge | ✓ |
| Mobile Safari (iOS) | Beta 5 |
| Mobile Chrome (Android) | Beta 5 |
Development
Install the dev dependencies.
npm install
Run the dev server.
npm start
Navigate to http://localhost:4201/docs for the docs and http://localhost:4201/test for the test suite.
To run the test-suite headless
$ npm test
To bundle the docs into a distribution:
$ npm run doc
Roadmap
Beta 4
ETA: March 2016
- Realtime collaboration
- Persistence API for documents
- Table node
- Editing of lists
- Improved stability, documentation and tests
- Full-stack platform example
Beta 5
- Key bindings
- Plugins
- Improved Unicode support
- Mobile support
- Automatically generated performance report
- Modules for server-side integration
1.0 Final
- Complete documentation
- Full test coverage
- Final versions of API's