Convert Figma logo to code with AI

foambubble logofoam

A personal knowledge management and sharing system for VSCode

15,215
649
15,215
111

Top Related Projects

31,960

A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap

6,630

The personal knowledge management (PKM) tool that grows as you do!

18,247

A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang.

6,315

Athens is no longer maintainted. Athens was an open-source, collaborative knowledge graph, backed by YC W21

10,150

Your One-Stop Publication Workbench

Quick Overview

Foam is a personal knowledge management and sharing system inspired by Roam Research, built on Visual Studio Code and GitHub. It helps users create and organize their thoughts, notes, and research using a network of linked notes, allowing for flexible and interconnected knowledge management.

Pros

  • Open-source and free to use
  • Integrates seamlessly with Visual Studio Code
  • Supports Markdown for easy note-taking and formatting
  • Offers powerful graph visualization for exploring connections between notes

Cons

  • Requires some technical knowledge to set up and use effectively
  • Less polished user interface compared to dedicated note-taking apps
  • Limited mobile support, primarily desktop-focused
  • May have a steeper learning curve for users unfamiliar with VS Code or Markdown

Getting Started

  1. Install Visual Studio Code
  2. Install the Foam extension from the VS Code marketplace
  3. Create a new folder for your Foam workspace
  4. Open the folder in VS Code
  5. Run the "Foam: Create New Note" command to start creating notes
  6. Use double square brackets [[like this]] to create links between notes
  7. Use the graph visualization to explore connections between your notes

Note: Foam is not a code library, so code examples are not applicable in this case.

Competitor Comparisons

31,960

A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap

Pros of Logseq

  • Built-in graph visualization and daily notes features
  • Supports both Markdown and Org-mode syntax
  • Offers a more polished and user-friendly interface

Cons of Logseq

  • Less flexible for customization compared to Foam
  • Requires a separate application, not integrated with VS Code
  • May have a steeper learning curve for new users

Code Comparison

Foam (VS Code extension):

"foam.edit.linkReferenceDefinitions": "withoutExtensions",
"foam.openDailyNote.directory": "journal",
"foam.openDailyNote.filenameFormat": "yyyy-mm-dd",

Logseq (Configuration):

{:journal-basis "daily"
 :preferred-format "Markdown"
 :preferred-workflow "now"
 :graph-view? true}

Both Foam and Logseq are note-taking and knowledge management tools, but they differ in their approach and features. Foam is a VS Code extension that leverages the editor's ecosystem, while Logseq is a standalone application with a focus on networked thought and daily journaling. Foam offers more flexibility and integration with development workflows, whereas Logseq provides a more structured and visually appealing experience out of the box. The choice between the two depends on individual preferences and use cases.

6,630

The personal knowledge management (PKM) tool that grows as you do!

Pros of Dendron

  • More robust and feature-rich, with advanced hierarchical note-taking capabilities
  • Better suited for large-scale knowledge management with powerful search and navigation
  • Active development and regular updates, with a strong community and ecosystem

Cons of Dendron

  • Steeper learning curve due to more complex features and hierarchical structure
  • Requires more setup and configuration compared to Foam's simpler approach
  • May feel overwhelming for users who prefer a minimalist note-taking experience

Code Comparison

Dendron schema example:

version: 1
schemas:
  - id: person
    title: Person
    parent: root
    children:
      - name
      - age

Foam link example:

[[wikilink]]
[GitHub-style link](./note.md)

Both projects use Markdown for note-taking, but Dendron introduces additional syntax and structures for advanced organization and linking. Foam focuses on simplicity and compatibility with standard Markdown conventions.

18,247

A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang.

Pros of SiYuan

  • Built-in web server and mobile apps for cross-platform synchronization
  • Supports SQL queries for advanced data retrieval and analysis
  • Offers a WYSIWYG editor with real-time rendering

Cons of SiYuan

  • Steeper learning curve due to more complex features
  • Less integration with existing text editors like VS Code
  • Requires running a local server, which may not suit all workflows

Code Comparison

SiYuan (SQL query example):

SELECT * FROM blocks 
WHERE content LIKE '%#todo%' 
AND type = 'p'
ORDER BY created DESC

Foam (YAML frontmatter example):

---
foam_template:
  name: New Note
  description: Default new note template
---
# ${1:$TM_FILENAME_BASE}

$0

