1
0
silverbullet/website/SilverBullet.md
2024-01-23 20:05:51 +01:00

7.7 KiB
Raw Blame History

Introduction

SilverBullet aims to be a workshop for the mind: a creative Spaces where you collect, create and expand your personal knowledge, while simultaneously letting you evolve the tools you use to do so.

So yeah, SilverBullet is basically a geeky note-taking application and personal wiki.

While you can use SilverBullet as just a note-taking application that stores notes in plain Markdown files on disk; it becomes truly powerful in the hands of more technical power users. By leveraging Metadata annotations, its Objects infrastructure, Live Queries and Live Templates, it becomes a powerful End-User Programming tool, enabling you to quickly develop various types of ad-hoc knowledge systems.

SilverBullet is open source and implemented as an offline-capable web application (PWA). In order to use it, you have to self-host it: that is, you need to run the web server either on your own machine, somewhere on your network, or in the cloud somewhere. See our Install.

You may have been told there is no such thing as a silver bullet.

You were told wrong.

Quick Links

  • Install: how to install and deploy SilverBullet.
  • Manual: how to use this thing.
  • CHANGELOG: were in active development, so things change rapidly, watch this page to keep up.
  • Roadmap: currently planned features and priorities.
  • Issues: if you have ideas, or find bugs, please report them.
  • Community: join our community!
  • Discord: for more real-time support and discussion!
  • Mastodon: follow SilverBullet development on Mastodon

Features

Some highlights:

  • SilverBullet runs in any modern browser (including mobile ones) as a PWA in two Client Modes (Client Modes$online and Client Modes$sync mode), where the synced mode enables 100% offline operation, keeping a copy of content in the browsers local (IndexedDB) database, syncing back to the server when a network connection is available.
  • SilverBullet provides an enjoyable Markdown writing experience with a clean UI, rendering text using Live Preview, further reducing visual noise while still providing direct access to the underlying markdown syntax.
  • SilverBullet supports wiki-style page linking using the [[page link]] syntax. Incoming links are indexed and appear as Linked Mentions at the bottom of the pages linked to thereby providing bi-directional linking.
  • SilverBullet is optimized for keyboard-based operation:
    • Quickly navigate between pages using the page switcher (triggered with Cmd-k on Mac or Ctrl-k on Linux and Windows).
    • Run commands via their keyboard shortcuts or the command palette (triggered with Cmd-/ or Ctrl-/ on Linux and Windows).
    • Use Slash Commands to perform common text editing operations.
  • SilverBullet is a platform for End-User Programming through its support for Objects, Live Queries, Live Templates and Live Template Widgets, allowing to make parts of your pages and UI dynamic.
  • SilverBullet allows you to boost your writing/knowledge collection productivity using its various Templates mechanism.
  • SilverBullet can be extended using Libraries and Plugs.
  • Self-hosted: you own your data. All content is stored as plain files in a folder on disk (if you so choose). Back up, sync, edit, publish, script with any additional tools you like.
  • SilverBullet is free, open source, MIT licensed software.

To get a feel of what SilverBullet is capable of, have a look at this (always ever so slightly out of date) introduction video.

url: https://youtu.be/BbNbZgOwB-Y

Try it

Heres the kicker:

==You are looking at a (more or less) operational copy of SilverBullet right now.==

Thats right, this very website is powered by SilverBullet itself. 🤯

On this site, everything is editable just none of it syncs back (successfully) to the server. You are editing a local copy of this website, so changes do persist locally. Its not a perfect rendition of the actual SilverBullet experience, but it's pretty close.

Dont just sit there, try it!

  • Click on the page picker (book icon) icon at the top right, or hit Cmd-k (Mac) or Ctrl-k (Linux and Windows) to open the page switcher. Type the name of a non-existent page to create it (although it wont save in this environment).
  • Click on the terminal button (top right) or hit Cmd-/ (Mac) or Ctrl-/ (Linux and Windows) to open the command palette (note that not all commands will work in this mode).
  • Select some text and hit Alt-m to ==highlight== it, or Cmd-b (Mac) or Ctrl-b (Windows/Linux) to make it bold, or Cmd-i (Mac) or Ctrl-i (Windows/Linux) to make it italic.
  • Click a link somewhere on this page to navigate there.
  • Start typing [[ somewhere to insert a page link (with completion).
  • Tap this box 👈 to mark this task as done.
  • Start typing :party to trigger the emoji picker 🎉
  • Type / somewhere in the text to invoke a slash command.
  • Click this button {[Editor: Toggle Vim Mode]} to toggle Vim mode
  • Open this site on your phone or tablet and... it just works!
  • Are you using a browser with PWA support (e.g., any Chromium-based browser or recent version of Safari)? Click on that little icon to the right of your location bar that says “Install SilverBullet” to give SB its own window frame and desktop icon, like it is a stand-alone app (not particularly useful on silverbullet.md, but definitely do this once you install it yourself). Now, unplug your network cable and reload the page. It still works!

At the core of SilverBullet is Markdown with some added fancier features like tables:

Page Comment
SilverBullet Main product page
CHANGELOG The latest updates

or code snippets, like JavaScript:

function helloWorld() {
   return "Look at my I'm JavaScript!";
}

Beyond Markdown

Where things get slightly more interesting is when using features like Live Queries that allow you to query all types of Objects indexed based on the pages in your Spaces.

Lets explore this with a meta example of using this functionality for this very website. All pages in this space that represent a Plugs are tagged with the #plug Tags. Now, if we want to render a list of all plugs in one place using the internal-template/plug template, we can simply do this as follows:

plug render [[internal-template/plug]]

Hover over that list and click the edit button to see the query that generates this view.

And its not just pages that can be queried, theres a large variety of queriable sources and you can define your own via tags. Examples include tasks, pages, tags, and links. The sky is the limit. See Objects and Live Queries for more information.

Install SilverBullet

Has your mind been sufficiently blown to commit to an install? Took you long enough, alright then. Please proceed to Install and enjoy!

Support

If you (hypothetically) find bugs or have feature requests, post them in our issue tracker. Want to contribute? Check out the code.

Want to chat with us? Join our Discord!