name: alxndrhi-geoguesser-ai services: postgres: container_name: alxndrhi-geoguesser-ai-postgres image: postgres:16-alpine environment: POSTGRES_USER: ${DB_USER:-geolocator} POSTGRES_PASSWORD: ${DB_PASSWORD:-geolocator_password} POSTGRES_DB: ${DB_NAME:-geolocator_db} volumes: - type: bind source: /DATA/AppData/$AppID/postgres_data target: /var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-geolocator} -d ${DB_NAME:-geolocator_db}"] interval: 10s timeout: 5s retries: 5 network_mode: bridge restart: unless-stopped backend: container_name: alxndrhi-geoguesser-ai-backend image: git.hinrichs.dev/alexander/geoguesser-ai/backend:latest environment: ENV: ${ENV:-production} PORT: ${PORT:-3000} DATABASE_URL: postgresql://${DB_USER:-geolocator}:${DB_PASSWORD:-geolocator_password}@alxndrhi-geoguesser-ai-postgres:5432/${DB_NAME:-geolocator_db}?sslmode=${DB_SSLMODE:-disable} CLAUDE_API_KEY: ${CLAUDE_API_KEY} CLAUDE_API_URL: ${CLAUDE_API_URL:-https://api.anthropic.com/v1/messages} CLAUDE_MODEL: ${CLAUDE_MODEL:-claude-sonnet-4-5} USE_MOCK_AI: ${USE_MOCK_AI:-false} MAX_IMAGE_SIZE_MB: ${MAX_IMAGE_SIZE_MB:-10} ALLOWED_IMAGE_TYPES: ${ALLOWED_IMAGE_TYPES:-image/jpeg,image/png,image/webp} OVERPASS_API_URL: ${OVERPASS_API_URL:-https://overpass-api.de/api/interpreter} ELEVATION_API_URL: ${ELEVATION_API_URL:-https://api.open-elevation.com/api/v1/lookup} ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-http://localhost:8080} LOG_LEVEL: ${LOG_LEVEL:-info} LOG_FORMAT: ${LOG_FORMAT:-json} volumes: - type: bind source: /DATA/AppData/$AppID/uploads target: /app/uploads depends_on: postgres: condition: service_healthy external_links: - alxndrhi-geoguesser-ai-postgres:postgres healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/v1/health"] interval: 30s timeout: 10s retries: 3 network_mode: bridge restart: unless-stopped frontend: container_name: alxndrhi-geoguesser-ai-frontend image: git.hinrichs.dev/alexander/geoguesser-ai/frontend:latest ports: - target: 8080 published: "8080" protocol: tcp depends_on: - backend external_links: - alxndrhi-geoguesser-ai-backend:backend network_mode: bridge restart: unless-stopped x-casaos: envs: - container: ENV description: en_us: Application environment (development/production) - container: PORT description: en_us: Backend API port - container: DB_USER description: en_us: PostgreSQL database username - container: DB_PASSWORD description: en_us: PostgreSQL database password - container: DB_NAME description: en_us: PostgreSQL database name - container: DB_SSLMODE description: en_us: PostgreSQL SSL mode (disable/require) - container: CLAUDE_API_KEY description: en_us: Anthropic Claude API key for AI analysis - container: CLAUDE_API_URL description: en_us: Claude API endpoint URL - container: CLAUDE_MODEL description: en_us: Claude model identifier to use - container: USE_MOCK_AI description: en_us: Use mock AI responses (true/false) - container: MAX_IMAGE_SIZE_MB description: en_us: Maximum upload image size in MB - container: ALLOWED_IMAGE_TYPES description: en_us: Comma-separated list of allowed image MIME types - container: OVERPASS_API_URL description: en_us: OpenStreetMap Overpass API endpoint - container: ELEVATION_API_URL description: en_us: Elevation data API endpoint - container: ALLOWED_ORIGINS description: en_us: CORS allowed origins (comma-separated) - container: LOG_LEVEL description: en_us: Application log level (debug/info/warn/error) - container: LOG_FORMAT description: en_us: Log output format (json/text) ports: - container: "8080" description: en_us: Web UI HTTP Port volumes: - container: /var/lib/postgresql/data description: en_us: PostgreSQL database storage - container: /app/uploads description: en_us: Uploaded images storage x-casaos: architectures: - amd64 - arm64 main: frontend author: Alexander Hinrichs category: Utilities developer: Alexander Hinrichs description: en_us: An AI-powered geographic image analyzer that uses Claude AI to identify locations from photos. Upload images and get detailed geolocation analysis including coordinates, landmarks, and contextual information. Requires Anthropic API key for Claude AI access. tagline: en_us: AI-powered geographic image location analyzer icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/geoguesser-ai/icon.png index: / port_map: "8080" scheme: http store_app_id: geoguesser-ai title: en_us: GeoGuesser AI