/foam

A personal knowledge management and sharing system for VSCode

Primary LanguageTypeScriptOtherNOASSERTION

Foam

πŸ‘€This is an early stage project under rapid development. For updates join the Foam community Discord! πŸ’¬

All Contributors

Discord Chat

Foam is a personal knowledge management and sharing system inspired by Roam Research, built on Visual Studio Code and GitHub.

You can use Foam for organising your research, keeping re-discoverable notes, writing long-form content and, optionally, publishing it to the web.

Foam is free, open source, and extremely extensible to suit your personal workflow. You own the information you create with Foam, and you're free to share it, and collaborate on it with anyone you want.

Features

Graph Visualization

See how your notes are connected via a graph with the Foam: Show Graph command.

Graph Visualization

Link Autocompletion

Foam helps you create the connections between your notes, and your placeholders as well.

Link Autocompletion

Sync links on file rename

Foam updates the links to renamed files, so your notes stay consistent.

Sync links on file rename

Unique identifiers across directories

Foam supports files with the same name in multiple directories. It will use the minimum identifier required, and even report and help you fix existing ambiguous wikilinks.

Unique identifier autocompletion

Wikilink diagnostic

Link Preview and Navigation

Link Preview and Navigation

Go to definition, Peek References

See where a note is being referenced in your knowledge base.

Go to Definition, Peek References

Navigation in Preview

Navigate your rendered notes in the VS Code preview panel.

Navigation in Preview

Note embed

Embed the content from other notes.

Note Embed

Support for sections

Foam supports autocompletion, navigation, embedding and diagnostics for note sections. Just use the standard wiki syntax of [[resource#Section Title]].

Link Alias

Foam supports link aliasing, so you can have a [[wikilink]], or a [[wikilink|alias]].

Templates

Use custom templates to have avoid repetitve work on your notes.

Templates

Backlinks Panel

Quickly check which notes are referencing the currently active note. See for each occurrence the context in which it lives, as well as a preview of the note.

Backlinks Panel

Tag Explorer Panel

Tag your notes and navigate them with the Tag Explorer. Foam also supports hierarchical tags.

Tag Explorer Panel

Orphans and Placeholder Panels

Orphans are notes that have no inbound nor outbound links. Placeholders are dangling links, or notes without content. Keep them under control, and your knowledge base in a better state, by using this panel.

Orphans and Placeholder Panels

Syntax highlight

Foam highlights wikilinks and placeholder differently, to help you visualize your knowledge base.

Syntax Highlight

Daily note

Create a journal with daily notes.

Daily Note

Generate references for your wikilinks

Create markdown references for [[wikilinks]], to use your notes in a non-Foam workspace. With references you can also make your notes navigable both in GitHub UI as well as GitHub Pages.

Generate references

Commands

  • Explore your knowledge base with the Foam: Open Random Note command
  • Access your daily note with the Foam: Open Daily Note command
  • Create a new note with the Foam: Create New Note command
    • This becomes very powerful when combined with note templates and the Foam: Create New Note from Template command
  • See your workspace as a connected graph with the Foam: Show Graph command

Recipes

People use Foam in different ways for different use cases, check out the recipes page for inspiration!

Getting started

Whether you want to build a Second Brain or a Zettelkasten, write a book, or just get better at long-term learning, Foam can help you organise your thoughts if you follow these simple rules:

  1. Create a single Foam workspace for all your knowledge and research following the [[Getting started]] guide.
  2. Write your thoughts in markdown documents (I like to call them Bubbles, but that might be more than a little twee). These documents should be atomic: Put things that belong together into a single document, and limit its content to that single topic. (source)
  3. Use Foam's shortcuts and autocompletions to link your thoughts together with [[wikilinks]], and navigate between them to explore your knowledge graph.
  4. Get an overview of your Foam workspace using the [[Graph Visualisation]], and discover relationships between your thoughts with the use of [Backlinking].

You can also use our Foam template:

  1. Create a GitHub repository from foam-template. If you want to keep your thoughts to yourself, remember to set the repository private.
  2. Clone the repository and open it in VS Code.
  3. When prompted to install recommended extensions, click Install all (or Show Recommendations if you want to review and install them one by one).

This will also install Foam, but if you already have it installed, that's ok, just make sure you're up to date on the latest version.

Requirements

High tolerance for alpha-grade software. Foam is still a Work in Progress. Rest assured it will never lock you in, nor compromise your files, but sometimes some features might break ;)

Known Issues

See the issues on our GitHub repo ;)

