Skip to content

[EPIC] Port ROR Reconciler to Python Application #360

@adambuttrick

Description

@adambuttrick

Summary

We should port ROR Reconciler to be a lightweight Python application. The existing service is a ~190-line Sinatra app running inside a Phusion Passenger/Nginx Docker container (phusion/passenger-ruby32:3.1.6). This should be replaced with a minimal Python web framework (e.g., Flask or FastAPI) to align the service with the use of Python across the rest of the ROR's services.

Tasks

  • Rewrite all endpoints in Python with equivalent behavior:
    • GET / — redirect to ror.org
    • GET /heartbeat — health check
    • GET /reconcile — service metadata
    • POST /reconcile` — reconciliation queries (batch support)
    • GET /suggest — autocomplete suggestions
    • GET /flyout — inline preview data
    • GET /preview/* — HTML preview of ROR records
  • Maintain W3C Reconciliation API compliance
  • CORS support
  • Create a new Dockerfile with minimal base image
  • Update docker-compose.yml for local development
  • Update GitHub Actions workflows (dev, staging, prod)
  • Update Terraform variables
  • Improved test suite
  • CloudWatch monitoring for container lifecycle

Acceptance criteria

  • All existing endpoints return equivalent responses to the Ruby implementation
  • OpenRefine reconciliation workflows function identically against the Python service
  • Test suite covers all endpoints
  • CI/CD pipelines (dev/staging/prod) build and deploy the Python image
  • CloudWatch alerts are in place for container restart anomalies
  • No degradation in response times under normal load
  • Documentation (README) updated to reflect the new stack

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions