住所を持てます。あなたの投稿は、専用アプリを持たない人にもURLひとつで見せられる——ブラウザで開けば静かなページ、fediから覗けば同じ住所がactorの顔になる。
作りはSPAではなく、サーバで組んだHTMLをそのまま返す静かな流儀です。訪ねてきた人のブラウザには、できあがったページだけが届きます。
見どころ
src/pages/index.tsxが一枚のHonoルータで、home・profile(/:handle{@[^/]+})・login・setup・絵文字管理などのサブページをぜんぶ束ねる- プロフィールの投稿はdrizzleで直に引く(PAGE_SIZE=30、public+unlistedのみ)。pageやcontのクエリは検分して、怪しければ404
- 投稿のHTMLは表示前にxssサニタイザを通す
- 管理画面系はcsrf()+loginRequiredで守られ、
federation.tsxには管理者が手でリモートのactor/postを取り寄せて台帳に写す小さな引き込み口まである
経文の一節
links={[
...(atomUrl == null
? []
: [
{ rel: "alternate", type: "application/atom+xml", href: atomUrl },
]),
{
rel: "alternate",
type: "application/activity+json",
href: `/@${accountOwner.handle}`,
},
]}