Feed aggregator in the style of a TV guide
  • TypeScript 88.4%
  • CSS 10.5%
  • Dockerfile 0.6%
  • Nix 0.2%
  • HTML 0.2%
Find a file
2026-08-11 22:31:33 -07:00
.githooks chore: mise en place 2026-07-26 11:46:57 -07:00
common feat: show/hide feeds in guide 2026-07-10 21:41:48 -07:00
server fix: don't delete feed's child sources on delete 2026-08-11 22:29:31 -07:00
web fix: unsorted items prompt for deletion 2026-08-11 22:31:33 -07:00
.dockerignore feat(deploy): add Docker deployment with serveStatic for SPA 2026-04-19 19:20:55 -07:00
.gitignore chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
AGENTS.md chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
biome.json refactor: fix exhaustive deps and unused variable warnings 2026-05-24 22:03:33 -07:00
bun.lock fix: remove drag and drop 2026-05-31 01:41:26 -07:00
devenv.lock chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
devenv.nix chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
devenv.yaml chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
docker-compose.yml feat(deploy): add Docker deployment with serveStatic for SPA 2026-04-19 19:20:55 -07:00
Dockerfile fix: make prisma.config.ts tolerate missing DATABASE_URL during docker build 2026-05-13 16:04:04 -07:00
entrypoint.sh feat(deploy): add Docker deployment with serveStatic for SPA 2026-04-19 19:20:55 -07:00
package.json chore: biomejs and check command 2026-05-13 17:38:30 -07:00
README.md chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
secretspec.toml chore: add devenv and secretspec 2026-08-11 21:55:29 -07:00
tsconfig.base.json chore: scaffold bun workspaces monorepo 2026-04-16 21:12:08 -07:00

Hermes

A feed reader with a TV channel guide as its primary UI metaphor. Rows represent channels (ex: RSS feeds, media library streams), columns represent time slots or content items. Users browse content the same way they'd flip through an EPG (Electronic Program Guide).

Core Concept

The UI mimics a classic cable TV guide grid:

  • Y-axis (rows): Channels - each feed or media source is a "channel"
  • X-axis (columns): Content items ordered by time and width is the duration
  • Highlighted cell: Currently focused item, shown in a preview pane above the grid

Development

TypeScript monorepo (Bun workspaces) with three packages: common, server, web.

# starts server (:3000) + web (:5173)
run

# lint, format, and typecheck
check

Deploy

A Dockerfile and docker compose file is provided for a single-container deployment. The server serves the Vite-built frontend as static files from web/dist/.

# clone / pull changes, then
docker compose up --build

At startup the container runs Prisma migrations and then starts the Hono server. Mount a persistent volume for the SQLite database if using a file-based URL.