Release Notes

See the CHANGELOG.

Learn more

Head over to the πŸ‘‰Published version of this Foam workspace to see Foam in action and read the rest of the documentation!

Quick links to next documentation sections

You can also browse the docs folder.

License

Foam is licensed under the MIT license.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Jani EvΓ€kallio

πŸ’» πŸ“–

Joe Previte

πŸ’» πŸ“–

Riccardo

πŸ’» πŸ“–

Janne Ojanaho

πŸ’» πŸ“–

Paul Shen

πŸ“–

coffenbacher

πŸ“–

Mathieu Dutour

πŸ“–

Michael Hansen

πŸ“–

David Nadlinger

πŸ“–

Fernando

πŸ“–

Juan Gonzalez

πŸ“–

Louie Christie

πŸ“–

Sandro

πŸ“–

Simon Knott

πŸ“–

Steven

πŸ“–

Tim

πŸ“–

Saurav Khdoolia

πŸ“–

Ankit Tiwari

πŸ“– ⚠️ πŸ’»

Ayush Baweja

πŸ“–

TaiChi-IO

πŸ“–

Juan F Gonzalez

πŸ“–

Sanket Dasgupta

πŸ“– πŸ’»

Nicholas Stafie

πŸ“–

Francis Hamel

πŸ’»

digiguru

πŸ’» πŸ“–

CHIRAG SINGHAL

πŸ’»

Jonathan Carter

πŸ“–

Julian Elve

πŸ“–

Thomas Koppelaar

πŸ’¬ πŸ’» πŸ““

Akshay

πŸ’»

John Lindquist

πŸ“–

Ashwin Ramaswami

πŸ“–

Claudio Canales

πŸ“–

vitaly-pevgonen

πŸ“–

Dmitry Shemetov

πŸ“–

hooncp

πŸ“–

Martin Laws

πŸ“–

Sean K Smith

πŸ’»

Kevin Neely

πŸ“–

Arief Rahmansyah

πŸ“–

Vishesh Handa

πŸ“–

Hitesh Kumar

πŸ“–

Spencer Woo

πŸ“–

ingalless

πŸ’» πŸ“–

JosΓ© Duarte

πŸ’» πŸ“–

Yenly

πŸ“–

hikerpig

πŸ’»

Sigfried Gold

πŸ“–

Tristan Sokol

πŸ’»

Danil Rodin

πŸ“–

Scott Williams

πŸ“–

jackiexiao

πŸ“–

John B Nelson

πŸ“–

Asif Mehedi

πŸ“–

Tan Li

πŸ’»

Shauna Gordon

πŸ“–

Mike Cluck

πŸ’»

Brandon Pugh

πŸ’»

Max Davitt

πŸ“–

Brian Anglin

πŸ“–

elswork

πŸ“–

lΓ©on h

πŸ’»

Nikhil Nygaard

πŸ“–

Mark Dixon

πŸ’»

Joel James

πŸ’»

Hashiguchi Ryo

πŸ“–

Michael Overmeyer

πŸ’»

Derrick Qin

πŸ“–

Omar LΓ³pez

πŸ“–

Robin King

πŸ’»

Dheepak

πŸ“–

Daniel VG

πŸ“–

Barabas

πŸ’»

Engincan VESKE

πŸ“–

Paul de Raaij

πŸ’»

Scott Bronson

πŸ“–

Rafael Riedel

πŸ“–

Pearcekieser

πŸ“–

Owen Young

πŸ“– πŸ–‹

Prashanth Subrahmanyam

πŸ“–

Jonas SPRENGER

πŸ’»

Paul

πŸ“–

Ikko Ashimine

πŸ“–

memeplex

πŸ’»

AndreiD049

πŸ’»

Yan

πŸ“–

Jim Tittsler

πŸ“–

Malcolm Mielle

πŸ“–

Veesar

πŸ“–

bentongxyz

πŸ’»

Brian DeVries

πŸ’»

Clifford Fajardo

πŸ”§

Chris Usick

πŸ’»

Joe DeCock

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!