···14141515### TODO (backend)
16161717-- [x] parse rss feeds
1818-- [x] email sending
1919-- [x] `fetcher_factory`_supervisor
2017- [x] feed `fetcher` actor per feed
2121- - [x] fetch feed using database records
2218 - [x] fetch all feeds periodically
2319 - [ ] persist time-to-check to database so the actor restarting doesnt preemptively fetch the feed again
2424- - [x] (pub-sub) send feeds to user actors
2520 - [x] incremental timeouts on failure
2621 - [ ] test that
2722 - [ ] delete feed after too many failures, notify subscribed users
2828- - [x] make sure they get published in the order they were posted in
2929-- [x] `sender_factory`_supervisor
3023- [x] `sender` actor per user
3131- - [x] spawn on startup
3232- - [x] (pub-sub) receive new items from fetcher
3333- - [x] check feed against sent items in database
3434- - [x] send new items to user
3535- - [x] success: persist success to db
3636- - [x] failure: inremental timeout
3737- - [ ] test that
2424+ - [x] failure: inremental timeout
2525+ - [ ] test that
3826- [ ] custom `logging.configure`
3927 - [ ] log info about supervision status
4028 - [ ] ewe logs
41294242-- [ ] backend manager
4343- - [ ] TESTING THIS
4444- - [x] `backend.new_subscription(backend_name, user, feed)`
4545- - [x] save new subscription to database
4646- - [x] notify responsible sender
4747- - [ ] notify through manager instead of pubsub
4848- - [x] start sender if not running
4949- - [x] start fetcher if not running
5050- - [x] `backend.remove_subscription(backend_name, user, feed)`
5151- - [x] delete from database
5252- - [x] notify sender
5353- - [ ] notify through manager instead of pubsub
5454- - [x] if noone is subscribed anymore
5555- - [x] remove feed from database
5656- - [x] stop fetcher
3030+- [x] backend manager
5731 - [ ] `backend.status(backend_name)`
5832 - [ ] fetcher data
5933 - [ ] time till next fetch
···6135 - [ ] sender data
6236 - [ ] status ok / issues
6337 - [ ] maybe mails sent? (we do have this data)
6464- - [x] `backend.restart_feed(backend_name, feed)`
6565- - restart the fetcher for this feed
6666- - [x] `backend.refetch(backend_name, feed)`
6767- - trigger early fetching of a given feed
6868- - [x] `backend.restart_user(backend_name, user)`
6969- - restart sender for this user
7070- - [x] `backend.find_feed(backend_name, uri) -> Result(rss.Location, Nil)`
7171- - [x] check database
7272- - [x] found -> found `rss.Location`
7373- - [x] not found -> `rss.new_location`
7474- - [x] db_error -> Nil
7575-7676-77387839---
7940···9152 - [ ] tests
9253 - [ ] sessions?
9354 - [ ] user ui
9494- - [ ] configure rss feeds to track per user
9595- - [ ] create / delete fetchers and sender accordingly
5555+ - [x] configure rss feeds to track per user
5656+ - [x] create / delete fetchers and sender accordingly
9657 - [ ] change password
9758 - [ ] update feed subscriptions in database
9859 - [ ] admin panel?