Drop editor in favor of ord-app - #172
Conversation
The Flask-based editor under ord_interface/editor/ has been replaced by the standalone ord-app (https://app.open-reaction-database.org). This removes the editor and everything that existed only to support it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- nginx: 301 /editor and /editor/* to https://app.open-reaction-database.org/ so existing bookmarks land on the new editor instead of a blank SPA shell. - CI: bump test_app runner from ubuntu-22.04 to ubuntu-latest now that the puppeteer-incompatibility note no longer applies. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@skearnes - yes we should do this to clean up the code, but I hesitate to rip the old editor out of the production instance without communicating a clear timeline for the user community to remove any important data. The latest statement we have made on the old editor is from the announcement of the new editor here https://www.linkedin.com/pulse/next-generation-reaction-editor-here-open-reaction-database-tfste. |
There was a problem hiding this comment.
My understanding is that this 'about' file no longer needed since the website uses this file (https://github.com/open-reaction-database/ord-interface/blob/8731895b44a960f0448a72042fa9981df2846c22/app/src/views/About.vue) instead for the about page.
bdeadman
left a comment
There was a problem hiding this comment.
Happy to approve the code changes as they are, but I'd like to have a conversation about how we manage the retirement of the legacy editor from the production instance.
- Drop the placeholder "How to Deploy" section. - Fix the project layout: api/ is the FastAPI server (not /client), and the description was missing it entirely. Mark editor/ as legacy (being removed in #172). - Tighten setup instructions and folder descriptions; trim filler. - Flag the host-port 5432 collision for `docker compose up`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Remove stale config and accidental commits - .pylintrc, .style.yapf: legacy linter/formatter configs replaced by ruff in #173. - copilot/: AWS Copilot CLI manifest, replaced by Pulumi/ECS in the ord-infrastructure repository. - dump.rdb: accidentally committed Redis snapshot. - README.md, CONTRIBUTING.md: setup.py / pip install instructions rewritten in terms of uv now that #173 has landed. - .gitignore: add .pytest_cache/, .ruff_cache/, .venv/, dump.rdb so these stop showing up in future working trees. Editor-tree `# pylint:` / `# pytype:` comments are intentionally left alone; the editor is excluded from ruff/ty and is being removed in #172. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Refresh README - Drop the placeholder "How to Deploy" section. - Fix the project layout: api/ is the FastAPI server (not /client), and the description was missing it entirely. Mark editor/ as legacy (being removed in #172). - Tighten setup instructions and folder descriptions; trim filler. - Flag the host-port 5432 collision for `docker compose up`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Apply review feedback on cleanup PR - CONTRIBUTING.md: sweep remaining `ord-schema` references to `ord-interface` (title, issue-tracker URLs, fork instructions). The goals/non-goals readthedocs link is left as-is and rephrased to point at "the broader Open Reaction Database" so it's clear the reference is intentional. - README.md: add a brief Deployment section pointing at the ord-infrastructure repo (Pulumi/ECS) now that the old "How to Deploy" placeholder is gone. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * .gitignore: add trailing slashes to directory-only patterns Make the pre-existing directory patterns consistent with the new ones added in this branch (`.pytest_cache/`, `.ruff_cache/`, `.venv/`) and the already-slashed ones above (`.idea/`, `docs/_build/`, `.vscode/`). Trailing slash restricts a pattern to match directories only, which is what we actually want for `__pycache__`, `*.egg-info`, `.ipynb_checkpoints`, `build`, `dist`, `ketcher`, `standalone`, `node_modules`, and `coverage`. A future file accidentally named one of these wouldn't be silently ignored. `**/.pnp` is left as-is because Yarn 2+ uses `.pnp.cjs` files while Yarn 1 used a `.pnp` directory; the un-slashed form matches both. Verified `git check-ignore` still resolves the existing `.venv/`, `ord_interface.egg-info/`, `ord_interface/__pycache__/` directories through the new rules. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reapply the editor removal on top of everything main picked up since May: the React/Vite migration, the uv toolchain, the Copilot config cleanup, and the removal of about.html and dump.rdb (all of which this branch had done its own way against the Vue/setup.py layout). - Dockerfile: drop the closure-library/protoc/closure-compiler/jquery-externs layers, the ord-schema source download they fed, default-jre, and the editor COPY/build steps; keep the Ketcher fetch and the Vite build. - nginx.conf: drop the flask upstream and /editor/ proxy; 301 /editor and /editor/* to https://app.open-reaction-database.org/. - tests.yml: drop --ignore=ord_interface/editor, the puppeteer install and the setup-node step that existed only for the editor JS tests, and move test_app back to ubuntu-latest. - pyproject.toml: drop flask and pygithub, and the ruff/ty excludes that kept the editor and its entrypoint out of the linters. - README: drop the editor from the project layout and the Apple-silicon ARCH build-arg note, which went away with protoc. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
setup_test_postgres() normalizes its URL to the psycopg (v3) driver, so the bare postgresql:// URL testing.postgresql produces no longer sends SQLAlchemy looking for psycopg2. That was the last psycopg2 caller, so psycopg2-binary comes out of the dependency list, and main.py no longer has to patch the driver into the URL before handing it over. The ruff and ty excludes for *_pb2.py also go: no generated protobuf wrappers are checked in or built here -- the editor generated JS protos, not Python. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@bdeadman it's August 😄 |
The Flask editor was the only consumer of GH_CLIENT_ID/GH_CLIENT_SECRET, and it is gone from ord-interface as of open-reaction-database/ord-interface#172. The task definition no longer needs them, the execution role no longer needs read access to the secret, and the `github-client` secret itself has no remaining reader. Applied to prod already: the running task exposes only POSTGRES_PASSWORD and ANTHROPIC_API_KEY, and the secret is in its 30-day recovery window. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
Removes the legacy Flask editor under
ord_interface/editor/. Its job belongs to the standalone ord-app now, and theContributelink in the header already points there.Everything that existed only to serve the editor goes with it:
ord_interface/editor/and its Flask entrypointord_interface/interface.py.start_app.sh, and theflaskupstream +/editor/proxy innginx.conf.Dockerfile, along with thedefault-jreinstall and the ord-schema v0.3.93 source download that fed it — and theARCHbuild arg, which existed only to pick a protoc binary.migrate.pystep inbuild_test_database.sh, andnode editor/js/test.jsinrun_tests.sh.--ignore=ord_interface/editor, thenpm install puppeteerstep, and thesetup-nodestep that served it.test_appmoves fromubuntu-22.04back toubuntu-latest, since the pin was an AppArmor/puppeteer workaround.flaskandpygithubdependencies, and the ruff/ty excludes that kept the editor and its entrypoint out of the linters.GH_CLIENT_ID/GH_CLIENT_SECRETpassthrough indocker-compose.yml.nginx
301s/editorand/editor/*tohttps://app.open-reaction-database.org/, so old bookmarks land on the new editor rather than a blank SPA shell.Drive-by cleanups
setup_test_postgres()normalizes its connection URL to the psycopg (v3) driver. SQLAlchemy was otherwise reaching for psycopg2 on the barepostgresql://URL thattesting.postgresqlproduces — the last psycopg2 caller in the repo — sopsycopg2-binarycomes out of the dependency list andmain.pyno longer has to patch the driver into the URL itself.*_pb2.pyruff/ty excludes: no generated protobuf wrappers are checked in or built here (the editor generated JS protos, not Python).Retirement timeline
@bdeadman asked (below) that we not pull the editor out of production without giving the user community a clear deadline to retrieve their data. That happened in #178: since 2026-05-14 the editor's login and datasets pages have carried a banner announcing deactivation after July 31, 2026, pointing at the new editor and the announcement post, and giving
help@open-reaction-database.orgas a contact. That date has passed.Deployment
The AWS Copilot manifest that pinned the front-end healthcheck to
/editor/healthcheckis already gone frommain(#174), and the Pulumi interface stack's target group uses the ALB default health check path (/), which the SPA serves. Nothing to change on the deployment side.Follow-ups (out of scope for this PR)
/copilot/ord-editor/secrets/(GH_CLIENT_ID,GH_CLIENT_SECRET) and the GitHub OAuth app behind them.editordatabase inord-infrastructure(stacks/database/__main__.py) once the editor is off production.Test plan
All of the below ran against
d18ec48, the current head. CI is green on that commit as well:check_python,check_licenses,check_javascript, all 8test_ord_interfacejobs, and all 4test_appjobs (which run./run_tests.shend to end).uv run pytest— 91 passedruff check,ruff format --check, andty checkclean onord_interface./run_tests.sh— test database builds without the editor schema/migrate step, the slimmed-down image builds, and the app tests pass (75 passed)/run/fastapi.sock(no flask socket); gunicorn runsord_interface.api.main:appalone, and the image has noord_interface/editor//,/browse,/search,/about, and/api/datasetsreturn 200 through nginx;/ketchertakes nginx's directory redirect to/ketcher/and then 200/editor,/editor/,/editor/foo,/editor/healthcheckall301tohttps://app.open-reaction-database.org/;/editorxfalls through to the SPA🤖 Generated with Claude Code
Greptile Summary
The PR removes the retired Flask editor and its build, runtime, test, and dependency infrastructure in favor of the standalone ORD app.
/editorURLs to the standalone application and updates deployment configuration accordingly.Confidence Score: 5/5
The PR appears safe to merge, with the editor removal consistently reflected across routing, packaging, startup, tests, and deployment configuration.
No concrete changed-code failure remains after checking the retained database initialization and routing paths; the removed editor infrastructure is replaced by the documented external redirect.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart LR User[Browser request] --> Nginx Nginx -->|/editor or /editor/*| ORDApp[Standalone ORD app] Nginx -->|/api/*| FastAPI Nginx -->|Other paths| SPA[React SPA] FastAPI --> PostgreSQLReviews (1): Last reviewed commit: "Point the test database at psycopg and d..." | Re-trigger Greptile