Skip to content

Golang Watcher for Obsidian Sync to S3Β #1

@ParthKapoor-dev

Description

@ParthKapoor-dev

πŸ“„ Issue Description:

✨ Feature Overview:

Implement a Golang-based file watcher that continuously monitors a local Obsidian vault (Markdown files + folder structure), and automatically syncs modified files to the configured S3 bucket after a debounce period of 5 minutes.


πŸ”§ Use Case:

This will allow users to work on their Obsidian notes locally and have them automatically backed up and accessible through the LNX Vault app. It bridges the gap between local Markdown workflows and the web UI.


πŸ“¦ Expected Behavior:

  • Watch a configurable directory (e.g., ~/ObsidianVault)

  • Detect file creations, edits, deletions in .md files and folders

  • Wait for 5 minutes after the last change (debounce)

  • Upload changed/added files to their respective paths in the connected S3 bucket

  • Maintain folder structure

  • Optionally delete removed files from S3 (can be behind a flag)

  • Use environment variables to configure:

    • Watch directory path
    • S3 keys, bucket, region, endpoint (for Spaces or S3-compatible providers)

πŸ” Security & Auth:

  • S3 credentials will be pulled from a local .env or system env
  • The tool should run locally (CLI or daemon mode), no need to expose any web endpoints

βš™οΈ Tech Requirements:


πŸ“ Folder Structure Example:

πŸ“‚ ~/ObsidianVault
 ┣ πŸ“‚ Personal
 ┃ β”— πŸ“„ journal.md
 ┣ πŸ“‚ Work
 ┃ β”— πŸ“„ project-notes.md

Should be mirrored to:

s3://lnx-vault/parthkapoor/Personal/journal.md
s3://lnx-vault/parthkapoor/Work/project-notes.md

βœ… Acceptance Criteria:

  • Local file watcher handles changes efficiently
  • S3 sync works and respects directory structure
  • Sync only triggers after 5 min of inactivity
  • No duplicate uploads if file is unchanged
  • Configurable paths and secrets via .env
  • Runs on Linux/Mac/Windows

πŸ“Œ Additional Context:

This enhancement makes the Vault usable as a personal Obsidian cloud backend β€” allowing users to work offline, then access notes, dotfiles, or guides from anywhere via the web UI at [lnx.parthkapoor.me](https://lnx.parthkapoor.me).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions