an independent Bluesky client using Constellation, PDS Queries, and other services reddwarf.app
frontend spa bluesky reddwarf microcosm client app
at main 115 lines 4.2 kB view raw
1// please change the branding if you are not it hosting on reddwarf.app 2export const HOST_MAIN_TITLE = "Red Dwarf" // large text in branding 3export const HOST_SUB_TITLE = " .app" // smaller text in branding 4export const HOST_TITLE = HOST_MAIN_TITLE + HOST_SUB_TITLE // composite used in paragraphs 5// also replace favicon files and defaultpfp.png and check LogoSvg.tsx 6export const HOST_LOGO_USE_FAVICON = false; // ignores LogoSvg.tsx (recolorable svg) for a static image (the favicon) 7export const HOST_DEFAULT_HUE = 28; // default is 28 for red. mod 360. 294 is a nice purple 8export const HOST_HERO = "/sunset.jpg" // path to the "banner" image of the instance 9export const HOST_ADMIN = "did:plc:tufumi46dykq4fzwtp2ur6kx" // did of the owner/admin, does not give special perms 10export const HOST_DESCRIPTION = "The official flagship hosted Red Dwarf instance, hosted on reddwarf.app, running the latest updates and features" // short 1 sentence description 11/** 12 * --- RED DWARF POLICY.TS — MARKDOWN FLAVOR --- 13 * 14 * This file uses a deliberately minimal Markdown subset. 15 * 16 * Supported syntax: 17 * - Two consecutive line breaks create a new paragraph 18 * - `##` denotes a collapsible section heading 19 * - links via [link text](link url) 20 * - Self-closing predefined components (e.g. `<PolicyViewer />`) 21 * 22 * REQUIRED COMPONENTS (strictly one of each): 23 * - <PolicyViewer /> 24 * 25 * NOTE: 26 * If the app detects that any required custom component is missing, 27 * the application will refuse to run. Treat this file as critical. 28 */ 29export const HOST_ABOUT_MARKDOWN = ` 30## About this instance 31 32reddwarf.app is the flagship hosted instance of Red Dwarf, a Bluesky application built to provide an independent social experience. 33This hosted instance mandates Bluesky Moderation to limit moderation scope and keep resources focused on developing Red Dwarf software. 34 35 36## About Red Dwarf 37 38Red Dwarf is a Bluesky client that does not depend on Bluesky’s AppView servers. 39 40It preserves authoritative independence by fetching records directly from each user’s PDS (via Slingshot) 41and reconstructing relationships through backlinks (via Constellation), 42while optionally using AppView as an optimization layer when available. 43 44## Hosting Your Own Instance 45 46Red Dwarf is open source. You can host your own instance specifically tailored to your community. 47Hosting your own instance gives you full control over policy, branding, and additional features. 48 49Repository: [https://tangled.org/whey.party/red-dwarf](https://tangled.org/whey.party/red-dwarf) 50 51Instructions for setup, configuration, and labeler policies are included in the repository. 52 53## RedDwarf.app Policy 54 55<PolicyViewer /> 56` 57 58export const HOST_UNAUTHED_DEFAULT_FEEDS = [ 59 "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot" 60] 61 62export const HOST_LOGIN_BLURB = "Experience Bluesky under a different light" //todo dont be corny 63export const HOST_SIGNUP_PDS = false // false-able string 64 65// very important. if this is empty the app will refuse to load anything 66// because this powers all the labels in the app (assuming youre using the newer useAutoLabels and not useModeration) 67export const HOST_LABELMERGE = "https://labelmerge.reddwarf.app" 68 69 70// forced label providers 71// applies to everyone 72export const FORCED_LABELER_DIDS = [ 73 "did:plc:ar7c4by46qjdydhdevvrndac" // bluesky moderation 74]; 75 76 77 78// unauthed forced label policy 79// hides some content only when not logged in 80// needs labelers to be set in FORCED_LABELER_DIDS 81// TODO: add separate unauthed_forced_labeler_dids later 82 83export const UNAUTHED_FORCE_WARN_LABELS = new Set([ 84 "porn", 85 "sexual", 86 "graphic-media", 87 "nudity", 88 "nsfl", 89 "gore", 90 "!no-unauthenticated", 91 "illicit", 92 "self-harm", 93 "sensitive", 94]); 95 96export const UNAUTHED_PREVENT_OPENING_WARNS = true; 97 98 99 100// forced label policy 101// hides content labeled with FORCE_HIDE_LABELS 102// needs labelers to be set in FORCED_LABELER_DIDS and FORCE_HIDE_LABELS_WHITELISTED_SOURCE 103 104export const FORCE_HIDE_LABELS_WHITELISTED_SOURCE = new Set([ 105 "did:plc:ar7c4by46qjdydhdevvrndac" // bluesky moderation 106]) 107 108export const FORCE_HIDE_LABELS = new Set([ 109 "!takedown", 110 "!hide", 111]); 112 113 114 115// todo generate manifest.json and index.html from this file