# Quanta

### The world's first Quantized Editor!

A new kind of web platform for wikis, blogging, collaboration, publishing, video/audio sharing, file sharing, RSS aggregation and podcasts, with social media-like conversation threads.

Create hierarchically organized content text, documents, images, audio and video that's always editable, shareable, and saved on IPFS.

## Social Media

Has many features in common with most other Social Media platforms. Social features include the ability to post content to a feed, create your list of friends, and view your feed's containing all their content.

## Wikis

A powerful Wiki editor, where any piece of content can be edited, organized in a hierarchy, and shared with it's own unique URL. It's very easy to create content where everything, all the way down to individual sentences, can be linked to, shared, moved, etc., in a hierarchical model analogous to file system folders.

## Blogs

Since content can be edited, formatted with markdown, and include images, videos, links, code blocks, etc, the platform can serve as a feature-rich way to publish blogs. Access Controls allow you to share content with the public at large, or with only specific users of your choice.

## Friend Feeds

Similar to most Social Media apps you can create a list of Friends, and view a feed of all the posts from those people in a timeline very similar to Twitter. The way you 'reply' to a post (or comment on a post) is by appending a sub-node under the node you're replying to. In this way, the inherent hierarchical structure that Quanta is built from is leveraged to allow threaded-conversations to branch off from any node.

## Web3/IPFS

Allows file attachments (images, video, etc) and/or the text content of the nodes to be uploaded to IPFS. Quanta uses the docker version of go-ipfs to run it's own gateway instance, so you can host IPFS natively in a Quanta instance.

## File Sharing

Since any node can have a file attached to it, and then shared with any person, group of people, or made public, the platform functions well as a general-purpose file sharing app.

## Secure Messaging

Supports encryption and secure messaging between users, where only the owner of a node (or someone they have shared it to) can see the decrypted text. Quanta uses the browser's built-in Crypto API and PKE (Public Key Encryption) in a scheme where neither the public key nor the unencrypted text ever leaves the browser. Enabling the encryption only takes a single click of a check box. You can also import/export your PKE key, so that you can back it up, or move it to other browsers.

## Access Controls

