~vikanezrimaya

IndieWeb

https://vikanezrimaya.xyz/

Loves NixOS, IndieWeb, coffee and hamburgers.

Trackers

~vikanezrimaya/kittybox

Last active 1 year, 4 months ago

#9 Postgres backend 1 year, 1 month ago

Comment by ~vikanezrimaya on ~vikanezrimaya/kittybox

REPORTED RESOLVED IMPLEMENTED

#7 Searching 1 year, 1 month ago

feature added by ~vikanezrimaya on ~vikanezrimaya/kittybox

#7 Searching 1 year, 1 month ago

Comment by ~vikanezrimaya on ~vikanezrimaya/kittybox

Postgres also has a good search functionality, including full-text search. See https://fireburn.ru/posts/kittybox-postgres-experiment-1 for details.

#14 Use `mf2py` in the end-to-end tests to test for MF2 markup 1 year, 4 months ago

Ticket created by ~vikanezrimaya on ~vikanezrimaya/kittybox

#13 Microsub support 1 year, 8 months ago

Ticket created by ~vikanezrimaya on ~vikanezrimaya/kittybox

#Firehose

Fetches feeds, parses them and dumps their contents into the database.

May be a good idea to use process boundaries to isolate it, though as Rust is memory-safe, merits of such isolation are not clear.

#Queries

Users own feeds. Feeds reference posts saved in the database. Post key may be UID/URL or a UUID (not sure which would be better).

Since JF2 is a simpler format, some fields like publishing date may be reified into database columns for easier querying. However, the schema isn't yet clear in my head.

#Goodies

#Show like/bookmark/repost status via database integration

See Kittybox Postgres experiment #2 for more info.

Will need a method on Storage trait and passing Storage to the Microsub query subsystem.

#Virtual feeds

Instead of being real feeds in the database, these feeds might be curated by an algorithm.

(I wonder how hard it is to stuff a WASM runtime into Kittybox to allow executing custom code for building these feeds...)

#Crawler

Might be interesting to build a crawler system that uses MF2 metadata to build a social graph and create a feed of "friends-of-friends". (Virtual feeds support might be useful)

#12 Idea: IndieAuth via push notifications 1 year, 8 months ago

Ticket created by ~vikanezrimaya on ~vikanezrimaya/kittybox

Workflow:

  1. Authorization page sends request to send a push notification
    • Heavily rate-limit this endpoint to prevent abuse
    • Should only be available if there is a push notification endpoint on file (Kittybox Companion for Android should implement this)
  2. Use UnifiedPush to send a push notification to a device already logged in
  3. Device shows an authentication prompt
    • Should contain all data related to this authorization
    • No validation should be necessary: all data was already validated by the authorization endpoint and is trusted
  4. If accepted, device pings the Authorization Endpoint with an OAuth2 token scoped to kittybox:authenticate_other_devices (scope name subject to bikeshedding)
  5. Authorization page long-polls (or receives by other means) the result and sends the authorization code to the redirect URI

#11 Storage: transactions 1 year, 9 months ago

feature added by ~vikanezrimaya on ~vikanezrimaya/kittybox

#11 Storage: transactions 1 year, 9 months ago

Ticket created by ~vikanezrimaya on ~vikanezrimaya/kittybox

Arbitrary post operations in a safe manner.

trait Storage {
    type Transaction: Transaction;

    /// Begin a new atomic transaction.
    async fn begin(&self) -> Self::Transaction;
}

trait Transaction: Storage {
    type PostGuard: TxnPostGuard;
    /// Commit the transaction.
    async fn commit(self) -> Result<()>;
    /// Rollback the transaction explicitly.
    ///
    /// Preferably, this would also happen on Drop.
    async fn rollback(self);

    /// Check a post out of the storage to update it.
    async fn get_for_update(&self, url: &str) -> Result<Self::PostGuard>;

    /// Finish an update of a post, atomically updating it.
    async fn finish_update(&self, guard: Self::PostGuard) -> Result<()>;
}

trait TxnPostGuard: DerefMut<serde_json::Value> {}

#10 Idea: consider using the `html` crate 1 year, 9 months ago

Ticket created by ~vikanezrimaya on ~vikanezrimaya/kittybox

#9 Postgres backend 1 year, 10 months ago

~vikanezrimaya assigned ~vikanezrimaya to #9 on ~vikanezrimaya/kittybox