Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Collector's Notebook

Log Book 1024x1024
Hand drawn by yours truely. The only part other than the software name not generated by AI!

A lightweight, native desktop app for cataloguing personal collections.

I was looking for such a program and found none that either works or look modern. This is a personal project. I have little coding experience. Much as I am not an AI-hype, I asked Claude (Opus 4.8 and Fable 5) to built it in Rust + Slint. Later, in v2.0.0, it was migrated to Iced, and in v3.0.0, to Tauri. AI-generated software name was "Collector". I changed it to "Collector's Notebook", after "Traveler's Notebook", a journal style (and a brand) that looks just like the icon and logo.

The traveler's notebook is basically a piece of leather wrapped around papers. The papers (called "inserts") are held by a ribbon or rubber band that loops along the spine (fold) of the leather. The inserts can come in different styles, such as lined, dotted, grids, calendars, or blank, to suit different needs. Like the traveler's notebooks, Collector's Notebook is also versatile, in that you can catalogue not just your various collections, but also, I don't know, food in pantry or fridge, shops you've been into, cities traveled to, festivals, contacts, pet vet visits, books, music, gas refill dates, enemies, teeth for the tooth fairy, ex's you went through, etc.


image image
Click to enlarge

Features

  • Resizeable three-panel layout
  • Light and dark mode, and font size between 11-22pt
  • Customizable and renamable fields; also save all your fields as templates with names of your choice
  • Right click context menus for quick rename/duplication/deletion
  • Edit/View mode toggle, as well as inline edit panel when needed
  • Zoom images in/out 10x, and the ability to attach multiple photos to an item entry
  • Local JSON storage that you can migrate between machines with export/import
  • Simplified Chinese, Japanese, and Korean support for input texts (no UI translation)

New in v3.0!!!

v3.0 is a full migration from Iced UI to Tauri. This should bring more improvements:

  • Correct textboxes and hot keys
  • Better compatibiliy across systems
  • Smaller RAM usage (~90% less with my own collection)
  • Back up at every launch, and restore 5 most recent backups
  • Incremental manual photo back up
  • Various UI adjustments and improvements

Hopefully everything else is preserved.


Project Structure

collectors-notebook/
├─ .github/
│  └─ workflows/
│     └─ rust.yaml            # CI: builds Win/macOS/Linux, attaches to Releases on a version tag
├─ .gitignore
├─ ui/                        # frontend — embedded into the binary at build time
│  ├─ index.html              #   app shell
│  ├─ styles.css              #   the palette + all component styling
│  ├─ app.js                  #   the entire UI state machine (ported from the old update.rs/view.rs)
│  └─ fonts/                  #   bundled fonts (see "Fonts" below) — YOU add these
│     ├─ NotoSans-Regular.ttf
│     ├─ NotoSansCJK-Regular-subset.otf
│     └─ NotoSansCJK-Bold-subset.otf
└─ src-tauri/                 # backend + app config
   ├─ Cargo.toml              #   Rust dependencies
   ├─ Cargo.lock              #   pinned versions (COMMIT THIS)
   ├─ build.rs                #   three-line tauri-build hook
   ├─ tauri.conf.json         #   app config: window, identifier, bundle targets, icons
   ├─ capabilities/
   │  └─ default.json         #   permission set granted to the window
   ├─ icons/                  #   app icons — generated once, then committed (see "Icons")
   │  ├─ 32x32.png
   │  ├─ 128x128.png
   │  ├─ 128x128@2x.png
   │  ├─ icon.icns            #   macOS (required by the bundler)
   │  └─ icon.ico             #   Windows (required by the bundler)
   └─ src/
      ├─ main.rs              #   Tauri commands: load/save, photos, dialogs, backups
      ├─ model.rs             #   data types + persistence (shared, unchanged core)
      └─ image_util.rs        #   thumbnails, photo file management, base64 delivery

Building

Prerequisites

  • Rust (stable, 1.88+): https://rustup.rs
  • Tauri CLI 2.x. Install the prebuilt binary (seconds) rather than compiling it:
    cargo install cargo-binstall
    cargo binstall tauri-cli
    Verify: cargo tauri --version prints a 2.x version.
  • Platform toolchains:
    • Windows: MSVC Build Tools; WebView2 ships with Win 10/11.
    • macOS: Xcode Command Line Tools (xcode-select --install).
    • Linux: the WebKitGTK stack —
      sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file \
        libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev

Building and Packaging

cargo tauri build writes bundles under src-tauri/target/release/bundle/. Defaults per platform:

Platform Output Location
Windows NSIS installer *-setup.exe (+ portable collectors-notebook.exe one level up) bundle/nsis/
macOS .dmg (contains a proper .app) bundle/dmg/
Linux .AppImage (self-contained) and/or .deb bundle/appimage/, bundle/deb/

Pick specific formats with --bundles, e.g.:

cargo tauri build --bundles msi          # Windows MSI
cargo tauri build --bundles appimage,deb # Linux: both
cargo tauri build --bundles app,dmg      # macOS

Data locations

OS Path
Linux ~/.local/share/collector/
macOS ~/Library/Application Support/collector/
Windows %APPDATA%\collector\

Two files are written: data.json (collections + items) and settings.json (theme, panel widths).


Import / Export

Export writes the full AppData JSON to ~/Documents/collector-export.json.
Import reads from the same path and merges — existing items (matched by UUID) are not overwritten, so you can safely import old backups without losing edits.


Running the downloads

  • Windows: run collector-windows-x86_64.exe. SmartScreen may warn on first launch (unsigned) — click "More info" then "Run anyway".
  • macOS: on first launch Gatekeeper blocks unsigned apps — right-click the file → Open → confirm (double-clicking won't show the Open option). After that it runs normally.
  • Linux: run the file

Not in the plans

  • UI translation.
    • The UI is easy enough to navigate without much dictionary look-ups. The field labels can be renamed into other languages. The only problem is I've encountered Chinese, Japanese, and Korean rendering, which will be packaged on a per-case basis.
  • Migration to SQLite or other database structure vs JSON.
    • For a personal collection software (mainly for my own use), JSON works fine. Unless you own a museum with 1000+ articles, or you have... a problem (in which case you need a doctor, not a program)

About

A collection catalogue software written using Claude. 用Claude AI写的收藏编目软件

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages