1
Profiles
hobokenchicken edited this page 2026-06-28 16:06:21 -04:00

Profiles

Dumpster profiles are customizable per-user. Each user has a profile with the following fields.

Fields

Field Type Max Length Notes
username string 32 Set at registration, unique, immutable
display_name string 32 Nickname, defaults to username
email string 255 Used for auth and Gravatar
avatar URL text Custom upload or Gravatar fallback
bio string 250 One-liner shown on profile popover
accent_color hex 7 Overrides default username color in chat
status enum - online / idle / dnd / offline (set by presence)
status_text string 128 Custom status message

Avatar System

Custom Upload

Users can upload a custom avatar via POST /api/v1/upload (multipart form). The uploaded file is stored in minio and the URL is saved to the user's avatar field.

Gravatar Fallback

If no custom avatar is set, the server computes md5(email) and serves:

https://www.gravatar.com/avatar/{hash}?d=identicon&s=256

This happens automatically. Users with Graccounts get their Gravatar. Users without get a generated identicon.

API

Get Current Profile

GET /api/v1/auth/me

Returns full profile including all fields above.

Update Profile

PATCH /api/v1/auth/me

{
  "display_name": "New Name",
  "bio": "Hello world",
  "accent_color": "#fe8019",
  "status_text": "brb"
}

All fields are optional. Only provided fields are updated.

Upload Avatar

POST /api/v1/upload
Content-Type: multipart/form-data

file: <image>

Returns { "url": "/files/<uuid>.png", "size": 12345 }. Set this URL as the avatar field.

Settings UI

The profile editor is at /settings in the web app. Terminal-styled form with:

  • DISPLAY_NAME: field
  • BIO: textarea with char counter
  • STATUS_TEXT: field
  • ACCENT_COLOR: field with color preview swatch
  • AVATAR: current avatar display + upload button
  • [SAVE] button