-- org-adapt-indentation: nil; fill-column: 70; --
#+title: organice documentation
#+html:
organice - /'ɔ:gənaɪz/
#+html:
organice organizes Org files nicely!
#+html:
- General :PROPERTIES: :CUSTOM_ID: general :END:
** Code
REPO_PLACEHOLDER
INFO: We're using inline =#+HTML= notation in favor of the much more
readable =#+BEGIN_EXPORT html= notation, because GitHub uses legacy
Org parsers and wouldn't render the latter. GitHub would render
the legacy notation =#+BEGIN_HTML= which will not be properly
exported from Emacs, because it's legacy. Hence the glorious
solution: Write all HTML in one line.
#+HTML:
** Getting started :PROPERTIES: :CUSTOM_ID: getting_started :END:
To get you started, we have two kinds of documentation:
- [[https://organice.200ok.ch/sample][Interactive Tutorial]]
- [[https://organice.200ok.ch/documentation.html][Documentation (User manual and developer guide)]]
The [[https://organice.200ok.ch/sample][interactive tutorial]] allows users to explore and experiment with various org-mode functionalities directly within the application. It provides hands-on examples of tasks, tables, timestamps, and (most) other features.
On the other hand, the [[https://organice.200ok.ch/documentation.html][documentation]] contains more comprehensive and formal documentation, including installation instructions, deployment guides, contribution guidelines, and technical details about the project's architecture and development process. This file is aimed at both users seeking in-depth information and developers interested in contributing to the project.
** Community chat
Community chat:
- #organice on IRC [[https://libera.chat/][Libera.Chat]]
- [[https://matrix.to/#/#organice:matrix.org][#organice:matrix.org]] on Matrix
** Sponsors
Creating and maintaining organice is made possible by all the volunteering [[https://github.com/200ok-ch/organice/graphs/contributors][contributors]] and [[https://github.com/sponsors/200ok-ch][sponsors]]. If you enjoy using organice, and want to sponsor the development of Free and Open Source software, you can do so with [[https://github.com/sponsors/200ok-ch][Github Sponsors]] and [[https://www.patreon.com/200ok][Patreon]].🙏
#+HTML:
And one huge anonymous sponsor.
** What does this project do? :PROPERTIES: :CUSTOM_ID: what-does-this-project-do :END:
organice is an implementation of [[http://orgmode.org/][Org mode]] without the dependency of [[https://www.gnu.org/software/emacs/][Emacs]]. It is built for mobile and desktop browsers and syncs with [[https://www.dropbox.com/][Dropbox]], [[https://gitlab.com/][GitLab]], and [[https://en.wikipedia.org/wiki/WebDAV][WebDAV]].
At [[https://200ok.ch/][200ok]], we run an instance of organice at https://organice.200ok.ch, which is open for anyone to use! organice does not have a back-end (it's just a front-end application, which uses different back-end storage providers). We don't store any kind of data on our servers - we also don't use analytics on organice.200ok.ch.
[[https://raw.githubusercontent.com/200ok-ch/organice/master/images/screenshot-overview.png]]
** Why is this project useful
Emacs is great, but it's desktop software. For users who want to access or edit their Org mode files whilst on the go, organice is a great choice.
** Introduction
If you prefer a video to some text, we've got you covered! For [[https://emacsconf.org/2019/][EmacsConf 2019]], we've created a 10 minute introductory video into the rationale and usability of organice.
#+html:
You can watch it on:
- [[https://www.youtube.com/watch?v=aQKc0hcFXCk][Youtube]]
- [[https://media.emacsconf.org/2019/05.html][emacsconf.org]]
- Installation :PROPERTIES: :CUSTOM_ID: installation :END:
organice is a web application. You can use it from any browser. On iOS and Android, you can install organice to your homescreen. When started from there, it will run in full-screen as a Progressive Web Application (PWA) which will add offline capabilities (see chapters [[#progressive_web_app][progressive web app]] and [[#offline_support][offline support]]).
To install organice to the homescreen follow these platform specific instructions:
iOS:
Open organice in Mobile Safari. Tap the "share" button and select "Add to Home Screen".
Android:
The exact procedure may differ depending on your browser and Android version. If you discover improvements to the following procedure, please [[https://organice.200ok.ch/documentation.html#contributing][let us know]]!
First open the organice web page in your mobile browser.
On Chrome, tap the "menu" button (three vertically stacked dots) and select "Add to homescreen".
On Firefox, "menu" button (three vertically stacked dots) and select "Install". If you don't have that option, you may have one to tap the home icon with the plus sign inside it which is immediately to the right of the URL in the address bar.
Other browsers may have a similar procedure to one of these.
At this point, most browsers will present a popup banner with the option to "Add to homescreen" or "Install".
By default, when you start organice, it will display your root file directory. If you prefer to display a specific Org file instead, you can select it in the [[https://organice.200ok.ch/settings][file settings]].
- Usage :PROPERTIES: :CUSTOM_ID: usage :END: ** Current restrictions/expectations of organice
"Current" means we're working hard on removing the following restrictions and expectations.
- organice understands only a few in-buffer settings (see [[#in_buffer_settings][Supported
in-buffer configuration]])
- Other in-buffer settings are imported and re-exported but are not editable with organice.
- Other content before the first headline is imported and re-exported, but invisible and currently not editable with organice.
- After potential in-buffer settings, your Org file has to begin with a headline.
Apart from these restrictions, organice is very robust in reading and editing your Org file and not breaking any of it. We're having users with 10'000 lines in their files including all kinds of native Org functionality - and even these files work just fine in organice!
Generally, when working with distributed Org files, we're recommending to put them under version control and to check for bugs and racing conditions between clients.
Please [[https://github.com/200ok-ch/organice/issues/new][file an issue]] if you find additional restrictions, expectations or bugs that you wouldn’t have expected.
*** Background information :PROPERTIES: :CUSTOM_ID: background-information :END:
organice has [[https://github.com/200ok-ch/organice/blob/master/src/lib/parse_org.js][a custom parser]] for Org files. It works quite fine and has unit tests to prove it. One of the quality goals for the parser is that when it parses and re-exports an Org file, it should not change the original file. Not seeing unrelated diffs is important for the productivity of the user. It sounds trivial, but lots of alternative products do not live up to this expectation.
Writing a parser for a complex syntax like Org mode in custom code is hard. Therefore, we are in the process of implementing a proper EBNF based parser and a set of tests behind that. If you're interested, please check it out: [[https://github.com/200ok-ch/org-parser]]
The strategy we're using with regard to the parser is this:
- Keep improving the existing custom parser for new features and make bug fixes as long as the new one isn't ready.
- In parallel, work on the new one until there is feature parity between both parsers.
- When the new one is finished, integrate it into organice.
** Progressive Web App :PROPERTIES:

