Skip to content

feat(ops): answer "what datastore does this app actually use?" - #436

Merged
catomean merged 1 commit into
mainfrom
feat/data-dependency-map
Aug 29, 2026
Merged

feat(ops): answer "what datastore does this app actually use?"#436
catomean merged 1 commit into
mainfrom
feat/data-dependency-map

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

Asked whether anything still used the self-hosted Supabase stack, I grepped DATABASE_URL across every app env. Every hit pointed at localhost:5432, so the answer looked like "nothing" — and stopping the stack was one command from taking orangecat and botsmann down, with 114 auth users, 114 profiles and 927 messages behind it, written to the previous evening.

A Supabase app never sets DATABASE_URL. It talks HTTPS to PostgREST/Kong via SUPABASE_URL. The absence of a Postgres connection string is not the absence of a dependency — it is the signature of a different one. Grepping one binding and concluding "unused" reads absence as an answer.

This reads both bindings per app, and reports whether a Postgres target actually holds tables, so an empty database cannot masquerade as the live one.

First run:

app datastore
orangecat, botsmann self-hosted Supabase (supabase.orangecat.ch)
printcraft hosted supabase.co — never migrated off the cloud
12 apps native postgres
native orangecat db exists with zero tables, referenced by nothing

Read-only. "Is X safe to stop?" now has a factual answer instead of a confident wrong one.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UvjGNAS9CMfEGNW26tUR4P

Asked whether anything still used the self-hosted Supabase stack, I grepped
DATABASE_URL across every app env. Every hit pointed at localhost:5432, so the
answer looked like "nothing" — and stopping the stack was one command from
taking orangecat and botsmann down, with 114 auth users, 114 profiles and 927
messages behind it, written to as recently as the previous evening.

A Supabase app never sets DATABASE_URL. It talks HTTPS to PostgREST/Kong via
SUPABASE_URL. Absence of a Postgres connection string is not absence of a
dependency; it is the signature of a different one.

This reads BOTH bindings per app and reports whether a Postgres target actually
contains tables, so an empty database cannot masquerade as the live one.

What it found on first run:
  orangecat, botsmann -> self-hosted Supabase (supabase.orangecat.ch)
  printcraft          -> HOSTED supabase.co, never migrated off the cloud
  12 apps             -> native postgres
  native db orangecat -> exists with ZERO tables, referenced by nothing

Read-only. The question "is X safe to stop?" now has a factual answer instead
of a confident wrong one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UvjGNAS9CMfEGNW26tUR4P
@catomean
catomean merged commit ae56299 into main Aug 29, 2026
3 checks passed
@catomean
catomean deleted the feat/data-dependency-map branch August 29, 2026 05:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant