id.sifa.profile.project

sifa.id

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record representing a single project.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this record was originally created.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "Description of the project, the user's role, and outcomes.",
            "maxGraphemes": 5000,
            "maxLength": 50000,
            "type": "string"
          },
          "endedAt": {
            "description": "Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing.",
            "type": "string"
          },
          "labels": {
            "description": "Self-label values for this project record.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "members": {
            "description": "Other people who worked on this project. Each entry is a claim by the record author and is not self-verifying: the named person supplies the other half by publishing an id.sifa.confirmation record whose subject is this record and whose relation is id.sifa.defs#projectMember. Until they do, consumers must render the entry without their display name, avatar, or profile link. Confirming never puts this record on the named person's profile: it lives in the author's repository and the author can rename it at any time. A named person who wants the project on their profile keeps their own id.sifa.profile.project record and points its projectRef here.",
            "items": {
              "ref": "id.sifa.defs#projectMemberRef",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "name": {
            "description": "Project name.",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "minLength": 1,
            "type": "string"
          },
          "position": {
            "description": "Reference to the associated id.sifa.profile.position record, if applicable.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "projectRef": {
            "description": "Reference to the same project as recorded elsewhere: another person's id.sifa.profile.project entry for the work you shared, or a first-class id.sifa.project.self record. Set when you were named as a member of someone else's entry and keep your own version of it, so consumers can tell the two describe one project instead of showing it twice.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "startedAt": {
            "description": "Project start date in YYYY-MM or YYYY-MM-DD format.",
            "type": "string"
          },
          "url": {
            "description": "URL of the project (website, repository, demo, etc.).",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "name",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A project the user has worked on.",
  "id": "id.sifa.profile.project",
  "lexicon": 1
}

Validate Record

Validate a record against id.sifa.profile.project

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2f2ahswozqy4v5lvu676375y
CID
bafyreielduwsmctwqhhseom3rfo2fngytozakzrbaxftrepgm3ssnayluy
Indexed At
2026-07-31 21:36 UTC
AT-URI
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.profile.project

Version History (8 versions)

Referenced Schemas (2)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • id.sifa.project.self recordnot from the namespace authority

    A collaborative project record. Lives in the project creator's PDS. TID-keyed so one user can create multiple projects. Supports multiple owners — the creator is the first owner, and any owner can promote core members.

  • Uncompensated involvement with an external project, community, event, or cause the user does not own or run — open-source, community, charity, or civic work. Distinct from paid roles (position), things you own (projec…

  • Supper project showcase entry stored on the user's PDS. Creators list the projects they are working on with a title, description, and link.

  • id.sifa.project.member recordnot from the namespace authority

    DEPRECATED, never implemented. An invitation to join a project team, written by a project owner in their PDS. Superseded by naming members inline on id.sifa.profile.project and having them affirm it with a generic id.si…

  • A wips.social project owned by the repository DID. The project's AT URI is its durable identifier. Protocol ceilings stay generous while keeping worst-case DAG-CBOR size comfortably below the informal 1 MiB network reco…

Lexicon Garden

@