While both projects aim to enhance note-taking and knowledge management, SiYuan offers a more feature-rich, standalone application with advanced querying capabilities. Foam, on the other hand, focuses on integrating with existing tools and workflows, particularly within VS Code, providing a lighter-weight solution for users who prefer working in their familiar text editor environment.

6,315

Athens is no longer maintainted. Athens was an open-source, collaborative knowledge graph, backed by YC W21

Pros of Athens

  • Built with Clojure/ClojureScript, offering a robust and functional programming approach
  • Features a graph-based knowledge structure, allowing for more flexible and interconnected note-taking
  • Provides real-time collaboration capabilities out of the box

Cons of Athens

  • Steeper learning curve due to its unique data model and Clojure-based architecture
  • Less integrated with existing text editors, requiring users to adapt to a new environment
  • Currently in alpha stage, potentially less stable than more mature alternatives

Code Comparison

Athens (ClojureScript):

(defn create-page [title]
  (let [page-id (gen-uuid)]
    (d/transact! conn [{:block/uid page-id
                        :node/title title}])))

Foam (TypeScript):

export function createNote(title: string): Note {
  const id = generateId();
  return { id, title, content: '', links: [] };
}

Both projects aim to enhance personal knowledge management, but they take different approaches. Athens focuses on a graph-based structure with real-time collaboration, while Foam integrates more closely with existing text editors and version control systems. The choice between them depends on individual preferences for data structure, collaboration needs, and familiarity with their respective ecosystems.

10,150

Your One-Stop Publication Workbench

Pros of Zettlr

  • Full-featured Markdown editor with a rich user interface
  • Integrated citation management and academic writing features
  • Cross-platform desktop application with offline capabilities

Cons of Zettlr

  • Less flexible for custom workflows compared to Foam
  • Steeper learning curve for users new to Zettelkasten method
  • Limited integration with version control systems like Git

Code Comparison

Zettlr (TypeScript):

export function createWindow(): BrowserWindow {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  });

Foam (JavaScript):

function createNote(notePath, noteTemplate) {
  const contents = noteTemplate
    ? fs.readFileSync(noteTemplate, "utf8")
    : "";
  fs.writeFileSync(notePath, contents);
}

While both projects aim to enhance note-taking and knowledge management, Zettlr offers a more comprehensive, standalone application with academic features, whereas Foam provides a flexible, extensible framework for building personal knowledge management systems within Visual Studio Code.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Foam

👀This is an early stage project under rapid development. For updates join the Foam community Discord! 💬

All Contributors

Visual Studio Marketplace Installs 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. Log in on your GitHub account.
  2. Create a GitHub repository from foam-template. If you want to keep your thoughts to yourself, remember to set the repository private.
  3. Clone the repository and open it in VS Code.
  4. 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.

Contribution Guide

See the Contribution Guide

Code of conduct

See the Code of Conduct

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Jani Eväkallio
Jani Eväkallio

💻 📖
Joe Previte
Joe Previte

💻 📖
Riccardo
Riccardo

💻 📖
Janne Ojanaho
Janne Ojanaho

💻 📖
Paul Shen
Paul Shen

📖
coffenbacher
coffenbacher

📖
Mathieu Dutour
Mathieu Dutour

📖
Michael Hansen
Michael Hansen

📖
David Nadlinger
David Nadlinger

📖
Fernando
Fernando

📖
Juan Gonzalez
Juan Gonzalez

📖
Louie Christie
Louie Christie

📖
Sandro
Sandro

📖
Simon Knott
Simon Knott

📖
Steven
Steven

📖
Tim
Tim

📖
Saurav Khdoolia
Saurav Khdoolia

📖
Ankit Tiwari
Ankit Tiwari

📖 ⚠️ 💻
Ayush Baweja
Ayush Baweja

📖
TaiChi-IO
TaiChi-IO

📖
Juan F Gonzalez
Juan F Gonzalez

📖
Sanket Dasgupta
Sanket Dasgupta

📖 💻
Nicholas Stafie
Nicholas Stafie

📖
Francis Hamel
Francis Hamel

💻
digiguru
digiguru

💻 📖
CHIRAG SINGHAL
CHIRAG SINGHAL

💻
Jonathan Carter
Jonathan Carter

📖
Julian Elve
Julian Elve

📖
Thomas Koppelaar
Thomas Koppelaar

💬 💻 📓
Akshay
Akshay

