Skip to content

feat(bluesky): Support ATProto address location type using Nominatim data #450

@tompscanlan

Description

@tompscanlan

Summary

Add support for the community.lexicon.location.address type when publishing events to Bluesky, using address components from Nominatim geocoding.

Background

We already use Nominatim (OpenStreetMap) for geocoding addresses. Nominatim returns structured address components that we currently discard - we only extract lat/lon.

Nominatim Response Example

{
  "lat": "38.272061",
  "lon": "-85.640689",
  "address": {
    "house_number": "623",
    "road": "Indian Ridge Road",
    "city": "Louisville",
    "state": "Kentucky",
    "postcode": "40207",
    "country": "United States",
    "country_code": "us"
  }
}

ATProto Address Schema

{
  "$type": "community.lexicon.location.address",
  "country": "US",           // required - ISO 3166
  "street": "623 Indian Ridge Road",
  "locality": "Louisville",  // city
  "region": "Kentucky",      // state
  "postalCode": "40207",
  "name": "Event Venue"      // optional
}

Proposed Implementation

  1. Update geocodeAddress() to request addressdetails=1 from Nominatim
  2. Store address components in event entity (new fields or in sourceData)
  3. When publishing to Bluesky with structured address data, use address type
  4. Fall back to geo type when only coordinates available

Current Code Location

  • src/event/services/event-integration.service.ts:399 - geocodeAddress() method

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions