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.mddocumentation files to all folders - Updated all import paths across the codebase
- Organized
Endpoints Structure
| Folder | Purpose |
|---|---|
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
| Folder | Purpose |
|---|---|
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.mdfile 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
UNIQUEconstraint onkeywords(keyword)to enableON CONFLICTupserts - Created
project_keywordsVIEW as alias forkeyword_subscriptionsjunction table - Updated
bulk_saveendpoint to use global keywords + subscription links - Updated
recategorizeendpoint to JOIN throughkeyword_subscriptions
- Added
Changed
- Keywords are now global (no
project_idon keyword record) - Project-keyword relationships stored in
keyword_subscriptionsjunction 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