Skip to main content

Changelog

All notable changes to RankDisco are documented here.


2025-12-24

Changed

  • Directory reorganization - Major cleanup of packages/api/src/ folder structure
    • Organized endpoints/ (103 files) into 15 feature-based subfolders
    • Organized lib/ (81 files) into 11 domain-based subfolders
    • Added AGENTS.md documentation files to all folders
    • Updated all import paths across the codebase

Endpoints Structure

FolderPurpose
admin/Administrative operations (12 files)
apps/App Store/Google Play endpoints (21 files)
assets/Static asset serving (3 files)
classification/URL/domain classification (7 files)
crawl/Web crawling endpoints (6 files)
dataforseo/DataForSEO webhooks (3 files)
debug/Debugging endpoints (4 files)
domains/Domain management (4 files)
keywords/Keyword research/tracking (5 files)
misc/Utility endpoints (4 files)
projects/Project management (3 files)
social/Social media scraping (1 file)
test/Test endpoints (16 files)
tracking/Ranking tracking (10 files)
workflows/Workflow triggers (2 files)

Library Structure

FolderPurpose
classification/Classification pipeline (15 files)
crawl/Crawling utilities (4 files)
dataforseo/DataForSEO API client (7 files)
domains/Domain/URL utilities (3 files)
integrations/Third-party clients (6 files)
keywords/Keyword management (19 files)
parsing/HTML parsing (4 files)
social/Social scraping (5 files)
storage/Storage clients (3 files)
utils/General utilities (13 files)
workflows/Workflow helpers (2 files)

Documentation

  • Updated architecture overview with new project structure
  • Each folder now has an AGENTS.md file documenting its contents

2025-12-23

Added

  • Roadmap page - Comprehensive development roadmap organized by phases
  • Social infrastructure documentation - Documented existing social scraping capabilities
  • Workflow documentation - Comprehensive workflow docs with Mermaid diagrams
  • Public API reference - Client-facing API documentation
  • Internal API reference - Admin and operations API documentation
  • Mermaid support - Enabled diagram rendering in docs site

Fixed

  • Keywords data model normalization - Fixed FK constraint error in domain onboard workflow
    • Added UNIQUE constraint on keywords(keyword) to enable ON CONFLICT upserts
    • Created project_keywords VIEW as alias for keyword_subscriptions junction table
    • Updated bulk_save endpoint to use global keywords + subscription links
    • Updated recategorize endpoint to JOIN through keyword_subscriptions

Changed

  • Keywords are now global (no project_id on keyword record)
  • Project-keyword relationships stored in keyword_subscriptions junction table
  • Same keyword can be tracked by multiple projects without duplication

Documentation

  • Updated DomainOnboard workflow diagram to show full social discovery flow
  • Added Brand Properties Discovery section explaining the 5-step process
  • Added Social Infrastructure section with implementation status table
  • Documented cascade fetch strategy for profile scraping
  • Clarified what's implemented vs planned (SharedCount, official APIs)

2025-12-22

Fixed

  • ESLint cleanup - Resolved all ESLint errors in lib/*.js files
  • TypeScript errors - Fixed type errors in workflow files
  • Removed unnecessary regex escape characters in classifier-llm.js

Added

  • TypeScript, ESLint, and Prettier configuration to API package

2025-12-18

Added

  • Domain onboard workflow - Complete domain intelligence gathering
    • Backlink fetching and classification
    • Keyword fetching and classification
    • Brand properties discovery
    • Social account detection and verification
    • Ranking domain properties scraping
  • SERP tracking workflow - Location-aware keyword ranking tracking
  • Classification workflows - URL, keyword, and domain classification pipelines
  • Subscription dispatch workflow - Daily cron for recurring tracking
  • App details workflow - App store metadata enrichment

Changed

  • Migrated from queue-only to workflow-first architecture
  • Added cost tracking for all DataForSEO API calls

2025-12-01

Added

  • Initial release of RankFabric edge worker
  • Cloudflare Workers + D1 + Queues + Workflows architecture
  • DataForSEO integration for backlinks, keywords, SERP, apps
  • Multi-stage classification pipelines (rules → vectorize → content → LLM)
  • App store tracking for Apple and Google Play
  • YouTube channel resolution
  • Social account discovery from domain homepages
  • Cost tracking across all external APIs

Migration Notes

Keywords Schema (2025-12-23)

If you have existing data, run migration 0122_normalize_keywords_table.sql:

-- Add UNIQUE constraint on keyword text
CREATE UNIQUE INDEX IF NOT EXISTS idx_keywords_keyword_unique ON keywords(keyword);

-- Create project_keywords VIEW
CREATE VIEW IF NOT EXISTS project_keywords AS
SELECT
id, project_id, keyword_id, channel, frequency, status,
metadata_json, last_run_at AS last_checked_at, next_run_at AS next_check_at,
last_status, error_message, created_at, updated_at,
NULL AS location_code, NULL AS device, NULL AS language_code,
NULL AS target_domain, NULL AS notes, NULL AS asset_id
FROM keyword_subscriptions;

Versioning

RankFabric follows Semantic Versioning:

  • Major: Breaking API changes
  • Minor: New features, backward compatible
  • Patch: Bug fixes, backward compatible