SkateSpots/src/lib/cordn/community.ts

29 lines
1.1 KiB
TypeScript

import { ADMIN_PUBKEYS } from '@/lib/admins';
import { SKATESPOTS_COORDINATOR } from '@/lib/coordinator';
import type { CordnRoom } from './room';
/**
* The app-wide community / feedback room.
*
* The gid is a stable literal, so the share link never changes when the bot key
* is rotated. The bot creates the room once and becomes the always-on approver;
* admins can still approve manually if the bot is down.
*/
/** Public key of the always-on community bot (private key lives on the VPS). */
export const COMMUNITY_BOT_PUBKEY = 'f9788a7dc43a2b227fd8a0d4ad8752b6f2a9dcd4bce48365acb21675ed1015f0';
export const COMMUNITY_ROOM: CordnRoom = {
// The bot is the room creator/owner; admins can approve as a fallback.
pubkey: COMMUNITY_BOT_PUBKEY,
identifier: 'community',
gid: 'skatespots:community',
name: 'SkateSpots Community',
admins: [...ADMIN_PUBKEYS, COMMUNITY_BOT_PUBKEY],
coordinator: {
url: SKATESPOTS_COORDINATOR.relays[0],
pubkey: SKATESPOTS_COORDINATOR.pubkey,
},
};
/** App/browser share link; the QR points here, not at `localhost`. */
export const COMMUNITY_INVITE_PATH = '/community';