3.2 KiB
#getting-started
Welcome! This guide gets you from zero to productive with SilverBullet in about five minutes.
1. Install and run
The fastest way to get started is with Docker:
docker run -p 3000:3000 -v ./space:/space ghcr.io/silverbulletmd/silverbullet
Or download the Install/Binary and run it:
silverbullet ./space
Now open http://localhost:3000 in your browser.
Note
Tip For a full breakdown of installation options, see Install.
2. Create your first page
Click the page icon in the Top Bar (or press Cmd-k / Ctrl-k) to open the Page Picker. Type a page name like "My First Page" and press Enter — SilverBullet creates it instantly.
Start typing. Everything is Markdown.
3. Link pages together
Type [[ to link to another page. SilverBullet autocompletes page names for you. Links are bi-directional: the linked page will show a Linked Mention back to the page you're writing.
4. Add some structure
Tag a page by adding a hashtag on an empty line (see Markdown/Hashtags#Scope rules), for instance #project. Or add structured data using Frontmatter at the top of a page:
---
status: active
priority: high
tags: project
---
These attributes become queryable, which we’re going to do next.
5. Run your first queries
Pages in SilverBullet can use Space Lua and Space Lua/Integrated Query feature specifically to dynamically generate content. Add this to any page:
${query[[from tags.page limit 5]]}
As you move your mouse cursor outside this code fragment, it renders a live table of your pages, right inline. Queries update as your space changes dynamically.
Now, let’s write a query that finds all your pages tagged with #project (as done in the previous step) filtered on only high priority ones:
${query[[from p = tags.project where p.priority == "high"]]}
6. Use a template to customize query rendering
By default, queries are rendered as tables, however you can render them in other ways as well. SilverBullet comes with a set of pre-defined ^Library/Std/Infrastructure/Query Templates you can use, for instance:
# High qriority projects
${template.each(query[[
from p = tags.project
where p.priority == "high"
order by p.lastModified desc
]], templates.pageItem)}
This renders your 5 most recently updated high-priority projects as a bulleted list (an item in SilverBullet parlance).
Of course, you can also create custom templates. Either as reusable Lua functions, or inline:
# High qriority projects
${template.each(query[[
from p = tags.project
where p.priority == "high"
order by p.lastModified desc
]], template.new[==[
* ${name} (status: ${status})
]==])}
What's next?
Now that you know the basics, explore these guides for real-world workflows:
- Guide/Journaling — set up a daily journal
- Guide/Knowledge Base — build a personal knowledge base
- Guide/Task Management — track projects and tasks
- Guide/People Notes — keep track of people and conversations
- Manual — the full user manual
- Space Lua — learn more about the scripting language that gives SilverBullet a lot of its power
- Object — understand how SilverBullet indexes your content