💻
John Lindquist
John Lindquist

📖
Ashwin Ramaswami
Ashwin Ramaswami

📖
Claudio Canales
Claudio Canales

📖
vitaly-pevgonen
vitaly-pevgonen

📖
Dmitry Shemetov
Dmitry Shemetov

📖
hooncp
hooncp

📖
Martin Laws
Martin Laws

📖
Sean K Smith
Sean K Smith

💻
Kevin Neely
Kevin Neely

📖
Arief Rahmansyah
Arief Rahmansyah

📖
Vishesh Handa
Vishesh Handa

📖
Hitesh Kumar
Hitesh Kumar

📖
Spencer Woo
Spencer Woo

📖
ingalless
ingalless

💻 📖
José Duarte
José Duarte

💻 📖
Yenly
Yenly

📖
hikerpig
hikerpig

💻
Sigfried Gold
Sigfried Gold

📖
Tristan Sokol
Tristan Sokol

💻
Danil Rodin
Danil Rodin

📖
Scott Williams
Scott Williams

📖
jackiexiao
jackiexiao

📖
John B Nelson
John B Nelson

📖
Asif Mehedi
Asif Mehedi

📖
Tan Li
Tan Li

💻
Shauna Gordon
Shauna Gordon

📖
Mike Cluck
Mike Cluck

💻
Brandon Pugh
Brandon Pugh

💻
Max Davitt
Max Davitt

📖
Brian Anglin
Brian Anglin

📖
elswork
elswork

📖
léon h
léon h

💻
Nikhil Nygaard
Nikhil Nygaard

📖
Mark Dixon
Mark Dixon

💻
Joel James
Joel James

💻
Hashiguchi Ryo
Hashiguchi Ryo

📖
Michael Overmeyer
Michael Overmeyer

💻
Derrick Qin
Derrick Qin

📖
Omar López
Omar López

📖
Robin King
Robin King

💻
Dheepak
Dheepak

📖
Daniel VG
Daniel VG

📖
Barabas
Barabas

💻
Engincan VESKE
Engincan VESKE

📖
Paul de Raaij
Paul de Raaij

💻
Scott Bronson
Scott Bronson

📖
Rafael Riedel
Rafael Riedel

📖
Pearcekieser
Pearcekieser

📖
Owen Young
Owen Young

📖 🖋
Prashanth Subrahmanyam
Prashanth Subrahmanyam

📖
Jonas SPRENGER
Jonas SPRENGER

💻
Paul
Paul

📖
Ikko Ashimine
Ikko Ashimine

📖
memeplex
memeplex

💻
AndreiD049
AndreiD049

💻
Yan
Yan

📖
Jim Tittsler
Jim Tittsler

📖
Malcolm Mielle
Malcolm Mielle

📖
Veesar
Veesar

📖
bentongxyz
bentongxyz

💻
Brian DeVries
Brian DeVries

💻
Clifford Fajardo
Clifford Fajardo

🔧
Chris Usick
Chris Usick

💻
Joe DeCock
Joe DeCock

💻
Drew Tyler
Drew Tyler

📖
Lauviah0622
Lauviah0622

💻
Josh Dover
Josh Dover

💻
Phil Helm
Phil Helm

📖
Larry Li
Larry Li

💻
Joe Taber
Joe Taber

📖
Woosuk Park
Woosuk Park

📖
Daniel Murphy
Daniel Murphy

💻
Dominic D
Dominic D

💻
luca
luca

📖
Lloyd Jackman
Lloyd Jackman

📖
sn3akiwhizper
sn3akiwhizper

📖
jonathan berger
jonathan berger

📖
Daniel Wang
Daniel Wang

💻
Liu YongLiang
Liu YongLiang

📖
Scott Akerman
Scott Akerman

💻
Jim Graham
Jim Graham

💻
Zhizhen He
Zhizhen He

🔧
Tony Cheneau
Tony Cheneau

📖
Nicholas Latham
Nicholas Latham

💻
Tomochika Hara
Tomochika Hara

📖
Daniel Carosone
Daniel Carosone

📖
Miguel Angel Bruni Montero
Miguel Angel Bruni Montero

💻
Kevin Walsh
Kevin Walsh

📖
Xinglan Liu
Xinglan Liu

💻
Thomas Hegghammer
Thomas Hegghammer

📖

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

NPM DownloadsLast 30 Days