{
  "service": {
    "name": "Silvergrain Photos",
    "version": "2.14.3",
    "environment": "production",
    "baseUrl": "https://photos.example.net",
    "readOnly": false
  },
  "storage": {
    "libraryPath": "/srv/photos/library",
    "uploadPath": "/srv/photos/uploads",
    "thumbnailPath": "/var/cache/silvergrain/thumbnails",
    "database": {
      "driver": "postgresql",
      "host": "postgres",
      "port": 5432,
      "name": "silvergrain",
      "ssl": false,
      "poolSize": 20
    },
    "originals": {
      "preserveFilenames": true,
      "organizeBy": "year/month",
      "allowedExtensions": [
        "jpg",
        "jpeg",
        "png",
        "webp",
        "heic",
        "dng",
        "cr2",
        "nef",
        "mp4",
        "mov"
      ]
    },
    "usage": {
      "totalBytes": 4398046511104,
      "usedBytes": 1872456738201,
      "assetCount": 48217
    }
  },
  "features": {
    "publicSharing": true,
    "faceRecognition": true,
    "duplicateDetection": true,
    "reverseGeocoding": true,
    "videoTranscoding": true,
    "rawPreviewGeneration": true,
    "machineLearning": {
      "enabled": true,
      "provider": "local",
      "endpoint": "http://machine-learning:3003",
      "models": {
        "imageClassification": "ViT-B-32__openai",
        "faceDetection": "buffalo_l",
        "ocr": "paddleocr-en"
      }
    }
  },
  "authentication": {
    "localLogin": true,
    "registration": false,
    "sessionLifetimeHours": 168,
    "oidc": {
      "enabled": true,
      "issuerUrl": "https://auth.example.net/realms/home",
      "clientId": "silvergrain-photos",
      "autoRegister": false,
      "scopes": [
        "openid",
        "profile",
        "email"
      ]
    },
    "trustedProxies": [
      "10.20.0.0/16",
      "172.18.0.0/16"
    ]
  },
  "processing": {
    "workers": 6,
    "queues": {
      "thumbnailGeneration": {
        "concurrency": 4,
        "retryLimit": 3
      },
      "metadataExtraction": {
        "concurrency": 2,
        "retryLimit": 5
      },
      "videoTranscoding": {
        "concurrency": 1,
        "retryLimit": 2
      }
    },
    "thumbnails": {
      "formats": [
        "webp",
        "jpeg"
      ],
      "sizes": [
        {
          "name": "preview",
          "width": 1920,
          "height": 1080,
          "quality": 82
        },
        {
          "name": "grid",
          "width": 512,
          "height": 512,
          "quality": 78
        },
        {
          "name": "tiny",
          "width": 64,
          "height": 64,
          "quality": 65
        }
      ]
    },
    "video": {
      "codec": "h264",
      "audioCodec": "aac",
      "maxResolution": "1080p",
      "hardwareAcceleration": "vaapi"
    }
  },
  "users": [
    {
      "id": "usr_01J2R8Y4KQ7W6N9F3H5M1C0BVA",
      "displayName": "Maya Chen",
      "email": "maya@example.net",
      "role": "admin",
      "quotaBytes": null,
      "preferences": {
        "theme": "system",
        "timelineDensity": "comfortable",
        "showPeople": true,
        "timezone": "America/Toronto"
      }
    },
    {
      "id": "usr_01J2R93BFT0KXG7SN5P8Y6ZDQW",
      "displayName": "Jon Bell",
      "email": "jon@example.net",
      "role": "user",
      "quotaBytes": 536870912000,
      "preferences": {
        "theme": "dark",
        "timelineDensity": "compact",
        "showPeople": false,
        "timezone": "America/Vancouver"
      }
    }
  ],
  "albums": [
    {
      "id": "alb_01J8C6S5T4K9A2NP7QX3WZ0HME",
      "title": "Summer Road Trip 2025",
      "description": "Quebec City, Charlevoix, and the north shore.",
      "ownerId": "usr_01J2R8Y4KQ7W6N9F3H5M1C0BVA",
      "assetCount": 842,
      "coverAssetId": "ast_01J8D0K3HZ6VQ7N2RY9C4F5XWA",
      "shared": true,
      "share": {
        "slug": "summer-road-trip-2025",
        "expiresAt": "2026-08-31T23:59:59Z",
        "passwordProtected": true,
        "allowDownloads": false
      },
      "createdAt": "2025-08-19T14:22:08Z",
      "updatedAt": "2026-06-04T01:17:43Z"
    },
    {
      "id": "alb_01J9QPXV83MT5FD1HYC6B0ZK7S",
      "title": "Family Archive",
      "description": null,
      "ownerId": "usr_01J2R8Y4KQ7W6N9F3H5M1C0BVA",
      "assetCount": 6214,
      "coverAssetId": "ast_01J9R1X2VN8CJ6AP4S7Q0Y5BKW",
      "shared": false,
      "share": null,
      "createdAt": "2024-11-02T09:31:55Z",
      "updatedAt": "2026-07-15T20:06:12Z"
    }
  ],
  "maintenance": {
    "backup": {
      "enabled": true,
      "schedule": "0 3 * * *",
      "retentionDays": 30,
      "destination": {
        "type": "s3",
        "bucket": "silvergrain-backups",
        "region": "ca-central-1",
        "prefix": "production/"
      },
      "lastRun": {
        "startedAt": "2026-07-16T07:00:01Z",
        "completedAt": "2026-07-16T07:18:42Z",
        "status": "success",
        "sizeBytes": 4831829471
      }
    },
    "indexing": {
      "schedule": "30 2 * * 0",
      "lastCompletedAt": "2026-07-12T06:54:20Z",
      "pendingAssets": 17
    },
    "trashRetentionDays": 30
  }
}