aster/README.md

5.6 KiB

aster

Please don't upload to GitHub

working on some kind of fedi software. this should never be used seriously! i'm just being silly and having fun over here.

frontend written in svelte and styling in sass. backend is in typescript.

static files can be placed in packages/frontend/static

originally, i was going to make it conform to the mastodon api. i think i will add a compatability thing later, but for now im just going to create my own similar but better (at least to me) api.

you do need to build the backend to run migrations. i know that sounds silly but everything here is silly.

shout out wafrn. i used it as a reference for a lot of stuff, its neat https://github.com/gabboman/wafrn

project status

activitypub

  • fetchable users
  • fetchable notes
  • accept activities (inboxes)
  • announce activities

backend

  • fetchable users
  • fetchable notes
  • fetchable instance info
  • fetchable remote instance info
  • register users
  • create notes

frontend

for development only purposes you can set an api url to use that isnt default by setting PUBLIC_APIURL in the .env of packages/frontend.

todo:

  • background, avatar, and banner alt text after added to backend

misc

  • prettier logs
  • split it up into workers so the entire thing doesnt crumble on error

security

if you find a vulnerability in my software please contact me privately. see https://blueb.me/

configuration

find it in config/example.yml. use that template and create a production.yml in that same directory.

planned supported extensions

activitystreams

  • [-] as:manuallyApprovesFollowers
  • [-] as:sensitive
  • as:Hashtag
  • [-] as:quoteUrl

mastodon

  • toot:Emoji
  • toot:discoverable

fedibird

  • [-] fedibird:quoteUri

schema

  • schema:PropertyValue
  • schema:value

misskey

  • [-] misskey:_misskey_content
  • [-] misskey:_misskey_quote
  • misskey:_misskey_vote (i do not know what this is used for, but i will probably support it)
  • misskey:_misskey_reaction
  • [-] misskey:_misskey_summary
  • [-] misskey:isCat

firefish

  • [-] firefish:speakAsCat

sharkey

  • [-] sharkey:backgroundUrl

mia's iceshrimp patches

  • mia:bite (i think this is the extension?)

example followreq activity

for my reference

{
	"@context": [
		"https://www.w3.org/ns/activitystreams",
		"https://w3id.org/security/v1",
		{
			"Key": "sec:Key",
			"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
			"sensitive": "as:sensitive",
			"Hashtag": "as:Hashtag",
			"quoteUrl": "as:quoteUrl",
			"fedibird": "http://fedibird.com/ns#",
			"quoteUri": "fedibird:quoteUri",
			"toot": "http://joinmastodon.org/ns#",
			"Emoji": "toot:Emoji",
			"featured": "toot:featured",
			"discoverable": "toot:discoverable",
			"schema": "http://schema.org#",
			"PropertyValue": "schema:PropertyValue",
			"value": "schema:value",
			"misskey": "https://misskey-hub.net/ns#",
			"_misskey_content": "misskey:_misskey_content",
			"_misskey_quote": "misskey:_misskey_quote",
			"_misskey_reaction": "misskey:_misskey_reaction",
			"_misskey_votes": "misskey:_misskey_votes",
			"_misskey_summary": "misskey:_misskey_summary",
			"isCat": "misskey:isCat",
			"firefish": "https://joinfirefish.org/ns#",
			"speakAsCat": "firefish:speakAsCat",
			"sharkey": "https://joinsharkey.org/ns#",
			"backgroundUrl": "sharkey:backgroundUrl",
			"listenbrainz": "sharkey:listenbrainz",
			"vcard": "http://www.w3.org/2006/vcard/ns#"
		}
	],
	"id": "https://eepy.zone/follows/9spb5qhlz5jp0032",
	"type": "Follow",
	"actor": "https://eepy.zone/users/9kfweg7wmdw7fnnt",
	"object": "https://as1.blueb.me/users/1"
}

example note

{
	"@context": [
		"https://www.w3.org/ns/activitystreams",
		"https://w3id.org/security/v1",
		{
			"Key": "sec:Key",
			"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
			"sensitive": "as:sensitive",
			"Hashtag": "as:Hashtag",
			"quoteUrl": "as:quoteUrl",
			"fedibird": "http://fedibird.com/ns#",
			"quoteUri": "fedibird:quoteUri",
			"toot": "http://joinmastodon.org/ns#",
			"Emoji": "toot:Emoji",
			"featured": "toot:featured",
			"discoverable": "toot:discoverable",
			"schema": "http://schema.org#",
			"PropertyValue": "schema:PropertyValue",
			"value": "schema:value",
			"misskey": "https://misskey-hub.net/ns#",
			"_misskey_content": "misskey:_misskey_content",
			"_misskey_quote": "misskey:_misskey_quote",
			"_misskey_reaction": "misskey:_misskey_reaction",
			"_misskey_votes": "misskey:_misskey_votes",
			"_misskey_summary": "misskey:_misskey_summary",
			"isCat": "misskey:isCat",
			"firefish": "https://joinfirefish.org/ns#",
			"speakAsCat": "firefish:speakAsCat",
			"sharkey": "https://joinsharkey.org/ns#",
			"backgroundUrl": "sharkey:backgroundUrl",
			"listenbrainz": "sharkey:listenbrainz",
			"vcard": "http://www.w3.org/2006/vcard/ns#"
		}
	],
	"id": "https://eepy.zone/notes/9sv3rkmjjvdr000z",
	"type": "Note",
	"attributedTo": "https://eepy.zone/users/9kfweg7wmdw7fnnt",
	"content": "<p>my silly ass made an ap request to my instance about a remote post</p>",
	"published": "2024-05-04T03:22:39.019Z",
	"to": ["https://www.w3.org/ns/activitystreams#Public"],
	"cc": ["https://eepy.zone/users/9kfweg7wmdw7fnnt/followers"],
	"inReplyTo": null,
	"attachment": [],
	"sensitive": false,
	"tag": []
}

rsa keygen commands

openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -outform PEM -pubout -out public.pem