ATProto forum built with ESAV
TypeScript 98.7%
CSS 0.9%
HTML 0.5%
Other 0.1%
8 1 0

Clone this repository

https://tangled.org/whey.party/forumtest
git@tangled.org:whey.party/forumtest

For self-hosted knots, clone URLs may differ based on your setup.

README.md

ForumTest - ATProto forum built with ESAV#

its an atproto forum built with ESAV, an elasticsearch-based configurable generic appview.

this project explores how far you can push ESAV as a backend with a example product (this forum atproto forum test thing). everything goes through ESAV, except for identity resolution, i have a deno deploy app that i use and share across multiple projects (is used in red dwarf too)

i havent enabled a CDN yet so currently all images load using getBlob

Live at: https://forumtest.whey.party
Discuss at: https://forumtest.whey.party/f/@forumtest.whey.party

ESAV config#

custom record types:

"record_types": [
  "party.whey.ft.topic.post",
  "party.whey.ft.topic.reaction",
  "party.whey.ft.topic.moderation",
  "party.whey.ft.forum.definition",
  "party.whey.ft.forum.layout",
  "party.whey.ft.forum.request",
  "party.whey.ft.forum.accept",
  "party.whey.ft.forum.category"
  ],

custom indexes:

"index_fields": {
  "party.whey.ft.topic.reaction": {
    "subject": {
      "id": "reactionSubject",
      "type": "keyword"
    },
    "reactionEmoji": {
      "id": "reactionEmoji",
      "type": "keyword"
    }
  },
  "party.whey.ft.topic.post": {
    "text": {
      "id": "text",
      "type": "text"
    },
    "title": {
      "id": "title",
      "type": "text"
    },
    "reply.root.uri": {
      "id": "root",
      "type": "keyword"
    },
    "reply.parent.uri": {
      "id": "parent",
      "type": "keyword"
    },
    "forum": {
      "id": "forum",
      "type": "keyword"
    }
  },
  "party.whey.ft.forum.definition": {
    "description": {
      "id": "description",
      "type": "text"
    },
    "displayName": {
      "id": "displayName",
      "type": "text"
    }
  }
}