ATProto forum built with ESAV
1# ForumTest - ATProto forum built with ESAV
2its an atproto forum built with [ESAV](https://tangled.sh/@whey.party/esav), an elasticsearch-based configurable generic appview.
3
4this 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)
5
6i havent enabled a CDN yet so currently all images load using getBlob
7
8Live at: [https://forumtest.whey.party](https://forumtest.whey.party)
9Discuss at: [https://forumtest.whey.party/f/@forumtest.whey.party](https://forumtest.whey.party/f/@forumtest.whey.party)
10
11## ESAV config
12custom record types:
13```json
14"record_types": [
15 "party.whey.ft.topic.post",
16 "party.whey.ft.topic.reaction",
17 "party.whey.ft.topic.moderation",
18 "party.whey.ft.forum.definition",
19 "party.whey.ft.forum.layout",
20 "party.whey.ft.forum.request",
21 "party.whey.ft.forum.accept",
22 "party.whey.ft.forum.category"
23 ],
24```
25
26custom indexes:
27```json
28"index_fields": {
29 "party.whey.ft.topic.reaction": {
30 "subject": {
31 "id": "reactionSubject",
32 "type": "keyword"
33 },
34 "reactionEmoji": {
35 "id": "reactionEmoji",
36 "type": "keyword"
37 }
38 },
39 "party.whey.ft.topic.post": {
40 "text": {
41 "id": "text",
42 "type": "text"
43 },
44 "title": {
45 "id": "title",
46 "type": "text"
47 },
48 "reply.root.uri": {
49 "id": "root",
50 "type": "keyword"
51 },
52 "reply.parent.uri": {
53 "id": "parent",
54 "type": "keyword"
55 },
56 "forum": {
57 "id": "forum",
58 "type": "keyword"
59 }
60 },
61 "party.whey.ft.forum.definition": {
62 "description": {
63 "id": "description",
64 "type": "text"
65 },
66 "displayName": {
67 "id": "displayName",
68 "type": "text"
69 }
70 }
71}
72
73```