Atchan: the atproto imageboard optimized for fun

i’ve spent the past couple of months working on an imageboard software inspired by early IBs like 2ch, bringing in features from some of its modern derivatives.

we have about ~50 active posters in the past week, with 130 registered on the apps PDS. i’m calling that a success.

fun

i put a strong emphasis that using the internet should be fun, free and unrestricted as long as you’re not hurting anybody. the rules and faq both encourage this behavior, and the general vibe of the site has followed and it’s now become a self perpetuating thing. this is something i had to seed through clever design.

sharing media is fun on its own - but i also wanted to distinguish my site from other image boards. this called for a couple of unique features:

posts use facets to render rich content (a practice i’ve come to appreciate a lot to simplify text processing). it allows people to do funny stuff like this:

markup can be created though an editor which was very fun to design. posts are just text by default, but if you want you can opt in to formatting. the editor uses markdown-ish syntax, which some buttons to guide you. there are kaomoji as well, which render in a Shift_JIS font to evoke 2ch nostalgia. you can add colors, make your text large, bold, strikethrough. everything at once. if you want.

tech

i had to build a number of discovery features to make sure things don’t get forgotten - the three main discovery mechanisms are “latest posts”, “active threads” and “lonely posts”. you can also of course use the board view, which is more for-purpose.

the app is built in sveltekit, and isn’t exactly an appview (i did not see a benefit to separate the aggregation and consumption as this is a small project). it can ingest over both the firehose and jetstream. it uses ozone for moderation, which is connected directly to the pds as well so takedowns can be issued. authenticated moderators can hide posts and do moderation actions directly through the app.

atchan’s lexicons define the primitives of the IB: boards, threads and replies. they all reference each other, and the ultimate authority is the board, which may only be issued by did:web:atchan.net.

the data pattern is similar to many appviews - the lexicons are indexed into a sqlite database, and media is held in a thin cache. when media is requested over HTTP, it will be fetched from the PDS and kept until we reach a size cap, then rolling over based on access date. in the event of disaster, i could crawl the entire network and reconstruct the entire state - i considered this a requirement for the app.

spam and unwanted content has not been so much of an issue yet, but i did get a few accounts which seemed to have discovered the PDS programmatically and made posts to spam or scam people on bluesky. volume has been low.

operational considerations

there is no anonymity in band, which many people expect out of imageboards so i tried to be clear about that in the faq. people are free to use aliases, which hides their identity - at least on the site itself. but there is no anonymous mode. maybe permissioned data will change that view?

another aspect is to be clear who the site is for: i do not want to be associated with racists, chuds, or nazis. they have become synonymous with IBs. the rules prohibit some very specific behavior. it is meant for a specific audience, and i think that is healthy. if we serve everyone, it becomes an undesirable place.

since we host some questionable content, there is a risk of us being filtered at the relay level. i’m considering it a test of how decentralized atproto actually is. can this site survive? it will be interesting to see.

2 Likes