Skip to content

About

Turn your Obsidian vault into an explorable 3D galaxy 🌌 Folders become glowing planets you can orbit, zoom and fly into. Single static HTML, Three.js + bloom, no build, no plugin.

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌌 Knowledge Galaxy

Turn your Obsidian vault into an explorable 3D galaxy. Each top-level folder becomes a glowing planet; subfolders orbit as moons; clicking a planet flies the camera in and opens a panel with the folder's notes. Built with Three.js (WebGL + bloom + a custom atmosphere shader) in a single static HTML file β€” no build step, no plugin, no server required. Just open it.

Knowledge Galaxy

Per aspera ad astra β€” through hardship to the stars.

✨ Features

  • Real folder β†’ planet mapping. A small Python script scans your vault and generates the data; planet size scales with note count.
  • Full 3D interaction. Drag to orbit the galaxy, scroll to zoom, drag a planet to spin it, click to fly in. Press Esc to return.
  • Live drill-down. Entering a planet shows its subfolders as orbiting moons and lists recent notes in a side panel. Click any note to open it in Obsidian.
  • Five views. Galaxy, Grid, Timeline, Stats, and a Search box that hands off to Obsidian's full-vault search.
  • Looks the part. Bloom post-processing, a custom Fresnel atmosphere with animated electric arcs, a 9,000-point spiral galaxy core, and your own galaxy background image.
  • Zero dependencies to run. Textures are embedded as base64 so the page works straight from file:// β€” double-click and go.

πŸš€ Quick start

1. See the demo. Clone the repo and open index.html in your browser. It ships with demo data so the galaxy renders immediately.

git clone https://github.com/Aprillllllw/obsidian-galaxy-dashboard.git
cd obsidian-galaxy-dashboard
open index.html        # macOS β€” or just double-click the file

2. Point it at your own vault. Run the scanner with your vault path:

python3 scripts/update_dashboard.py --vault "/path/to/your/Vault"

Then refresh the page (Cmd/Ctrl+R). That's it β€” you're flying through your own notes. Re-run the scanner whenever you want fresh data.

Useful options:

# scan only a sub-folder as the galaxy root
python3 scripts/update_dashboard.py --vault "/path/to/Vault" --root "PARA"

# set the vault name used for obsidian:// links (defaults to the folder name)
python3 scripts/update_dashboard.py --vault "/path/to/Vault" --name "MyVault"

# hide folders with fewer than N notes (default 2)
python3 scripts/update_dashboard.py --vault "/path/to/Vault" --min 3

πŸ’‘ The obsidian:// links need the vault name to match exactly what Obsidian shows in its sidebar. If clicking a note does nothing, re-run with --name "Your Vault Name".

πŸ”Œ Install as Obsidian Plugin

Prefer the galaxy inside Obsidian? The plugin/ folder is a self-contained Obsidian plugin (no build step). It computes everything live from your vault β€” files, folders, tags, attachments, links, orphans, streak, open tasks β€” so you never need to run the Python scanner.

Install:

  1. Copy the plugin/ folder into your vault at <vault>/.obsidian/plugins/knowledge-galaxy-dashboard/

    cp -r plugin "/path/to/your/Vault/.obsidian/plugins/knowledge-galaxy-dashboard"
  2. In Obsidian: Settings β†’ Community plugins β†’ Installed plugins, refresh, then enable Knowledge Galaxy Dashboard.

  3. Click the orbit icon in the ribbon (or run the command "Open Knowledge Galaxy dashboard").

Notes:

  • Clicking a note in the plugin opens it directly in Obsidian.
  • Data is computed when the view opens; hit REFRESH DATA (top-right) to re-scan.
  • Planet styling is read from the plugin's own config.js β€” edit <vault>/.obsidian/plugins/knowledge-galaxy-dashboard/config.js to map your folder names to colors/rings/descriptions.
  • Custom planet art: drop <FolderName>.jpg (2:1 equirectangular) into the plugin's assets/ folder.
  • The standalone page below still works independently β€” the plugin does not replace it.

Nested vault? If your knowledge base lives inside one folder (e.g. MyKB/), set rootFolder: "MyKB" in the plugin's config.js β€” its sub-folders become the planets.

🎨 Customize

Open config.js β€” one small file. Map each folder to a color, subtitle, description, and optional Saturn rings:

window.GALAXY_CONFIG = {
  title: "KNOWLEDGE GALAXY",
  subtitle: "YOUR  SECOND  BRAIN  AS  A  UNIVERSE",
  quote: "Per aspera ad astra",
  style: {
    "01_Projects": { sub:"Active work", color:"#4cc3ff", ring:true,
                     desc:"Things you are actively pushing forward." },
    // ...add an entry per folder. Anything you skip gets an auto color.
  },
};

Folders you don't list still appear, with a color picked from palette. So the galaxy looks good even before you configure anything.

Use your own planet art

Each planet can wear a custom texture β€” a 2:1 equirectangular image (a sphere "unwrapped" into a flat rectangle). Name the file after the folder and re-pack:

# add textures/01_Projects.jpg, textures/02_Areas.jpg, ...
python3 scripts/embed_textures.py

This bundles textures/*.jpg and assets/bg.jpg into textures.js as base64 (needed because Chrome blocks WebGL from reading local images under file://). Folders without a matching texture fall back to a procedurally generated planet.

πŸ›  How it works

index.html        ← the whole app: Three.js scene, shaders, interaction
config.js         ← your folder β†’ planet styling
data.demo.js      ← demo data shipped with the repo (renders on first open)
data.js           ← generated from your vault; overrides the demo (gitignored)
textures.js       ← base64-packed planet textures + background
scripts/
  update_dashboard.py   scan vault β†’ data.js
  embed_textures.py     pack textures/ + assets/bg.jpg β†’ textures.js
  make_demo_data.py     regenerate the shipped demo data
assets/bg.jpg     ← galaxy background (drawn behind the planets)
textures/*.jpg    ← source planet textures (re-packed by embed_textures.py)

The dashboard is read-only and offline: it never writes to your vault and makes no network calls except loading Three.js from a CDN. Your notes stay on your machine.

πŸ”’ Privacy

data.js contains your real note titles and paths. The repo only ships data.demo.js (fake folders); your generated data.js is listed in .gitignore and loaded on top of the demo. So git never tracks it and you can't accidentally commit your notes β€” even if you fork. Delete data.js to fall back to the demo at any time.

πŸ“¦ Optional: run over http

You don't need a server (base64 textures make file:// work). But if you prefer http://localhost:

node serve.js            # http://localhost:8770
PORT=9000 node serve.js  # custom port

πŸ–Ό Assets & license

Code is released under the MIT License (see LICENSE). The bundled planet and background images were generated with OpenAI's image tools and are provided for free use alongside this project β€” swap in your own anytime.

Built with Three.js. Inspired by every PKM nerd who wishes their notes felt like a universe. πŸͺ

About

Turn your Obsidian vault into an explorable 3D galaxy 🌌 Folders become glowing planets you can orbit, zoom and fly into. Single static HTML, Three.js + bloom, no build, no plugin.

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages