Help us shape the future of Go! Take the 2026 Go Developer Survey

wire

module
v0.0.0-...-2ee7fec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2026 License: MIT

README

Wire

A self-hosted feed reader built for speed, simplicity, and offline reading. Single-binary deployment, SQLite storage, Svelte SPA front-end. Inspired by Miniflux but opinionated differently — see design.md for the full spec.

Status

Phase 0 (foundation). Schema, server skeleton, SPA scaffold, container build. Feed polling and content extraction land in Phase 1.

Quick start (development)

make extension   # one-time: build the Honker SQLite extension (Rust cdylib)
make build       # build SPA + Go binary
./wire serve     # listens on :8080 by default

Quick start (Docker)

docker build -t wire:foundation .
docker run --rm -v wire-data:/data -p 8080:8080 wire:foundation

Configuration

Variable Default Description
WIRE_DB_PATH ./wire.db SQLite database file
WIRE_LISTEN :8080 HTTP listen address
WIRE_LOG_LEVEL info debug | info | warn | error
WIRE_LOG_FORMAT json json | text
WIRE_HONKER_EXTENSION_PATH ./build/libhonker_ext Honker SQLite extension cdylib path (no .so/.dylib suffix — SQLite appends it)

License

MIT — see LICENSE.

Directories

Path Synopsis
cmd
wire command
internal
api
config
Package config loads runtime configuration from environment variables.
Package config loads runtime configuration from environment variables.
discover
Package discover finds candidate feed URLs for a website.
Package discover finds candidate feed URLs for a website.
extract
Package extract turns a raw HTML article page into sanitized, reader-ready content.
Package extract turns a raw HTML article page into sanitized, reader-ready content.
feedfetch
Package feedfetch provides an HTTP client tailored for feed polling: conditional GET via ETag/Last-Modified, redirect handling with a hard cap, body-size limits, and parsing of Cache-Control max-age and Retry-After headers.
Package feedfetch provides an HTTP client tailored for feed polling: conditional GET via ETag/Last-Modified, redirect handling with a hard cap, body-size limits, and parsing of Cache-Control max-age and Retry-After headers.
feedparse
Package feedparse converts raw feed bytes (RSS, Atom, JSON Feed) into ready-to-store model.Entry values.
Package feedparse converts raw feed bytes (RSS, Atom, JSON Feed) into ready-to-store model.Entry values.
feedpoll
Package feedpoll implements Wire's adaptive feed-polling worker and cron dispatcher (design.md §5).
Package feedpoll implements Wire's adaptive feed-polling worker and cron dispatcher (design.md §5).
jobs
Package jobs defines the queue/scheduler abstraction used by Wire.
Package jobs defines the queue/scheduler abstraction used by Wire.
logger
Package logger constructs slog.Loggers from config strings.
Package logger constructs slog.Loggers from config strings.
model
Package model defines the core domain entities.
Package model defines the core domain entities.
opml
Package opml parses and emits OPML 2.0 subscription documents.
Package opml parses and emits OPML 2.0 subscription documents.
ratelimit
Package ratelimit provides per-host rate limiting and exponential backoff helpers used by Wire's poll/extract workers.
Package ratelimit provides per-host rate limiting and exponential backoff helpers used by Wire's poll/extract workers.
store
Package store wraps SQLite access with the connection-time pragmas Wire requires.
Package store wraps SQLite access with the connection-time pragmas Wire requires.
store/schema
Package schema embeds the SQL migration files.
Package schema embeds the SQL migration files.
web
Package web embeds the built SvelteKit SPA produced by `cd web && npm run build`.
Package web embeds the built SvelteKit SPA produced by `cd web && npm run build`.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL