podcast manager
1#+TITLE: skypod
2#+AUTHOR: Jonathan Raphaelson
3#+EMAIL: jon@accidental.cc
4
5An offline first RSS & Podcast PWA Application
6
7* What is Skypod?
8
9- rss/podcast subscription management
10- offline first; cache audio locally, and p2p sync between devices
11- podcast playback with nice features; skip silence, volume correction, etc.
12- fun to hack on
13
14* How does it work?
15
16- PWA stores and displays cached feeds, subscription, and listening history data locally
17- Feed proxy server provides a nice API for fetching feeds and extracting metadata
18- WebSocket signaling server for WebRTC peering, devices sync cached data and play state
19
20* Development
21
22Run the pwa+server with:
23
24#+BEGIN_SRC bash
25$ deno run dev
26#+END_SRC
27
28- Backend
29 - [[https://docs.deno.com/][Deno]] for a typescript runtime with nice tools
30 - [[https://oakserver.org/][Oak]] and Deno's ~stdlib~ for HTTP and WebSocket servers
31- Frontend
32 - [[https://vite.dev/][Vite]] (with the ~@deno/vite-plugin~) plugin for FE builds
33 - [[https://react.dev][React]] + [[https://zustand.docs.pmnd.rs][Zustand]] for UI
34 - [[https://dexie.org/][Dexie]] for browser storage and enabling syncing
35
36Still thinking about:
37
38- [[https://github.com/denoland/denokv][Deno.KV]] for backend storage
39- deno compile for static binary
40- docker compose for deployment with self-hosted KV
41
42See [[./devlog.org]] for design and architecture information.
43
44* Contributing
45
46- run ~git config core.hooksPath .githooks~ to install pre-commit hooks for lint/fmt
47- not really open to contributions right now, come back later.
48
49* License & Copyright
50
51Copyright (C) 2025 Jonathan Raphaelson
52
53This program is free software: you can redistribute it and/or modify it under the terms of
54the **Affero General Public License verson 3 or later** (AGPLv3+).
55
56Please see [[./license.txt]] for a copy of the full license.