Monorepo for Aesthetic.Computer aesthetic.computer
at main 2 folders 18 files
README.md

System Scripts Omakase Menu 🍱#

Operational and maintenance scripts for Aesthetic Computer backend systems.

📁 Directory Structure#

  • atproto/ - ATProto sync, backfill, and verification scripts
  • recovery/ - Data recovery and repair scripts
  • migration/ - One-off database migrations (historical)

🦋 ATProto Scripts (atproto/)#

Sync & Backfill#

  • sync-atproto.mjs - Master sync script for all content types (kidlisp, paintings, tapes, moods)

    • Usage: node scripts/atproto/sync-atproto.mjs [live] [--type] [--user] [--anonymous-only]
    • Syncs MongoDB content to ATProto PDS and updates rkey backrefs
  • backfill-kidlisp-rkeys.mjs - Match existing ATProto kidlisp to MongoDB and update rkeys

    • Usage: node scripts/atproto/backfill-kidlisp-rkeys.mjs [live]
    • For @jeffrey, art-guest, and @fifi accounts
  • sync-jeffrey-kidlisp.mjs - Focused sync for @jeffrey's missing kidlisp

    • Usage: node scripts/atproto/sync-jeffrey-kidlisp.mjs [live]
    • Creates ATProto records for kidlisp missing from PDS
  • sync-fifi-kidlisp.mjs - Focused sync for @fifi's missing kidlisp

    • Usage: node scripts/atproto/sync-fifi-kidlisp.mjs [live]
    • Batch processes kidlisp records (10 at a time)

Verification & Debugging#

  • check-kidlisp-atproto.mjs - Compare MongoDB vs PDS state for @jeffrey and art-guest

    • Usage: node scripts/atproto/check-kidlisp-atproto.mjs
    • Reports discrepancies and missing rkeys
  • check-fifi-kidlisp.mjs - Compare MongoDB vs PDS state for @fifi

    • Usage: node scripts/atproto/check-fifi-kidlisp.mjs
    • Detailed analysis of sync status

Development & Testing#

  • sync-mongodb-from-atproto.mjs - Reverse sync: pull data from PDS into MongoDB

    • Usage: node scripts/atproto/sync-mongodb-from-atproto.mjs
    • Useful for testing and data recovery scenarios
  • test-mood-sync.mjs - Test mood syncing to ATProto

    • Usage: node scripts/atproto/test-mood-sync.mjs
    • Development/debugging script

🔧 Recovery Scripts (recovery/)#

  • recover-deleted-tapes.mjs - Recover tapes from DigitalOcean Spaces backups

    • Usage: node scripts/recovery/recover-deleted-tapes.mjs [--dry-run] [--codes=...] [--rebake] [--recreate]
    • Locates ZIP/MP4 files and optionally recreates MongoDB + ATProto records
    • Requires: DO_SPACES_KEY, DO_SPACES_SECRET env vars
  • check-tape-zips-in-spaces.mjs - List all tape ZIP files in DigitalOcean Spaces

    • Usage: node scripts/recovery/check-tape-zips-in-spaces.mjs
    • Quick inventory of available tape backups

🎯 Common Workflows#

Check sync status for all users#

node scripts/atproto/check-kidlisp-atproto.mjs
node scripts/atproto/check-fifi-kidlisp.mjs

Backfill missing rkeys#

# Dry run first
node scripts/atproto/backfill-kidlisp-rkeys.mjs

# Then live
node scripts/atproto/backfill-kidlisp-rkeys.mjs live

Sync specific content types#

# Kidlisp only
node scripts/atproto/sync-atproto.mjs live --kidlisp-only

# Anonymous content only (uses art-guest account)
node scripts/atproto/sync-atproto.mjs live --anonymous-only

# Specific user
node scripts/atproto/sync-atproto.mjs live --user=jeffrey

Recover deleted tapes#

# Check what can be recovered
node scripts/recovery/recover-deleted-tapes.mjs --dry-run

# Recover specific codes
node scripts/recovery/recover-deleted-tapes.mjs --codes=abc,xyz --recreate

📝 Notes#

  • All scripts support --dry-run or run without live argument for safe preview
  • Scripts automatically use MongoDB from MONGODB_CONNECTION_STRING env var
  • ATProto scripts require PDS_URL and PDS_ADMIN_PASSWORD env vars
  • Always run verification scripts after sync/backfill operations
  • Backend modules: system/backend/
  • Netlify functions: system/netlify/functions/
  • AT Protocol tools: at/scripts/atproto/ (external federation tools)