The Snip Philosophy
The aim of Snip is to provide a handful of simple concepts, which, in combination, make for a rich user experience, allowing you to organize your daily life. You can think of it as a five-step evolution:
- In the most basic scenario, you can use Snip as a classic note taking app. Your data simply consists of a few notes, containing rich text, links and images. We've put a lot of focus on making the editing experience as user friendly as possible, since this is what you'll be doing the most: editing text.
- Next, as your note taking evolves, you might feel the need to organize your data into sub-sections. For example, you might want to separate private notes from work related notes. This is where tags come in: they represent concepts that in other note taking apps are referred to as "Note books", "Folders", "Projects", etc.
- Next, you might want to do task management. This is often done with todo lists, which is a powerful concept to keep track of your tasks. Snip provides todo lists as part of the rich text editing experience. Todo items can be marked as done, and re-arranged with the built-in drag-and-drop functionality.
- Next, you might want to schedule your work. This is where the built in calendar functionality comes into play: you can create calendar entries inside your notes, which will be presented by the calendar view. You can interact with those entries - for example, you can create repeat patterns and reminders. Note that Snip inverts the classic calendar principle: usually, you think of the calendar as the owning instance of your schedule - every calendar entry "lives" inside the calendar. In Snip however, calendar entries live inside your notes, and the calendar is merely a representation of those entries. This concept is quite powerful: it allows you to make use of Snip's rich text editing experience to take notes for events in your schedule, instead of having to use the (usually limited) note-taking capabilities you'd find in classic calendar apps.
- Next, you might want to display your notes with special representations. This can be done with tag display modes. Think of this as if you were working with non-digital notes: you would arrange your notes on your desk, organizing them as "pools" of related notes. The visual feedback this creates makes it easier for you to know where you've put your notes. This is great for context switching: create dashboards and whiteboards for specific tasks that you can jump to and see all relevant notes in one place.
Snip is not a markdown-based note taking app. However, it does have markdown-related functionality:
- you can use markdown syntax while writing rich text notes
- you can import markdown
- you can export to markdown
We do not deem the use of markdown for taking notes necessary. With a good rich text editor, notes are equally easy (if not easier) to edit and read, and export to markdown removes the possibility of vendor lock-in: your data will be future-proof as in any other markdown based note taking app.
Not using markdown also comes with the advantage that documents can contain more complex elements and formatting than a regular markdown document would. Once you want to introduce additional concepts (for example, a reminder feature as it is implemented in Snip), you'll have to introduce your own, custom syntax, ultimately breaking the original idea of using a common standard. Even worse, if such custom standards are introduced through a community driven platform, you end up with notes that contain structures that are only valid within the respective note taking app and with additional plugins installed.
That is not to say that markdown in itself is bad. In fact, the documentation you're reading right now is written in markdown. It is certainly a great language for writing documentation, and its plain text format makes it work well with version control systems.
Snippets and Tags
Snippets are what you would usually call a Document, a Note, or a File. In Snip, a Snippet is a unit of data which can be edited and persisted. There's currently two types of Snippets: Rich Text Snippets and Code Snippets.
Tags can be used to organize snippets. Think of a tag as something that has a name, an icon, and a list of snippets it references. A tag can have a display mode, which determines how the snippets are presented:
- the list display mode shows snippets in a classic list layout
- the dashboard display mode shows snippets in a tiled space
- the whiteboard display mode shows snippets in an infinite, canvas-like space
A tag's name is represented not just as a plain string, but as a "path". This makes it possible to build folder-like structures. For example, you can create two tags Private / Todos and Private / Goals, which will cause the tag view to display a tree-like structure, grouping Todos and Goals under the common parent Private.
The tag concept allows you to organize your data in a hierarchical way, as you would do with a classic folder system, and at the same time allows you to organize your data across multiple contexts, as you would do with a classic tagging system.
Origins allow you to specificy how your data shall be persisted. Currently, there's two origins available:
- the file origin lets you store your data on your local disk
- the cloud origin lets you store your data in the Snip Cloud
The advantage of the cloud origin is that you'll be able to sync your data across multiple devices. Apart from that, the functionality of the application remains the same.
Editing Rich Text
Using Markdown-like syntax
Using the toolbar can feel cumbersome at times, since it forces you to switch between your mouse and keyboard often. You can use markdown syntax to avoid this.
**text**for bold formatting
*text*for italic formatting
*for bullet lists
1.for ordered lists
+for todo lists
Jumping in and out of inline formattings
The editor gives an indication whether you are inside an inline formatting (such as bold formatting) by rendering a dashed line underneath the formatting. You can jump in and out of the formatting boundaries by using the left and right arrow keys. This allows you to, for example, escape a bold-formatted text and continue writing unformatted.
Destroying formattings with backspace
You can destroy inline formatting (such as bold formatting) using backspace. Jump out of the formatting with your arrow-right key, then use backspace to destroy the formatting.
Similarly, you can destroy block formattings, such as headings and code blocks, by placing the cursor at the beginning of the formatting and using backspace.
Interaction with links
The editor will detect urls such as
https://example.com and give an indication
once the cursor is close to such a pattern. Pressing Enter will put
focus on the label input field. Once focus is inside the label input field,
pressing Escape will put focus back on the editor. Pressing Cmd+Enter
will turn the pattern into a highlighted, interactable link.
Once an interactable link is created, interacting with it is the same: use Enter to focus the url input field, use Escape to give focus back to the editor.
Drag and Drop
Parts of text can be dragged around. This is useful, for example, when you want to reorder items in a list, or put a paragraph before another one.
You can drag text by selecting some text inside the paragraph or list item you want to drag. This will create a drag handle, which you can drag-and-drop to whichever part in the document you want.
Another option is to hit Escape when the editor is focused. This will create a node selection around the paragraph where the cursor is placed. The node selection becomes draggable and can be dragged accordingly.
Creating a calendar entry via the side panel
A calendar entry can be created by selecting a time span in the calendar side panel, then dragging it to a note. Whichever text is close to the created calendar entry will become the description of the entry.
Selecting an entry in the side panel will open a modal allowing you to edit reminders and repeat patterns.
Creating a calendar entry via a date expression
A calendar entry can be created using a date expression. Examples of such expressions are:
- in one hour
- tomorrow at eight
- in two weeks from 10 to 12
- every monday and wednesday at nine pm
Once the cursor is close to such a pattern, an entry can be created by clicking "Create Calendar Entry" or by using Cmd+Enter. The calendar view will automatically jump to whichever calendar entry is currently focused.
Some terms can be abbreviated. For example, you can use tm instead of tomorrow, mon instead of monday, and aug instead of august. You can use the terms noon and midnight to target respective times of the day.
You can use "starting at" patterns to specify the start date of a repeat pattern. For example: every monday at eight starting on 1. jan.
Calendar entries can be destroyed by using backspace. The expression that was originally used will be inserted instead.
As the name suggests, snippet references enable you to reference snippets from one another. There's multiple ways how to set up snippet references:
- using the toolbar: there's a toolbar entry called "Create Snippet References", which allows you to search for the snippet you'd like to reference
- using autocomplete: type
/inside a note and start typing some text. You'll be presented with an autocomplete. If the text you type matches an already existing snippet, it will be presented as an option. In addition, you'll have the option to create a new snippet and auto-reference it into the snippet you're editing.
Snippet references can be visualized in different ways:
- Inline: shows the referenced snippet in a small pop-up
- On the side: in the list layout, shows the snippet to the right of the referencing snippet
Search and Quick Access
Snip comes with an effective search-all feature, which you can use to search your snippets. It presents results in a compact, easy-to-read manner. You can use regular expressions if you like.
It also allows you to search for and jump to tags. Additionally, it shows you snippets and tags you've visited recently.
The Quick Access feature allows you to quickly copy links and code blocks from your notes to the clipboard.