Infrastructure: MinIO service added to docker-compose (prod + dev) with minio-init container that creates the avatars bucket with public read policy. Traefik routes minio.task.beetech.dev → port 9000. Backend: native MinIO SDK integration via MinioStorageService; UploadUserPhotoUseCase validates 5 MB limit and image content-type; new POST /auth/profile/photo endpoint (multipart). All hardcoded ui-avatars.com fallback URLs removed from 6 use cases — backend now returns null when user has no photo. Frontend: ProfilePage gains clickable avatar with camera overlay, file picker, preview, and photo upload on save. UserAvatar gains onError handler for broken URLs and xs size. OrganizationAdminPage replaces hardcoded ui-avatars.com with UserAvatar component. CI/CD: deploy-main.yml passes 5 new MinIO secrets to the server and writes them to .env.production. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
707 B
Text
20 lines
707 B
Text
POSTGRES_USER=beetask
|
|
POSTGRES_PASSWORD=change-me
|
|
DB_URL=jdbc:postgresql://203.0.113.10:5432/beetask
|
|
|
|
BACKEND_IMAGE=ghcr.io/owner/repo-backend:latest
|
|
FRONTEND_IMAGE=ghcr.io/owner/repo-frontend:latest
|
|
|
|
QUARKUS_HTTP_CORS_ORIGINS=https://app.example.com
|
|
MP_JWT_VERIFY_ISSUER=https://beetech.net
|
|
SMALLRYE_JWT_SIGN_KEY_LOCATION=privateKey.pem
|
|
MP_JWT_VERIFY_PUBLICKEY_LOCATION=publicKey.pem
|
|
|
|
# MinIO (object storage for user avatars)
|
|
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD are used both by the MinIO service
|
|
# and by the backend as access/secret keys.
|
|
MINIO_ROOT_USER=change-me
|
|
MINIO_ROOT_PASSWORD=change-me
|
|
MINIO_ENDPOINT=http://minio:9000
|
|
MINIO_PUBLIC_URL=https://minio.task.beetech.dev
|
|
MINIO_BUCKET=avatars
|