No description
- Vue 63.3%
- Go 32.1%
- CSS 2.1%
- HTML 1.4%
- JavaScript 1.1%
Create a server (go) and webapp (vue) development tool to explore OPDS-PS capable servers. This tool is intended for development purposes only, it should allow to navigate the server, view raw requests and responses and interact with the API in a general way. I think it's best if we provide a columns layout to navigate the OPDS-PS server much like the macos finder does, with a panel with details to the far right for technical information. Here's the SPEC: https://specs.opds.io/ |
||
|---|---|---|
| cmd/server | ||
| internal | ||
| webapp | ||
| .gitignore | ||
| go.mod | ||
| README.md | ||
OPDS-PS Explorer
A development-only tool to explore OPDS-capable servers. It provides a Finder-style column layout to browse feeds, plus a technical panel for raw requests and responses.
Features
- Column navigation: Browse the OPDS catalog like macOS Finder—each column shows one level (root → categories → publications).
- Detail panel: View raw HTTP request (method, URL, headers) and response (status, headers, body). Parsed feed structure (links, navigation, publications) is also shown.
- Proxy API: The Go server fetches feeds server-side so you avoid CORS and can inspect exactly what was sent and received.
Supports OPDS 1.x (XML) and OPDS 2.x (JSON) feeds.
Quick start
Development
-
Start the Go API server (from repo root):
go run ./cmd/serverListens on
http://localhost:8080. -
Start the Vue dev server (with hot reload):
cd webapp && bun install && bun run devOpens at
http://localhost:5173and proxies/apito the Go server. -
Enter an OPDS catalog URL in the toolbar (e.g.
https://catalog.example.com/opds) and click Fetch. Navigate by clicking links in the columns; the right panel shows request/response and parsed feed.
Production build
cd webapp && bun install && bun run build
cd .. && go run ./cmd/server
Then open http://localhost:8080. The server serves the built Vue app from dist/ (override with OPDS_DIST if needed).
Project layout
cmd/server/— Go HTTP server entrypoint;internal/holds handlers and OPDS proxy.webapp/— Vue 3 + Vite app: toolbar, column area, detail panel.dist/— Created bybun run build; contains the production frontend.
API
- GET
/api/fetch?url=<encoded-url>— Fetches the URL, parses OPDS (XML/JSON), and returns{ request, response, feed?, error? }. - POST
/api/fetch— Same with JSON body:{ "url", "method?", "headers?", "body?" }.