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.