Profiles, Giphy, uploads, settings UI

Backend:
- Auth: split routes into RegisterPublicRoutes + RegisterProtectedRoutes
- Auth: PATCH /me for profile updates (display_name, bio, accent_color, status_text)
- Auth: Gravatar fallback for avatars on register
- DB: users table now has bio, accent_color, status_text columns
- giphy/client.go: Search() and GetTrending() against Giphy API
- upload/handlers.go: MinIO file upload + serve
- config: added GiphyConfig and MinIO config
- cmd/server: wired giphy (/gifs/search, /gifs/trending), upload (/upload), files (/files/*) routes

Frontend:
- auth store: updated User interface with new profile fields, added updateProfile()
- UserSettings.tsx: terminal-styled profile editor (display_name, bio, accent_color, status_text, avatar upload)
- GiphyPicker.tsx: terminal-styled GIF picker with search + trending
- ChatArea.tsx: integrated [GIF] button into message input
- App.tsx: imports UserSettings, added /settings route
This commit is contained in:
2026-06-28 16:06:08 -04:00
parent bb5a56816b
commit e69553af02
18 changed files with 1422 additions and 352 deletions
+16 -5
View File
@@ -1,12 +1,23 @@
# App
DUMPSTER_HOST=localhost
DUMPSTER_PORT=8080
DUMPSTER_SECRET=change...n
# Database
DUMPSTER_SECRET=*** Database
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=dumpster
POSTGRES_PASSWORD=dumpster
# Valkey
POSTGRES_PASSWORD=*** Valkey
VALKEY_URL=redis://localhost:***@example.com
# MinIO
MINIO_ENDPOINT=minio:9000
MINIO_ACCESS_KEY=<generated>
MINIO_SECRET_KEY=<gener...n
# LiveKit
LIVEKIT_URL=wss://livekit.your.domain
LIVEKIT_API_KEY=<generated>
LIVEKIT_API_SECRET=<gener...n
# Web Push
VAPID_PUBLIC_KEY=<generated>
VAPID_PRIVATE_KEY=<generated>
VAPID_SUBJECT=mailto:admin@your.domain
# Integrations
GIPHY_API_KEY=your_giphy_api_key_here