Skip to content

whatjakecodes/atguilds

Repository files navigation

atguilds

Portable guilds built on ATProtocol! Create a guild and invite your friends.

Note

This project is currently in an exploration phase as I learn about ATProtocol. Feel free to reuse the lexicon schemas however you see fit. Once mature, this project and its lexicons should be hosted outside the dev.jakestout.atguilds domain/namespace.

Goals:

  • develop a weekly leaderboard system to rank guild member activities
  • develop SDKs for unity/unreal/godot to authenticate users and enable guild access in-game

Please reach out if you're interested in collaborating on this!

Design

Guilds are created in the guild leader's PDS, and represented by guild.atguilds.jakestout.dev records.

Guild membership is represented by "claim" records (guildMemberClaim.atguilds.jakestout.dev) on each member's PDS.

Bi-directional validity

Memberships should only be considered "valid" if both are true:

  1. A guild record's members array contains the decentralized ID (DID) of an ATProto account
  2. That ATProto account contains a guildMemberClaim record with the guildUri set to the ATUri of that guild.

Bi-directionality is important because guild membership must be confirmed by two people, typically via an invitation from the guild leader.

Developing

Install dependencies with pnpm install.

Start a development server:

# start postgres
docker-compose up -d

# run app
pnpm run dev

Lexicon Code Gen

To (re)generate TypeScript code for guild lexicons

./node_modules/.bin/lex gen-server ./src/lib/lexicon ./lexicons/*

Building

To create a production version of your app:

pnpm run build

You can preview the production build with pnpm run preview.

About

Winner of "Best Bluesky Fun Project" @ Jan 2025 LFC.DEV - Bluesky/ATProto Hackathon

About

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published