58 Commits

Author SHA1 Message Date
metatroncubeswdev
006a27a203 Add Quorla logo set and build the app icon from the Q mark
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:30:58 -04:00
metatroncubeswdev
8537fddcce Document the TikTok app setup (org, app, sandbox, review text, demo script)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:29:41 -04:00
metatroncubeswdev
4da66b41a9 Add privacy/terms pages and TikTok posting-screen requirements
- Public /privacy and /terms pages (Quorla, operated by Metatroncube
  Software Solutions) for platform app listings; includes Google API
  Limited Use statement and TikTok data use
- TikTok post panel follows the Content Posting API guidelines: shows the
  creator's name/avatar, audience options from creator info with no
  default, comment/Duet/Stitch off by default and locked when the creator
  disabled them, max video length, commercial content disclosure (Your
  brand / Branded content, branded content can't be private), Music Usage
  Confirmation / Branded Content Policy consent
- Placeholder app icon (branding/quorla-icon-1024.png)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:14:28 -04:00
metatroncubeswdev
f24e6ada4b Add LinkedIn, Google Business Profile, YouTube, TikTok, Pinterest, Threads, Reddit
- Connections page: admins set up each platform's developer app (keys stored
  encrypted), connect a client's account via OAuth, choose company Page /
  business location, check or disconnect
- Adapters per platform with sign-in, identity, targets and publishing;
  token refresh with "reconnect needed" when a sign-in expires
- Publishing and Content library: "Post to" lists the client's connected
  platforms with their own fields and optional per-platform caption
- Queue validates drafts per platform and publishes through the adapters;
  Facebook/Instagram unchanged
- Signed, expiring media links (/m/...) for platforms that fetch media by URL
- Agent: list_connections tool; schedule tools accept all platforms + options
- Offline test suite with simulated platform APIs (15 tests)
- docs/platforms.md: setup, approvals per platform, what is and isn't tested

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 08:19:33 -04:00
metatroncubeswdev
3cbc76e7f1 Support Instagram-only clients (no Facebook Page)
- Connector lists Instagram accounts assigned to the system user without a
  Page; numbers, inbox, mentions and publishing work for them
- Clients link by Page or Instagram account ("Link an account"); Facebook
  features explain the client has no Page instead of failing
- Drafts for Instagram-only clients drop Facebook automatically
- Images for Instagram-only clients are hosted via the agency's own Page
  (META_MEDIA_PAGE_ID, unpublished); never falls back to a client's Page

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 01:02:03 -04:00
metatroncubeswdev
7f7e41b617 Explain why Fetch now fails for unlinked clients; let admins link a Page
- Refresh on a client with no Facebook Page now returns a clear 400 error
  instead of silently replying "started"
- Client page shows "Not linked to a Facebook Page" with a Link a Page
  dialog (admins) and shows refresh errors
- New POST /api/clients/:slug/link-page links an existing client folder to
  an unlinked Meta Page, keeping its name and files

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 23:35:46 -04:00
metatroncubeswdev
e107c046a2 Add server hosting runbook; trim stray whitespace in env values
- docs/hosting.html: step-by-step setup of app.quorlasocial.com with Docker
- env.js: trim spaces/tabs Docker keeps after "=" (broke the Meta token)
- Dockerfile: chown only writable folders (build step 55s -> 2s)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:05:41 -04:00
metatroncubeswdev
c309581df0 Initial commit: Quorla social media manager
Dashboard (content library, publishing queue with approvals, inbox, team
management, AI runs), Meta connector, branded PDF reports, agent skills,
and Docker packaging (Dockerfile, docker-compose with Caddy HTTPS,
backup and path-relocation scripts).

Client data, live data and secrets are excluded via .gitignore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:02:29 -04:00