# VaultLink self-hosted Obsidian plugin for file syncing [![Check](https://github.com/schmelczer/vault-link/actions/workflows/check.yml/badge.svg)](https://github.com/schmelczer/vault-link/actions/workflows/check.yml) [![E2E tests](https://github.com/schmelczer/vault-link/actions/workflows/e2e.yml/badge.svg)](https://github.com/schmelczer/vault-link/actions/workflows/e2e.yml) [![Publish server Docker image](https://github.com/schmelczer/vault-link/actions/workflows/publish-server-docker.yml/badge.svg)](https://github.com/schmelczer/vault-link/actions/workflows/publish-server-docker.yml) [![Publish CLI](https://github.com/schmelczer/vault-link/actions/workflows/publish-cli-docker.yml/badge.svg)](https://github.com/schmelczer/vault-link/actions/workflows/publish-cli-docker.yml) [![Publish Obsidian plugin](https://github.com/schmelczer/vault-link/actions/workflows/publish-plugin.yml/badge.svg)](https://github.com/schmelczer/vault-link/actions/workflows/publish-plugin.yml) ## Develop ### Set up Node.JS 25 with [nvm](https://github.com/nvm-sh/nvm) - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash` - `nvm install 25` - `nvm use 25` - Optionally, set the system-wide default: `nvm alias default 25` ### Set up Rust - Install [`rustup`](https://rustup.rs): `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` - Install [`wasm-pack`](https://rustwasm.github.io/wasm-pack/installer): `curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh` - `cargo install cargo-insta sqlx-cli` ### Install Obsidian on Linux ```sh apt install flatpak flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak install flathub md.obsidian.Obsidian flatpak run md.obsidian.Obsidian ``` #### Run in development mode Start the server: ```sh cargo install sqlx-cli cd sync-server cargo run config-e2e.yml ``` ```sh cd frontend npm install npm run dev ``` ### Scripts #### Before pushing ```sh scripts/check.sh --fix ``` #### Update HTTP API TS bindings ```sh scripts/update-api-types.sh ``` #### Publish new version ```sh scripts/bump-version.sh patch ``` #### Run E2E tests ```sh scripts/e2e.sh 8 ``` And to clean up the logs & database files, run `scripts/clean-up.sh` ## Projects - [Sync server](./sync-server/README.md)