https://github.com/silverbucket/inbox-rs
https://github.com/silverbucket/inbox-rs
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/silverbucket/inbox-rs
- Owner: silverbucket
- Created: 2026-03-13T20:51:18.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-04-13T21:07:42.000Z (2 months ago)
- Last Synced: 2026-04-13T23:02:18.758Z (2 months ago)
- Language: Svelte
- Homepage: https://inbox.5apps.com
- Size: 5.96 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Inbox RS
A universal inbox for saving URLs, notes, images, emails, and audio — backed by [remoteStorage](https://remotestorage.io). Your data stays on your own storage server, not someone else's cloud.
## What it does
**Web App** — A Svelte app that displays all your saved items in a card grid. Connect to any remoteStorage-compatible server to view, browse, and manage your inbox items. Click any card to view full details, edit, convert to a todo, or delete. The header also links to a Plugins page with downloadable browser and Thunderbird builds.
**Browser Extension** — A Chrome/Firefox extension for quickly saving things while browsing:
- **Save Page** — Saves the current page as a bookmark with title, og:image preview, favicon, and site name. For tweets, it captures the full tweet text and any attached images.
- **Quick Note** — Jot down a note with no page context needed.
- **Right-click: Save Link** — Save any link to your inbox.
- **Right-click: Save Image** — Downloads and saves the actual image binary (not just the URL).
- **Right-click: Save Selection** — Saves highlighted text as a note with a link back to the source page.
**Thunderbird Extension** — A Thunderbird MailExtension (128+) for saving emails to your inbox:
- Opens from the message toolbar when reading an email.
- Pre-fills subject, sender, and body from the current email.
- Includes an optional notes field for your own annotations.
- Saves a `mid:` URI link back to the original email in your mail client.
## Architecture
```
packages/
rs-module/ # Shared remoteStorage data module (types, schemas, CRUD)
web/ # Svelte web app (card grid, view modal, todos)
extension/ # Chrome MV3 + Firefox WebExtension (popup, context menus, content script)
thunderbird/ # Thunderbird MailExtension (message toolbar popup, email saving)
```
All four packages share the `@inbox-rs/rs-module` for consistent data types and storage layout.
### Storage layout
```
/inbox/items/{uuid} # JSON metadata for each item
/inbox/files/{uuid}.{ext} # Binary files (images, audio)
```
### Item types
| Type | Description |
|------|-------------|
| `bookmark` | URL with title, description, og:image, favicon. Optionally includes `body` (embedded content like tweet text) and `filePath` (downloaded image). |
| `note` | Freeform text with title and body. |
| `image` | Downloaded image binary with metadata and optional source URL. |
| `audio` | Audio recording with duration. |
| `document` | Uploaded file with metadata. |
| `code-snippet` | Code with syntax highlighting and language tag. |
| `email` | Email with subject, body, sender, optional notes, and `mid:` URI link. |
| `todo` | Task with title, completion status, and optional notes. Any item can be converted to a todo. |
## Quick start
See [DEVELOPMENT.md](DEVELOPMENT.md) for full setup instructions.
```bash
npm install
docker compose up -d # Start local remoteStorage server
npm run dev -w packages/web # Start web app on localhost:5173
npm run build # Build web app and package downloadable plugin artifacts into dist/
npm run build:extension # Build browser extension only
npm run build:thunderbird # Build Thunderbird extension only
```
After `npm run build`, the web app output in `packages/web/dist/` includes:
- `downloads/inbox-rs-chromium-.zip`
- `downloads/inbox-rs-firefox-.xpi`
- `downloads/inbox-rs-thunderbird-.xpi`
That makes the built `dist/` folder self-contained for static hosting.
## Versioning
The project currently uses the root `package.json` version as the release version for downloadable plugin artifacts. The packaging script reads that value and emits filenames like:
- `inbox-rs-chromium-0.1.0.zip`
- `inbox-rs-firefox-0.1.0.xpi`
- `inbox-rs-thunderbird-0.1.0.xpi`
In practice, that means a release bump should start by updating the root `version` field, then rebuilding so the generated downloads and metadata pick up the new versioned filenames.
## Tech stack
- **Svelte 5** with runes (`$state`, `$derived`, `$effect`, `$props`)
- **Vite 5** for both web app and extension builds
- **remotestorage.js** for data sync + **remotestorage-module-shares** for Sharesome integration
- **TypeScript** throughout
- **Chrome Manifest V3** / Firefox WebExtension APIs / **Thunderbird Manifest V2**
- **Armadietto** as the local dev remoteStorage server
## License
GPL-3.0