Monorepo for Aesthetic.Computer aesthetic.computer
core paintings STATUS.md
7.3 kB

Painting Tools - Status & Next Steps #

Date: October 9, 2025
Status: 🛠️ Tools ready, feature not yet implemented


✅ Completed #

1. Planning #

2. CLI Tools Suite (/paintings) #

3. Bluesky Integration (/at) #


🧪 Tested #

API Inspector Results (Live) #

$ AC_API=https://aesthetic.computer node inspect-api.mjs --tv

✅ Status: 200 OK
✅ Duration: 698ms
📊 Found 10 paintings
❌ With codes: 0 (not implemented yet)

Conclusion: APIs work, no paintings have codes yet (expected)


🚧 Next Steps #

Component 1: Code Generator Module #

File: system/backend/painting-code-generator.mjs

Tasks:

Test with:

node test-code-generator.mjs --image sample.png

Component 2: Track Media API Enhancement #

File: system/netlify/functions/track-media.js

Tasks:

Test with:

# Upload a painting via web interface
# Check response includes code
node paintings/inspect-mongodb.mjs --recent 1

Component 3: Migration Script #

File: paintings/migrate-codes.mjs

Tasks:

Test with:

node migrate-codes.mjs --dry-run --limit 10
node migrate-codes.mjs --execute --limit 100

Component 4: Lookup API #

File: system/netlify/functions/painting-code-lookup.mjs

Tasks:

Test with:

node paintings/inspect-api.mjs --painting-code waf
curl https://aesthetic.computer/api/painting-code/waf

Component 5: URL Routing #

File: system/public/aesthetic.computer/disks/prompt.mjs

Tasks:

Test with:

# Visit: https://aesthetic.computer/#waf
# Visit: https://aesthetic.computer/painting~#waf

Component 6: TV API Enhancement #

File: system/netlify/functions/tv.mjs

Tasks:

Test with:

node paintings/inspect-api.mjs --tv
# Check if paintings now have codes in response

Component 7: Frontend Display #

File: system/public/aesthetic.computer/disks/painting.mjs

Tasks:

Test manually:

  • Upload a painting
  • See code displayed
  • Copy and share short URL

Component 8: Orphan Discovery #

File: paintings/audit-orphans.mjs

Tasks:

Test with:

node audit-orphans.mjs --report
node audit-orphans.mjs --import --dry-run

🔧 Development Workflow #

1. Start Local Server #

cd /workspaces/aesthetic-computer
npm run dev  # or whatever starts the local server

2. Configure Tools #

cd paintings
node setup.mjs

# Set environment variables
export MONGODB_CONNECTION_STRING="mongodb://localhost:27017"
export MONGODB_NAME="aesthetic"
export AC_API="http://localhost:8888"

3. Develop & Test Iteratively #

# Build component (e.g., code generator)
# Test it
node test-code-generator.mjs

# Inspect MongoDB before
node inspect-mongodb.mjs --stats

# Run migration
node migrate-codes.mjs --dry-run --limit 10

# Inspect MongoDB after
node inspect-mongodb.mjs --stats

# Test APIs
node inspect-api.mjs --tv
node inspect-api.mjs --painting-code waf

4. Verify Everything Works #

# Upload a new painting via web interface
# Check it gets a code automatically
node inspect-mongodb.mjs --recent 1

# Visit short URL
open https://aesthetic.computer/#waf

# Check TV feed includes codes
curl https://aesthetic.computer/api/tv?limit=5 | jq '.media.paintings[].code'

5. Final Commit #

git add .
git commit -m "Implement painting short codes system

- Code generator with smart inference and random fallback
- Track-media API generates codes on upload
- Migration script for existing paintings
- Lookup API for #code resolution
- URL routing for /#waf and /painting~#waf
- TV API includes codes and short URLs
- Frontend displays codes with QR and copy
- Orphan discovery and import tools
- Complete CLI inspection suite"

git push

📊 Success Criteria #


🎯 Priority Order #

  1. Code Generator (foundation for everything)
  2. Track Media API (new uploads get codes)
  3. Migration Script (backfill existing paintings)
  4. Lookup API (enable short URLs)
  5. URL Routing (make short URLs work)
  6. TV API (include codes in feed)
  7. Frontend Display (show codes to users)
  8. Orphan Discovery (cleanup any missing data)

📝 Notes #

  • All tools can target local or live environment via AC_API
  • MongoDB inspection works with any connection string
  • Digital Ocean inspection requires credentials
  • API inspection works against live site (public APIs)
  • Feature is non-breaking: old URLs still work
  • Codes are additive: { slug, user, when, code, hash }

Ready to implement! 🚀