Sharing nodes to other users is done using the Access Controls (ACL) feature. Every node can be assigned a set of ACLs by the owner of the node. In the ACL you can define what set of users you want to allow to see that node (and all it's descendants, recursively). You can also set any node to "public" which makes it visible to anyone who knows it's URL, or has browsed to it somehow. Whoever creates a node always owns that node, and can control it's sharing, or even delete it and everything underneath it.

Powerful and intuitive design of the text editing features make it easy to create, edit, and hierarchically organize content. The Drag-n-Drop feature makes moving and rearranging paragraphs and text a breeze. Most concepts you're familiar with from file systems work the same way in Quanta. You have the familiar Cut, Paste, Create, Edit, Delete, etc., but in a way that's novel and doesn't exist in other platforms. Each node can contain any number of 'child' nodes (aka sub-nodes) making the information always a browse-able 'tree' of content.

## PDF Creator

PDF documents can be created by entering text as markdown formatted nodes into a hierarchy, and then exporting to PDF format. The PDF generation uses the markdown headings (hash character, '#') to also automatically include an optional 'Table of Contents' in the PDF document.

## Powerful Search

Built on MongoDB, there is a very fast and powerful full-text search capability. Since MongoDB uses Lucene internally, it provides state-of-the-art performance in search, and Quanta leverages all of this.

## Timelines

Timelines are a general feature available on any node, allowing viewing a reverse-chronological listing view of all sub-nodes under any given node. This means, for example, if you're doing a team document collaboration, you can request a timeline with a single click, to see everyone's latest contributions to the shared tree of content, as a rev-chron listing. It's also a single click to jump from the rev-chron listing to the actual node in the main content tree.

## Quantized

The name "quanta" comes from how the platform makes it easy to "Quantize" all content so that it's stored in a fine-grained way, down to the individual sentence level. This means in collaboration scenarios, other users can provide comments (or replies) to individual sentences, rather than having to reply to an entire large post or blog. It also means individual sentences of content have their own URLs. It's still possible to put very long blocks of text content (multiple paragraphs) into single nodes, but the real power of the platform comes from it's ability to separate small chunks of text so they can be commented on by others, linked to, moved around, updated, deleted, etc.

Consume RSS/Podcast Feeds, by creating a feed-reader node that embeds the feed right onto your content tree. RSS feed nodes automatically provide an audio/video playback interface, for a seamless experience browsing and listening to podcasts. You can also create an aggregate feed of a group of individual RSS feeds, and not only consume it in Quanta, but publish the aggregate as an external feed as well.

All nodes are automatically published as an RSS feed (Public or Private), by having it's own unique URL automatically available. Podcatchers/RSS Readers can simply reference the node ID on a url to get an RSS feed of it. The node's children become the feed's content items and all audio/video attachments are included as part of the RSS.

## Audio/Video Player

Upload an image, audio, or video (or any other kind of file) to a node, and the platform automatically renders a "player" interface for streaming video, playback of audio, or rendering of images. This works for any file regardless of whether it's stored on Quanta internal database or on IPFS.

## Audio/Video Recording

Record Audio/Video directly thru your browser, and save as an attached file to any node. People browsing that node can then click a button to view the recorded media.

## Audio/Video Messaging

Asynchronous audio/video chat messaging with your friends by posting audio or video replies in any of the nodes that make up conversion threads or feeds. Each node can have one attachment, and you can record audio/video directly from the app in your browser.

## Drag-n-Drop

Files or URLs can be dragged over the app to immediately upload directly into Quanta's DB or onto IPFS. Also, during content editing, nodes can be dragged around inside their parent node to reorder them. For example, if you want one paragraph moved above another you don't need to cut and past; you can just drag and drop.

## Custom URLs

Every node automatically has a unique ID (the MongoDB generated ID) which makes them available to be directly linked to by URL. You can also enter a text "name" onto any node (anything unique to your account), and the node will then be available as a URL using that text as the last path part of the URL.

## Markdown

Markdown is supported and rendered automatically when the page is viewed, allowing for fonts, links, images, code blocks, and all the things markdown is good for. Nothing is required to use markdown. Every node is automatically markdown-enabled unless you set the node type to a custom type.

## Math Formulas

Math formulas can be entered directly into any content using the standard LaTeX, MathML, or AsciiMath notation. If you're unfamiliar with LatTeX, it's a special syntax for text letting you enter math equations, and then when the page is viewed (after editing is done) the math formulas look like what you'd see in a math book, or hand drawn math formula.

## Hierarchical

Unlike most social media, where content exists mainly as a linear chronological feed, Quanta lets you hierarchically organize everything however you want. All content exists as a part of a large tree structure. When you create an account, that is actually creating for you a root node, like in a file system, under which you can create and organize whatever you want however you want, sharing as much of it as you want, with only who you want. You can let a node and all it's sub-nodes represent a document, represent a photo album, represent a blog, etc. The entire system essentially is a big tree of content where each user "owns" one root node and whatever tree of content they've created underneath it.

## Node Types

Every node has a 'type', which allows the system to customize the editing and rendering of specific nodes. Normally however, users can just ignore node types, and the 'Markdown Type' is used seamlessly by default, without the user even knowing a 'type' was selected. However at any time, the owner of a node can change the node type. One random example of a type is the 'RSS Feed' Type which automatically subscribes to a podcast.

## Import/Export

Nodes can be exported to ZIP, TAR, or TAR.GZ formats and then downloaded, to archive or save locally. The exported file format is easily browse-able offline, using any web browser, as static HTML files (after extracting into a folder of course), but also contains enough information to be able to import back into a Quanta instance/server later. That is, any exported file can be re-imported later by you, or by any other user.

## Mobile Support

Quanta is primarily designed for a desktop experience, but mobile devices are supported well also, including the ability to capture video and audio from phones or tablets.

## Open Source

The entire Quanta platform is open-source and freely available on GitHub, with MIT License, which means you're free to use or modify it in any way for any reason, including to build a commercial product.