I’m building a new activitypub/threadiverse software focused on the needs of self hosters who want a single user instance.

I’ve been posting with it semi-regularly for the last month, and I think it’s ready for an open demo.

One of my objectives is to have the lightest resource usage for memory and CPU constrained hardware, as well as the fastest loading web interface for older phones and limited data plans. I ran out of data on my phone last week and having a 41kb front page came in very handy.

You can try the web UI at https://scrapetacular.ydns.eu/latest You can also POST AS A GUEST TO THE FEDIVERSE without signing up. I’m not sure you can do this anywhere else, I’m manually approving posts on the backend because … well you know. If it asks for a user and pass, use guest and guest, your post will appear with a username like guest4269. Ideally, open this post and reply to it.

My other plan for mobile is to target the Sync for Lemmy app, as it’s dead, meaning it’s no longer a moving target.

I’ve made a few technical choices aimed at keeping things fast

These include:

No ORMs

  • They are convenient but make performance tuning difficult when things get complex as you don’t write the queries directly No Javascript
  • I may have to go back on this if I keep the guest posting function, it might need a captcha or anubis. No nested comments in the web UI
  • Nested comments are super slow, you are essentially querying the database for the OP, then querying for the N immediate children, then doing N queries for all of their children, then keep going recursively until you reach your depth limit, or all comments are found, you then need to render this structure with html/css No front page images
  • This is more of a personal preference that happened to make things load faster, the front page displays the text of the OP and last few comments IN FULL, giving a good preview of the conversation, and allocating more space to people who write rather than post memes. Inline images in posts are also replaced with links. No upvotes/downvotes
  • DID YOU KNOW that most threadiverse traffic is upvotes, downvotes adn emojis? You get an instant speedup by simply not processing them. Also, since this is a single user instance, all my comments are by definition awesome

ROADMAP

  • Massive refactor
  • Make the project public
  • unit tests (this is basically my only requirement for v1)
  • sync for lemmy API
  • admin UI
  • “AI” to “My Butt” wordfilter (mandatory)
  • default subscription to /c/fuck_AI
  • Solve channel discoverablity once and for all
  • SUPERBLOCK (i.e. block everyone who liked this comment)
  • dockerfile? I don’t use docker tbh
  • Read Mastodon posts? Do they even have good content?

Tech Stack

  • Go
  • SQLite

I’m using the pure Go sqlite library, Bluemonday for html sanitisation, Blackfriday for Markdown and Migrate for auto db migrations.

Thanks to Snoopy and the Cool Froges at jlai.lu for allowing me to test on their channel.

Is this project of interest to you? Have I missed anything obvious? Is there anything else you would like to know?

  • admin@scrapetacular.ydns.euOP
    link
    fedilink
    arrow-up
    0
    ·
    12 days ago

    I’m building a new activitypub/threadiverse software focused on the needs of self hosters who want a single user instance.

    I’ve been posting with it semi-regularly for the last month, and I think it’s ready for an open demo.

    One of my objectives is to have the lightest resource usage for memory and CPU constrained hardware, as well as the fastest loading web interface for older phones and limited data plans. I ran out of data on my phone last week and having a 41kb front page came in very handy.

    You can try the web UI at https://scrapetacular.ydns.eu/latest You can also POST AS A GUEST TO THE FEDIVERSE without signing up. I’m not sure you can do this anywhere else, I’m manually approving posts on the backend because … well you know. If it asks for a user and pass, use guest and guest, your post will appear with a username like guest4269.

    Ideally, open this post https://scrapetacular.ydns.eu/post/10127 and reply to it.

    My other plan for mobile is to target the Sync for Lemmy app, as it’s dead, meaning it’s no longer a moving target.

    I’ve made a few technical choices aimed at keeping things fast

    These include:

    No ORMs

    • They are convenient but make performance tuning difficult when things get complex as you don’t write the queries directly

    No Javascript

    • I may have to go back on this if I keep the guest posting function, it might need a captcha or anubis.

    No nested comments in the web UI

    • Nested comments are super slow, you are essentially querying the database for the OP, then querying for the N immediate children, then doing N queries for all of their children, then keep going recursively until you reach your depth limit, or all comments are found, you then need to render this structure with html/css

    No front page images

    • This is more of a personal preference that happened to make things load faster, the front page displays the text of the OP and last few comments IN FULL, giving a good preview of the conversation, and allocating more space to people who write rather than post memes. Inline images in posts are also replaced with links.

    No upvotes/downvotes

    • DID YOU KNOW that most threadiverse traffic is upvotes, downvotes adn emojis? You get an instant speedup by simply not processing them. Also, since this is a single user instance, all my comments are by definition awesome

    ROADMAP

    • Massive refactor
    • Make the project public
    • unit tests (this is basically my only requirement for v1)
    • sync for lemmy API
    • admin UI
    • “AI” to “My Butt” wordfilter (mandatory)
    • default subscription to /c/fuck_AI
    • Solve channel discoverablity once and for all
    • SUPERBLOCK (i.e. block everyone who liked this comment)
    • dockerfile? I don’t use docker tbh
    • Read Mastodon posts? Do they even have good content?

    Tech Stack

    • Go
    • SQLite

    I’m using the pure Go sqlite library, Bluemonday for html sanitisation, Blackfriday for Markdown and Migrate for auto db migrations.

    End

    Thanks to Snoopy and the Cool Froges at jlai.lu for allowing me to test on their channel.

    Is this project of interest to you? Have I missed anything obvious? Is there anything else you would like to know?

  • inlandempire@jlai.lu
    link
    fedilink
    arrow-up
    0
    ·
    11 days ago

    Hi from jlailu

    How do you plan on handling potential spam accounts using guest accounts to post in the fediverse?

    • admin@scrapetacular.ydns.euOP
      link
      fedilink
      arrow-up
      0
      ·
      10 days ago

      Hi, I’m manually approving each post at the moment, there’s been 4 so far, and I’m quite likely to switch this feature off soon.

      If I enable it again, I should probably limit guest posting to testing channels, and channels where I’ve spoken to the mods beforehand.

      If this becomes popular and also frequently abused, this won’t scale, so my options are:

      • rate limiting
      • captchas
      • keyword, image and link filters (this is a text only feature)

      Before the manual approval process.

      I’m considering adding a vibemoderating filter also for things that are obviously insulting, spammy or off topic. I’ll start a discussion about this in a more general fediverse channel soon.

  • just_chill@jlai.lu
    link
    fedilink
    arrow-up
    0
    ·
    10 days ago

    This looks nice well done ! I will try to advertise it a bit on mastodon, if you don’t mind, we need more lightweight and fast software.