···7788[dnd.vielle.dev](https://dnd.vielle.dev) requires you to have an **atmosphere account**. An **atmosphere account** is an account used for atproto, which is an internet protocol (like email, https, or tcp) designed for creating social media sites easily with _user agency_, _credible exit_, and _data ownership_.
991010-Atproto provides major advantages for end users and app devs. For end users, your data is controlled by you and not the app, and data from one app can interoperate with another -- leaflet.pub can show blog posts from pckt.blog if they want. As an app dev, you get complex functionality like accounts for free, as well as possibly cheaper infrastructure costs. It also solves the cold start problem for many apps since you already have access to users and can show data from other apps.
1010+Using atproto provides a couple of major benefits for app devs and users:
11111212-For dnd.vielle.dev, atproto provides:
1212+- Signing in is easy -- enter your username and hit enter
1313+- You already have data from other apps that you can show -- like using their bsky profile or including your semble cards in a feed
1414+- You own your data -- apps can't hold you hostage and have to actually compete
13151414-- More stable power storage -- localstorage was unreliable
1515-- Cross device sync
1616-- Public index -- anyone can see your powers (good for ex playing your character)
1616+For dnd.vielle.dev, atproto gives a few improvements for free over local storage:
1717+1818+- Doesnt just randomly delete
1919+- Same data avaliable across multiple devices/browsers
2020+- The data is public so other players can check your powers when playing your character
17211822## Account Makeup
1923···29333034### Did and Did Document pair
31353232-In atproto, your did is a unique, permenant username for your account. `vielle.dev` has a did of `did:plc:4zht3z4caxwrw3dlsybodywc`, while `ducky.ws` has a did of `did:web:didd.uk`. If you loose control over your did (hard to do) you loose control over your account.
3636+In atproto, your did is a unique, permenant username for your account. `vielle.dev` has a did of `did:plc:4zht3z4caxwrw3dlsybodywc`, while `ducky.ws` has a did of `did:web:didd.uk`. If you lose control over your did (hard to do) you lose control over your account.
33373438### Handle
3539···9610097101On the next screen, make a new rotation key (following the onscreen instructions by getting the plc token email), and save it to your password manager. Make sure you remember where you save it. If you can't save this to your password manager, download the key file and save it somewhere safe. If you lose this key you could lose your account (if the pds becomes hostile).
981029999-This also creates a daily backup of your account, including both records and blobs. The most common case of a hostile pds is the pds going offline -- pds moover is sufficient if this is the only concern you have. For maximum security you'll want to create local backups. Currently there is no easy tool for this -- hit me up if you want advice on setting this up.
103103+This also creates a daily backup of your account, including both records and blobs. The most common case of a hostile pds is the pds going offline -- pds moover is sufficient if this is the only concern you have.
104104+105105+<details>
106106+ <summary>
107107+ If you're really worried about your data, I reccomend making a regular local backup. Theres quite a few ways you could do this, but the general steps are outlined below
108108+ </summary>
109109+110110+1. Resolve your handle/did to your pds. Theres [a good guide here](https://marvins-guide.leaflet.pub/3m6cvuwe5z22j), but you can also just hardcode it if you want, as long as you remember to change it whenever you migrate
111111+112112+2. Call `/xrpc/com.atproto.sync.getRepo?did=<your did>` to get your car file and save it somewhere. If you want history, call `/xrpc/com.atproto.sync.getRepoStatus?did=<your did>` to get the current rev, or extract it from the car file to use as a filename. Or you can use the date. If you don't care about blobs you can stop here
113113+114114+3. Call `/xrpc/com.atproto.sync.listBlobs?did=<your did>` to get a list of all your blobs. If the number of `cids` is equal to 500 (or whatever limit you set in the request), repeat the call with `&cursor=<cursor from last request>`, and append `cids` until you get a number of cids less than 500.
115115+116116+4. For each blob, call `/xrpc/com.atproto.sync.getBlob?did=<your did>&cid=<current cid>` and save the blob response. Its reccomended to use the cid (or `<cid>.<filetype>`), since the cid is a hash of the contents and so won't change. If you restore a blob that isn't being used in the repo, it will get deleted after roughly an hour.
117117+118118+</details>