diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author1.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author1.jpg new file mode 100644 index 000000000000..9225f29af403 Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author1.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author2.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author2.jpg new file mode 100644 index 000000000000..1b793bf95db5 Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author2.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author3.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author3.jpg new file mode 100644 index 000000000000..3fd382ed7bbd Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author3.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author4.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author4.jpg new file mode 100644 index 000000000000..89eb66540fdd Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author4.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author5.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author5.jpg new file mode 100644 index 000000000000..2bec353d4503 Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author5.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author6.jpg b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author6.jpg new file mode 100644 index 000000000000..befcc31556b5 Binary files /dev/null and b/Modules/Sources/JetpackStats/Resources/Mocks/Avatars/author6.jpg differ diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-archive.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-archive.json new file mode 100644 index 000000000000..ef5a5d7aa258 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-archive.json @@ -0,0 +1,344 @@ +[ + { + "sectionName": "homepage", + "items": [ + { + "href": "https://example.com/", + "value": "/", + "metrics": { + "views": 8500 + } + } + ], + "metrics": { + "views": 8500 + } + }, + { + "sectionName": "categories", + "items": [ + { + "href": "https://example.com/category/tech-news/", + "value": "tech-news", + "metrics": { + "views": 4200 + } + }, + { + "href": "https://example.com/category/reviews/", + "value": "reviews", + "metrics": { + "views": 3800 + } + }, + { + "href": "https://example.com/category/transportation/", + "value": "transportation", + "metrics": { + "views": 2800 + } + }, + { + "href": "https://example.com/category/ai/", + "value": "artificial-intelligence", + "metrics": { + "views": 2600 + } + }, + { + "href": "https://example.com/category/gaming/", + "value": "gaming", + "metrics": { + "views": 2200 + } + }, + { + "href": "https://example.com/category/apple/", + "value": "apple", + "metrics": { + "views": 2000 + } + }, + { + "href": "https://example.com/category/google/", + "value": "google", + "metrics": { + "views": 1600 + } + }, + { + "href": "https://example.com/category/microsoft/", + "value": "microsoft", + "metrics": { + "views": 1400 + } + }, + { + "href": "https://example.com/category/entertainment/", + "value": "entertainment", + "metrics": { + "views": 1200 + } + }, + { + "href": "https://example.com/category/science/", + "value": "science", + "metrics": { + "views": 800 + } + } + ], + "metrics": { + "views": 22600 + } + }, + { + "sectionName": "tags", + "items": [ + { + "href": "https://example.com/tag/iphone/", + "value": "iphone", + "metrics": { + "views": 1800 + } + }, + { + "href": "https://example.com/tag/android/", + "value": "android", + "metrics": { + "views": 1600 + } + }, + { + "href": "https://example.com/tag/tesla/", + "value": "tesla", + "metrics": { + "views": 1400 + } + }, + { + "href": "https://example.com/tag/cybertruck/", + "value": "cybertruck", + "metrics": { + "views": 1200 + } + }, + { + "href": "https://example.com/tag/vr/", + "value": "virtual-reality", + "metrics": { + "views": 1000 + } + }, + { + "href": "https://example.com/tag/laptops/", + "value": "laptops", + "metrics": { + "views": 900 + } + }, + { + "href": "https://example.com/tag/ai/", + "value": "ai", + "metrics": { + "views": 850 + } + }, + { + "href": "https://example.com/tag/chatgpt/", + "value": "chatgpt", + "metrics": { + "views": 800 + } + }, + { + "href": "https://example.com/tag/streaming/", + "value": "streaming", + "metrics": { + "views": 600 + } + }, + { + "href": "https://example.com/tag/privacy/", + "value": "privacy", + "metrics": { + "views": 500 + } + } + ], + "metrics": { + "views": 10650 + } + }, + { + "sectionName": "archives", + "items": [ + { + "href": "https://example.com/2024/11/", + "value": "November 2024", + "metrics": { + "views": 3200 + } + }, + { + "href": "https://example.com/2024/10/", + "value": "October 2024", + "metrics": { + "views": 4800 + } + }, + { + "href": "https://example.com/2024/09/", + "value": "September 2024", + "metrics": { + "views": 3600 + } + }, + { + "href": "https://example.com/2024/08/", + "value": "August 2024", + "metrics": { + "views": 2800 + } + }, + { + "href": "https://example.com/2024/07/", + "value": "July 2024", + "metrics": { + "views": 2400 + } + }, + { + "href": "https://example.com/2024/06/", + "value": "June 2024", + "metrics": { + "views": 2000 + } + } + ], + "metrics": { + "views": 18800 + } + }, + { + "sectionName": "author", + "items": [ + { + "href": "https://example.com/author/alex-johnson/", + "value": "alex-johnson", + "metrics": { + "views": 2800 + } + }, + { + "href": "https://example.com/author/chloe-zhang/", + "value": "chloe-zhang", + "metrics": { + "views": 1800 + } + }, + { + "href": "https://example.com/author/jordan-davis/", + "value": "jordan-davis", + "metrics": { + "views": 1600 + } + }, + { + "href": "https://example.com/author/sofia-rodriguez/", + "value": "sofia-rodriguez", + "metrics": { + "views": 1400 + } + }, + { + "href": "https://example.com/author/morgan-smith/", + "value": "morgan-smith", + "metrics": { + "views": 1200 + } + }, + { + "href": "https://example.com/author/emma-thompson/", + "value": "emma-thompson", + "metrics": { + "views": 1000 + } + }, + { + "href": "https://example.com/author/riley-martinez/", + "value": "riley-martinez", + "metrics": { + "views": 900 + } + }, + { + "href": "https://example.com/author/jamie-lee/", + "value": "jamie-lee", + "metrics": { + "views": 800 + } + }, + { + "href": "https://example.com/author/avery-taylor/", + "value": "avery-taylor", + "metrics": { + "views": 700 + } + }, + { + "href": "https://example.com/author/quinn-anderson/", + "value": "quinn-anderson", + "metrics": { + "views": 600 + } + } + ], + "metrics": { + "views": 12800 + } + }, + { + "sectionName": "other", + "items": [ + { + "href": "https://example.com/search/", + "value": "/search/", + "metrics": { + "views": 1500 + } + }, + { + "href": "https://example.com/rss/", + "value": "/rss/", + "metrics": { + "views": 800 + } + }, + { + "href": "https://example.com/sitemap.xml", + "value": "/sitemap.xml", + "metrics": { + "views": 400 + } + }, + { + "href": "https://example.com/wp-admin/", + "value": "/wp-admin/", + "metrics": { + "views": 200 + } + }, + { + "href": "https://example.com/robots.txt", + "value": "/robots.txt", + "metrics": { + "views": 100 + } + } + ], + "metrics": { + "views": 3000 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-authors.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-authors.json new file mode 100644 index 000000000000..02caa1a087ee --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-authors.json @@ -0,0 +1,394 @@ +[ + { + "name": "Alex Johnson", + "userId": "1", + "role": "Editor-in-Chief", + "metrics": { + "views": 12000, + "comments": 580, + "likes": 2100, + "visitors": 8400, + "bounceRate": 25, + "timeOnSite": 320 + }, + "posts": [ + { + "title": "Best printer 2025: just buy a Brother laser printer, the winner is clear, middle finger in the air", + "postID": "1", + "postURL": "https://example.com/best-printer-2025", + "date": "2024-11-20T00:00:00Z", + "type": "post", + "author": "Alex Johnson", + "metrics": { + "views": 5800 + } + }, + { + "title": "I Replaced Every Component in My Framework Laptop Until It Became a Desktop", + "postID": "2", + "postURL": "https://example.com/framework-laptop-desktop", + "date": "2024-11-18T00:00:00Z", + "type": "post", + "author": "Alex Johnson", + "metrics": { + "views": 2500 + } + }, + { + "title": "The M3 MacBook Air Is Faster Than My Personality", + "postID": "20", + "postURL": "https://example.com/m3-macbook-air-review", + "date": "2024-10-02T00:00:00Z", + "type": "post", + "author": "Alex Johnson", + "metrics": { + "views": 3800 + } + } + ] + }, + { + "name": "Chloe Zhang", + "userId": "2", + "role": "Executive Editor", + "metrics": { + "views": 7800, + "comments": 380, + "likes": 1420, + "visitors": 5460, + "bounceRate": 32, + "timeOnSite": 270 + }, + "posts": [ + { + "title": "The Cybertruck's Frunk Won't Stop Eating Fingers", + "postID": "3", + "postURL": "https://example.com/cybertruck-frunk-safety", + "date": "2024-11-15T00:00:00Z", + "type": "post", + "author": "Chloe Zhang", + "metrics": { + "views": 2000 + } + }, + { + "title": "The $2000 Dyson Hair Dryer: A Scientific Analysis of My Poor Life Choices", + "postID": "16", + "postURL": "https://example.com/dyson-hair-dryer-review", + "date": "2024-10-12T00:00:00Z", + "type": "post", + "author": "Chloe Zhang", + "metrics": { + "views": 1800 + } + } + ] + }, + { + "name": "Jordan Davis", + "userId": "3", + "role": "Senior Writer", + "metrics": { + "views": 9200, + "comments": 450, + "likes": 1680, + "visitors": 6440, + "bounceRate": 30, + "timeOnSite": 310 + }, + "posts": [ + { + "title": "Matter Smart Home Protocol Still Doesn't Matter: A Year Later", + "postID": "4", + "postURL": "https://example.com/matter-smart-home-fail", + "date": "2024-11-12T00:00:00Z", + "type": "post", + "author": "Jordan Davis", + "metrics": { + "views": 1800 + } + }, + { + "title": "Netflix Password Sharing Crackdown: A Love Story", + "postID": "21", + "postURL": "https://example.com/netflix-password-sharing", + "date": "2024-09-30T00:00:00Z", + "type": "post", + "author": "Jordan Davis", + "metrics": { + "views": 5200 + } + } + ] + }, + { + "name": "Sofia Rodriguez", + "userId": "4", + "role": "Editor-at-Large", + "metrics": { + "views": 5650, + "comments": 275, + "likes": 1030, + "visitors": 3955, + "bounceRate": 34, + "timeOnSite": 285 + }, + "posts": [ + { + "title": "Trackpad Alignment on the New MacBook Pro: A 10,000 Word Investigation", + "postID": "5", + "postURL": "https://example.com/macbook-trackpad-investigation", + "date": "2024-11-10T00:00:00Z", + "type": "post", + "author": "Sofia Rodriguez", + "metrics": { + "views": 1600 + } + }, + { + "title": "I Shattered the Apple Vision Pro's Front Glass and It Only Cost Me $799 to Fix", + "postID": "11", + "postURL": "https://example.com/vision-pro-repair", + "date": "2024-10-25T00:00:00Z", + "type": "post", + "author": "Sofia Rodriguez", + "metrics": { + "views": 850 + } + }, + { + "title": "The Rabbit R1 Is Just an Android App in a Tiny Orange Box", + "postID": "22", + "postURL": "https://example.com/rabbit-r1-android", + "date": "2024-09-28T00:00:00Z", + "type": "post", + "author": "Sofia Rodriguez", + "metrics": { + "views": 2300 + } + } + ] + }, + { + "name": "Morgan Smith", + "userId": "5", + "role": "Senior Editor", + "metrics": { + "views": 8800, + "comments": 420, + "likes": 1560, + "visitors": 6160, + "bounceRate": 28, + "timeOnSite": 295 + }, + "posts": [ + { + "title": "Nothing Phone (2a): Now With 50% More Nothing", + "postID": "6", + "postURL": "https://example.com/nothing-phone-2a", + "date": "2024-11-08T00:00:00Z", + "type": "post", + "author": "Morgan Smith", + "metrics": { + "views": 1400 + } + }, + { + "title": "Twitter's New Logo Is Just the Letter X and Everyone Is Very Normal About It", + "postID": "17", + "postURL": "https://example.com/twitter-x-logo", + "date": "2024-10-10T00:00:00Z", + "type": "post", + "author": "Morgan Smith", + "metrics": { + "views": 6200 + } + } + ] + }, + { + "name": "Emma Thompson", + "userId": "6", + "role": "Managing Editor", + "metrics": { + "views": 6900, + "comments": 335, + "likes": 1255, + "visitors": 4830, + "bounceRate": 31, + "timeOnSite": 300 + }, + "posts": [ + { + "title": "Samsung's Moon Photography Is Real* (*Terms and Conditions Apply)", + "postID": "7", + "postURL": "https://example.com/samsung-moon-photography", + "date": "2024-11-05T00:00:00Z", + "type": "post", + "author": "Emma Thompson", + "metrics": { + "views": 1200 + } + }, + { + "title": "ChatGPT Convinced Me It Was Sentient (It Was Lying)", + "postID": "15", + "postURL": "https://example.com/chatgpt-sentient", + "date": "2024-10-15T00:00:00Z", + "type": "post", + "author": "Emma Thompson", + "metrics": { + "views": 4500 + } + } + ] + }, + { + "name": "Riley Martinez", + "userId": "7", + "role": "Senior Reporter", + "metrics": { + "views": 4600, + "comments": 225, + "likes": 840, + "visitors": 3220, + "bounceRate": 37, + "timeOnSite": 260 + }, + "posts": [ + { + "title": "The Steam Deck OLED Screen Is So Good I Licked It", + "postID": "8", + "postURL": "https://example.com/steam-deck-oled", + "date": "2024-11-03T00:00:00Z", + "type": "post", + "author": "Riley Martinez", + "metrics": { + "views": 1100 + } + }, + { + "title": "Meta's VR Legs Update: They're Still Not Real", + "postID": "9", + "postURL": "https://example.com/meta-vr-legs", + "date": "2024-10-30T00:00:00Z", + "type": "post", + "author": "Riley Martinez", + "metrics": { + "views": 1000 + } + }, + { + "title": "Sony's New $200 Controller Has a Screen Nobody Asked For", + "postID": "19", + "postURL": "https://example.com/sony-controller-screen", + "date": "2024-10-05T00:00:00Z", + "type": "post", + "author": "Riley Martinez", + "metrics": { + "views": 1500 + } + } + ] + }, + { + "name": "Jamie Lee", + "userId": "8", + "role": "News Writer", + "metrics": { + "views": 3900, + "comments": 190, + "likes": 710, + "visitors": 2730, + "bounceRate": 40, + "timeOnSite": 245 + }, + "posts": [ + { + "title": "Microsoft's New AI Can Predict When You'll Rage Quit Excel", + "postID": "10", + "postURL": "https://example.com/microsoft-ai-excel", + "date": "2024-10-28T00:00:00Z", + "type": "post", + "author": "Jamie Lee", + "metrics": { + "views": 900 + } + }, + { + "title": "This Smart Toaster Has DRM and I'm Not Even Surprised Anymore", + "postID": "14", + "postURL": "https://example.com/smart-toaster-drm", + "date": "2024-10-18T00:00:00Z", + "type": "post", + "author": "Jamie Lee", + "metrics": { + "views": 2100 + } + } + ] + }, + { + "name": "Avery Taylor", + "userId": "9", + "role": "News Writer", + "metrics": { + "views": 4350, + "comments": 215, + "likes": 790, + "visitors": 3045, + "bounceRate": 42, + "timeOnSite": 235 + }, + "posts": [ + { + "title": "Google's Pixel 8 Pro Has Too Many Cameras (I Counted)", + "postID": "12", + "postURL": "https://example.com/pixel-8-pro-cameras", + "date": "2024-10-22T00:00:00Z", + "type": "post", + "author": "Avery Taylor", + "metrics": { + "views": 750 + } + }, + { + "title": "I Tried to Return a Smart TV That Shows Ads. Best Buy Laughed at Me", + "postID": "18", + "postURL": "https://example.com/smart-tv-ads-return", + "date": "2024-10-08T00:00:00Z", + "type": "post", + "author": "Avery Taylor", + "metrics": { + "views": 2800 + } + } + ] + }, + { + "name": "Quinn Anderson", + "userId": "10", + "role": "Weekend Editor", + "metrics": { + "views": 3420, + "comments": 170, + "likes": 625, + "visitors": 2394, + "bounceRate": 36, + "timeOnSite": 270 + }, + "posts": [ + { + "title": "Apple Finally Invented USB-C (They're Calling It Revolutionary)", + "postID": "13", + "postURL": "https://example.com/apple-usb-c", + "date": "2024-10-20T00:00:00Z", + "type": "post", + "author": "Quinn Anderson", + "metrics": { + "views": 3200 + } + } + ] + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-external-links.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-external-links.json new file mode 100644 index 000000000000..3a452dcfd62d --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-external-links.json @@ -0,0 +1,307 @@ +[ + { + "url": "https://apple.com", + "title": "Apple", + "children": [ + { + "url": "https://apple.com/iphone-15-pro", + "title": "iPhone 15 Pro", + "children": [], + "metrics": { + "views": 2800, + "visitors": 2240 + } + }, + { + "url": "https://apple.com/vision-pro", + "title": "Apple Vision Pro", + "children": [], + "metrics": { + "views": 2200, + "visitors": 1760 + } + }, + { + "url": "https://apple.com/macbook-pro", + "title": "MacBook Pro", + "children": [], + "metrics": { + "views": 1600, + "visitors": 1280 + } + } + ], + "metrics": { + "views": 8500, + "visitors": 6800 + } + }, + { + "url": "https://tesla.com", + "title": "Tesla", + "children": [ + { + "url": "https://tesla.com/cybertruck", + "title": "Cybertruck", + "children": [], + "metrics": { + "views": 1800, + "visitors": 1440 + } + }, + { + "url": "https://tesla.com/model-s", + "title": "Model S", + "children": [], + "metrics": { + "views": 1200, + "visitors": 960 + } + } + ], + "metrics": { + "views": 4200, + "visitors": 3360 + } + }, + { + "url": "https://amazon.com", + "title": "Amazon", + "children": [ + { + "url": "https://amazon.com/dp/B09G9CJM1Z", + "title": "Brother Laser Printer", + "children": [], + "metrics": { + "views": 1500, + "visitors": 1200 + } + } + ], + "metrics": { + "views": 3800, + "visitors": 3040 + } + }, + { + "url": "https://github.com", + "title": "GitHub", + "children": [ + { + "url": "https://github.com/openai/chatgpt", + "title": "ChatGPT Repository", + "children": [], + "metrics": { + "views": 1100, + "visitors": 880 + } + }, + { + "url": "https://github.com/vercel/next.js", + "title": "Next.js", + "children": [], + "metrics": { + "views": 900, + "visitors": 720 + } + } + ], + "metrics": { + "views": 3200, + "visitors": 2560 + } + }, + { + "url": "https://microsoft.com", + "title": "Microsoft", + "children": [ + { + "url": "https://microsoft.com/en-us/microsoft-365", + "title": "Microsoft 365", + "children": [], + "metrics": { + "views": 800, + "visitors": 640 + } + }, + { + "url": "https://microsoft.com/surface", + "title": "Surface", + "children": [], + "metrics": { + "views": 600, + "visitors": 480 + } + } + ], + "metrics": { + "views": 2800, + "visitors": 2240 + } + }, + { + "url": "https://google.com", + "title": "Google", + "children": [ + { + "url": "https://store.google.com/product/pixel_8_pro", + "title": "Pixel 8 Pro", + "children": [], + "metrics": { + "views": 1000, + "visitors": 800 + } + } + ], + "metrics": { + "views": 2600, + "visitors": 2080 + } + }, + { + "url": "https://samsung.com", + "title": "Samsung", + "children": [ + { + "url": "https://samsung.com/smartphones/galaxy-s24-ultra", + "title": "Galaxy S24 Ultra", + "children": [], + "metrics": { + "views": 700, + "visitors": 560 + } + } + ], + "metrics": { + "views": 2200, + "visitors": 1760 + } + }, + { + "url": "https://frame.work", + "title": "Framework", + "children": [], + "metrics": { + "views": 1800, + "visitors": 1440 + } + }, + { + "url": "https://nothing.tech", + "title": "Nothing", + "children": [], + "metrics": { + "views": 1600, + "visitors": 1280 + } + }, + { + "url": "https://store.steampowered.com", + "title": "Steam", + "children": [ + { + "url": "https://store.steampowered.com/steamdeck", + "title": "Steam Deck", + "children": [], + "metrics": { + "views": 500, + "visitors": 400 + } + } + ], + "metrics": { + "views": 1400, + "visitors": 1120 + } + }, + { + "url": "https://netflix.com", + "title": "Netflix", + "children": [], + "metrics": { + "views": 1200, + "visitors": 960 + } + }, + { + "url": "https://openai.com", + "title": "OpenAI", + "children": [], + "metrics": { + "views": 1100, + "visitors": 880 + } + }, + { + "url": "https://anthropic.com", + "title": "Anthropic", + "children": [], + "metrics": { + "views": 900, + "visitors": 720 + } + }, + { + "url": "https://meta.com", + "title": "Meta", + "children": [], + "metrics": { + "views": 800, + "visitors": 640 + } + }, + { + "url": "https://sony.com", + "title": "Sony", + "children": [], + "metrics": { + "views": 700, + "visitors": 560 + } + }, + { + "url": "https://dyson.com", + "title": "Dyson", + "children": [], + "metrics": { + "views": 600, + "visitors": 480 + } + }, + { + "url": "https://bestbuy.com", + "title": "Best Buy", + "children": [], + "metrics": { + "views": 500, + "visitors": 400 + } + }, + { + "url": "https://rabbit.tech", + "title": "Rabbit", + "children": [], + "metrics": { + "views": 400, + "visitors": 320 + } + }, + { + "url": "https://arc.net", + "title": "Arc Browser", + "children": [], + "metrics": { + "views": 350, + "visitors": 280 + } + }, + { + "url": "https://raspberrypi.com", + "title": "Raspberry Pi", + "children": [], + "metrics": { + "views": 300, + "visitors": 240 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-file-downloads.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-file-downloads.json new file mode 100644 index 000000000000..19b90a095518 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-file-downloads.json @@ -0,0 +1,177 @@ +[ + { + "fileName": "cybertruck-safety-report-2024.pdf", + "filePath": "/downloads/reports/cybertruck-safety-report-2024.pdf", + "metrics": { + "downloads": 4200 + } + }, + { + "fileName": "best-tech-products-2024.pdf", + "filePath": "/downloads/guides/best-tech-products-2024.pdf", + "metrics": { + "downloads": 3800 + } + }, + { + "fileName": "apple-vision-pro-specs.pdf", + "filePath": "/downloads/specs/apple-vision-pro-specs.pdf", + "metrics": { + "downloads": 3500 + } + }, + { + "fileName": "printer-buying-guide-2024.pdf", + "filePath": "/downloads/guides/printer-buying-guide-2024.pdf", + "metrics": { + "downloads": 3200 + } + }, + { + "fileName": "twitter-x-rebrand-timeline.pdf", + "filePath": "/downloads/infographics/twitter-x-rebrand-timeline.pdf", + "metrics": { + "downloads": 2800 + } + }, + { + "fileName": "framework-laptop-repair-guide.pdf", + "filePath": "/downloads/manuals/framework-laptop-repair-guide.pdf", + "metrics": { + "downloads": 2600 + } + }, + { + "fileName": "steam-deck-oled-comparison.xlsx", + "filePath": "/downloads/data/steam-deck-oled-comparison.xlsx", + "metrics": { + "downloads": 2400 + } + }, + { + "fileName": "ai-tools-comparison-2024.pdf", + "filePath": "/downloads/reports/ai-tools-comparison-2024.pdf", + "metrics": { + "downloads": 2200 + } + }, + { + "fileName": "smart-home-setup-guide.pdf", + "filePath": "/downloads/guides/smart-home-setup-guide.pdf", + "metrics": { + "downloads": 2000 + } + }, + { + "fileName": "pixel-camera-samples.zip", + "filePath": "/downloads/media/pixel-camera-samples.zip", + "metrics": { + "downloads": 1800 + } + }, + { + "fileName": "m3-macbook-benchmarks.xlsx", + "filePath": "/downloads/data/m3-macbook-benchmarks.xlsx", + "metrics": { + "downloads": 1600 + } + }, + { + "fileName": "netflix-sharing-workarounds.pdf", + "filePath": "/downloads/guides/netflix-sharing-workarounds.pdf", + "metrics": { + "downloads": 1500 + } + }, + { + "fileName": "browser-privacy-comparison.pdf", + "filePath": "/downloads/reports/browser-privacy-comparison.pdf", + "metrics": { + "downloads": 1400 + } + }, + { + "fileName": "raspberry-pi-5-pinout.pdf", + "filePath": "/downloads/docs/raspberry-pi-5-pinout.pdf", + "metrics": { + "downloads": 1200 + } + }, + { + "fileName": "windows-11-debloat-script.ps1", + "filePath": "/downloads/scripts/windows-11-debloat-script.ps1", + "metrics": { + "downloads": 1100 + } + }, + { + "fileName": "ev-comparison-chart-2024.pdf", + "filePath": "/downloads/infographics/ev-comparison-chart-2024.pdf", + "metrics": { + "downloads": 1000 + } + }, + { + "fileName": "vr-headset-specs-comparison.xlsx", + "filePath": "/downloads/data/vr-headset-specs-comparison.xlsx", + "metrics": { + "downloads": 900 + } + }, + { + "fileName": "smart-tv-ad-blocking-guide.pdf", + "filePath": "/downloads/guides/smart-tv-ad-blocking-guide.pdf", + "metrics": { + "downloads": 850 + } + }, + { + "fileName": "tech-company-revenue-2024.csv", + "filePath": "/downloads/data/tech-company-revenue-2024.csv", + "metrics": { + "downloads": 800 + } + }, + { + "fileName": "password-manager-comparison.pdf", + "filePath": "/downloads/reports/password-manager-comparison.pdf", + "metrics": { + "downloads": 750 + } + }, + { + "fileName": "arc-browser-shortcuts.pdf", + "filePath": "/downloads/cheatsheets/arc-browser-shortcuts.pdf", + "metrics": { + "downloads": 700 + } + }, + { + "fileName": "github-copilot-alternatives.pdf", + "filePath": "/downloads/guides/github-copilot-alternatives.pdf", + "metrics": { + "downloads": 650 + } + }, + { + "fileName": "mastodon-migration-guide.pdf", + "filePath": "/downloads/guides/mastodon-migration-guide.pdf", + "metrics": { + "downloads": 600 + } + }, + { + "fileName": "dall-e-prompts-collection.txt", + "filePath": "/downloads/resources/dall-e-prompts-collection.txt", + "metrics": { + "downloads": 550 + } + }, + { + "fileName": "tech-glossary-2024.pdf", + "filePath": "/downloads/references/tech-glossary-2024.pdf", + "metrics": { + "downloads": 500 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-locations.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-locations.json new file mode 100644 index 000000000000..c667a9a30ef5 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-locations.json @@ -0,0 +1,392 @@ +[ + { + "country": "United States", + "countryCode": "US", + "flag": "🇺🇸", + "metrics": { + "views": 18000, + "visitors": 12600, + "bounceRate": 28, + "timeOnSite": 320, + "comments": 810, + "likes": 1764 + } + }, + { + "country": "United Kingdom", + "countryCode": "GB", + "flag": "🇬🇧", + "metrics": { + "views": 6800, + "visitors": 4760, + "bounceRate": 32, + "timeOnSite": 290, + "comments": 306, + "likes": 666 + } + }, + { + "country": "Canada", + "countryCode": "CA", + "flag": "🇨🇦", + "metrics": { + "views": 4200, + "visitors": 2940, + "bounceRate": 35, + "timeOnSite": 270, + "comments": 189, + "likes": 412 + } + }, + { + "country": "Germany", + "countryCode": "DE", + "flag": "🇩🇪", + "metrics": { + "views": 3600, + "visitors": 2520, + "bounceRate": 34, + "timeOnSite": 280, + "comments": 162, + "likes": 353 + } + }, + { + "country": "Japan", + "countryCode": "JP", + "flag": "🇯🇵", + "metrics": { + "views": 3200, + "visitors": 2240, + "bounceRate": 38, + "timeOnSite": 250, + "comments": 144, + "likes": 314 + } + }, + { + "country": "Australia", + "countryCode": "AU", + "flag": "🇦🇺", + "metrics": { + "views": 2800, + "visitors": 1960, + "bounceRate": 36, + "timeOnSite": 260, + "comments": 126, + "likes": 274 + } + }, + { + "country": "France", + "countryCode": "FR", + "flag": "🇫🇷", + "metrics": { + "views": 2400, + "visitors": 1680, + "bounceRate": 37, + "timeOnSite": 255, + "comments": 108, + "likes": 235 + } + }, + { + "country": "India", + "countryCode": "IN", + "flag": "🇮🇳", + "metrics": { + "views": 2200, + "visitors": 1540, + "bounceRate": 42, + "timeOnSite": 220, + "comments": 99, + "likes": 216 + } + }, + { + "country": "Netherlands", + "countryCode": "NL", + "flag": "🇳🇱", + "metrics": { + "views": 1800, + "visitors": 1260, + "bounceRate": 30, + "timeOnSite": 300, + "comments": 81, + "likes": 176 + } + }, + { + "country": "Sweden", + "countryCode": "SE", + "flag": "🇸🇪", + "metrics": { + "views": 1600, + "visitors": 1120, + "bounceRate": 29, + "timeOnSite": 310, + "comments": 72, + "likes": 157 + } + }, + { + "country": "Italy", + "countryCode": "IT", + "flag": "🇮🇹", + "metrics": { + "views": 1500, + "visitors": 1050, + "bounceRate": 40, + "timeOnSite": 240, + "comments": 68, + "likes": 147 + } + }, + { + "country": "South Korea", + "countryCode": "KR", + "flag": "🇰🇷", + "metrics": { + "views": 1400, + "visitors": 980, + "bounceRate": 33, + "timeOnSite": 285, + "comments": 63, + "likes": 137 + } + }, + { + "country": "Spain", + "countryCode": "ES", + "flag": "🇪🇸", + "metrics": { + "views": 1300, + "visitors": 910, + "bounceRate": 41, + "timeOnSite": 235, + "comments": 59, + "likes": 127 + } + }, + { + "country": "Brazil", + "countryCode": "BR", + "flag": "🇧🇷", + "metrics": { + "views": 1200, + "visitors": 840, + "bounceRate": 43, + "timeOnSite": 215, + "comments": 54, + "likes": 118 + } + }, + { + "country": "Switzerland", + "countryCode": "CH", + "flag": "🇨ðŸ‡", + "metrics": { + "views": 1100, + "visitors": 770, + "bounceRate": 31, + "timeOnSite": 295, + "comments": 50, + "likes": 108 + } + }, + { + "country": "Norway", + "countryCode": "NO", + "flag": "🇳🇴", + "metrics": { + "views": 1000, + "visitors": 700, + "bounceRate": 32, + "timeOnSite": 290, + "comments": 45, + "likes": 98 + } + }, + { + "country": "Denmark", + "countryCode": "DK", + "flag": "🇩🇰", + "metrics": { + "views": 900, + "visitors": 630, + "bounceRate": 33, + "timeOnSite": 285, + "comments": 41, + "likes": 88 + } + }, + { + "country": "Belgium", + "countryCode": "BE", + "flag": "🇧🇪", + "metrics": { + "views": 850, + "visitors": 595, + "bounceRate": 35, + "timeOnSite": 275, + "comments": 38, + "likes": 83 + } + }, + { + "country": "Poland", + "countryCode": "PL", + "flag": "🇵🇱", + "metrics": { + "views": 800, + "visitors": 560, + "bounceRate": 39, + "timeOnSite": 245, + "comments": 36, + "likes": 78 + } + }, + { + "country": "Finland", + "countryCode": "FI", + "flag": "🇫🇮", + "metrics": { + "views": 750, + "visitors": 525, + "bounceRate": 30, + "timeOnSite": 305, + "comments": 34, + "likes": 74 + } + }, + { + "country": "Austria", + "countryCode": "AT", + "flag": "🇦🇹", + "metrics": { + "views": 700, + "visitors": 490, + "bounceRate": 36, + "timeOnSite": 265, + "comments": 32, + "likes": 69 + } + }, + { + "country": "Singapore", + "countryCode": "SG", + "flag": "🇸🇬", + "metrics": { + "views": 650, + "visitors": 455, + "bounceRate": 28, + "timeOnSite": 315, + "comments": 29, + "likes": 64 + } + }, + { + "country": "Ireland", + "countryCode": "IE", + "flag": "🇮🇪", + "metrics": { + "views": 600, + "visitors": 420, + "bounceRate": 34, + "timeOnSite": 280, + "comments": 27, + "likes": 59 + } + }, + { + "country": "New Zealand", + "countryCode": "NZ", + "flag": "🇳🇿", + "metrics": { + "views": 550, + "visitors": 385, + "bounceRate": 37, + "timeOnSite": 255, + "comments": 25, + "likes": 54 + } + }, + { + "country": "Hong Kong", + "countryCode": "HK", + "flag": "ðŸ‡ðŸ‡°", + "metrics": { + "views": 500, + "visitors": 350, + "bounceRate": 31, + "timeOnSite": 295, + "comments": 23, + "likes": 49 + } + }, + { + "country": "Israel", + "countryCode": "IL", + "flag": "🇮🇱", + "metrics": { + "views": 450, + "visitors": 315, + "bounceRate": 33, + "timeOnSite": 285, + "comments": 20, + "likes": 44 + } + }, + { + "country": "Mexico", + "countryCode": "MX", + "flag": "🇲🇽", + "metrics": { + "views": 400, + "visitors": 280, + "bounceRate": 44, + "timeOnSite": 210, + "comments": 18, + "likes": 39 + } + }, + { + "country": "Czech Republic", + "countryCode": "CZ", + "flag": "🇨🇿", + "metrics": { + "views": 350, + "visitors": 245, + "bounceRate": 38, + "timeOnSite": 250, + "comments": 16, + "likes": 34 + } + }, + { + "country": "Portugal", + "countryCode": "PT", + "flag": "🇵🇹", + "metrics": { + "views": 300, + "visitors": 210, + "bounceRate": 40, + "timeOnSite": 240, + "comments": 14, + "likes": 29 + } + }, + { + "country": "Taiwan", + "countryCode": "TW", + "flag": "🇹🇼", + "metrics": { + "views": 250, + "visitors": 175, + "bounceRate": 35, + "timeOnSite": 270, + "comments": 11, + "likes": 25 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-postsAndPages.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-postsAndPages.json new file mode 100644 index 000000000000..64ee667d78ca --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-postsAndPages.json @@ -0,0 +1,407 @@ +[ + { + "title": "Best printer 2025: just buy a Brother laser printer, the winner is clear, middle finger in the air", + "postID": "1", + "type": "post", + "author": "Alex Johnson", + "date": "2024-11-20T00:00:00Z", + "metrics": { + "views": 5800, + "comments": 289, + "likes": 1200, + "visitors": 4060, + "bounceRate": 25, + "timeOnSite": 420 + } + }, + { + "title": "I Replaced Every Component in My Framework Laptop Until It Became a Desktop", + "postID": "2", + "type": "post", + "author": "Alex Johnson", + "date": "2024-11-18T00:00:00Z", + "metrics": { + "views": 2500, + "comments": 125, + "likes": 450, + "visitors": 1750, + "bounceRate": 35, + "timeOnSite": 240 + } + }, + { + "title": "The Cybertruck's Frunk Won't Stop Eating Fingers", + "postID": "3", + "type": "post", + "author": "Chloe Zhang", + "date": "2024-11-15T00:00:00Z", + "metrics": { + "views": 2000, + "comments": 98, + "likes": 380, + "visitors": 1400, + "bounceRate": 40, + "timeOnSite": 210 + } + }, + { + "title": "Matter Smart Home Protocol Still Doesn't Matter: A Year Later", + "postID": "4", + "type": "post", + "author": "Jordan Davis", + "date": "2024-11-12T00:00:00Z", + "metrics": { + "views": 1800, + "comments": 85, + "likes": 320, + "visitors": 1260, + "bounceRate": 38, + "timeOnSite": 225 + } + }, + { + "title": "Trackpad Alignment on the New MacBook Pro: A 10,000 Word Investigation", + "postID": "5", + "type": "post", + "author": "Sofia Rodriguez", + "date": "2024-11-10T00:00:00Z", + "metrics": { + "views": 1600, + "comments": 72, + "likes": 280, + "visitors": 1120, + "bounceRate": 42, + "timeOnSite": 195 + } + }, + { + "title": "Nothing Phone (2a): Now With 50% More Nothing", + "postID": "6", + "type": "post", + "author": "Morgan Smith", + "date": "2024-11-08T00:00:00Z", + "metrics": { + "views": 1400, + "comments": 65, + "likes": 245, + "visitors": 980, + "bounceRate": 45, + "timeOnSite": 180 + } + }, + { + "title": "Samsung's Moon Photography Is Real* (*Terms and Conditions Apply)", + "postID": "7", + "type": "post", + "author": "Emma Thompson", + "date": "2024-11-05T00:00:00Z", + "metrics": { + "views": 1200, + "comments": 58, + "likes": 210, + "visitors": 840, + "bounceRate": 48, + "timeOnSite": 165 + } + }, + { + "title": "The Steam Deck OLED Screen Is So Good I Licked It", + "postID": "8", + "type": "post", + "author": "Riley Martinez", + "date": "2024-11-03T00:00:00Z", + "metrics": { + "views": 1100, + "comments": 52, + "likes": 195, + "visitors": 770, + "bounceRate": 43, + "timeOnSite": 190 + } + }, + { + "title": "Meta's VR Legs Update: They're Still Not Real", + "postID": "9", + "type": "post", + "author": "Riley Martinez", + "date": "2024-10-30T00:00:00Z", + "metrics": { + "views": 1000, + "comments": 48, + "likes": 175, + "visitors": 700, + "bounceRate": 46, + "timeOnSite": 175 + } + }, + { + "title": "About The Verge", + "postID": "9991", + "type": "page", + "author": "Alex Johnson", + "date": null, + "metrics": { + "views": 900, + "comments": 0, + "likes": 25, + "visitors": 720, + "bounceRate": 60, + "timeOnSite": 90 + } + }, + { + "title": "Microsoft's New AI Can Predict When You'll Rage Quit Excel", + "postID": "10", + "type": "post", + "author": "Jamie Lee", + "date": "2024-10-28T00:00:00Z", + "metrics": { + "views": 900, + "comments": 42, + "likes": 160, + "visitors": 630, + "bounceRate": 50, + "timeOnSite": 155 + } + }, + { + "title": "I Shattered the Apple Vision Pro's Front Glass and It Only Cost Me $799 to Fix", + "postID": "11", + "type": "post", + "author": "Sofia Rodriguez", + "date": "2024-10-25T00:00:00Z", + "metrics": { + "views": 850, + "comments": 38, + "likes": 150, + "visitors": 595, + "bounceRate": 44, + "timeOnSite": 185 + } + }, + { + "title": "Google's Pixel 8 Pro Has Too Many Cameras (I Counted)", + "postID": "12", + "type": "post", + "author": "Avery Taylor", + "date": "2024-10-22T00:00:00Z", + "metrics": { + "views": 750, + "comments": 32, + "likes": 130, + "visitors": 525, + "bounceRate": 52, + "timeOnSite": 145 + } + }, + { + "title": "This Smart Toaster Has DRM and I'm Not Even Surprised Anymore", + "postID": "14", + "type": "post", + "author": "Jamie Lee", + "date": "2024-10-18T00:00:00Z", + "metrics": { + "views": 2100, + "comments": 102, + "likes": 420, + "visitors": 1470, + "bounceRate": 33, + "timeOnSite": 260 + } + }, + { + "title": "ChatGPT Convinced Me It Was Sentient (It Was Lying)", + "postID": "15", + "type": "post", + "author": "Emma Thompson", + "date": "2024-10-15T00:00:00Z", + "metrics": { + "views": 4500, + "comments": 225, + "likes": 890, + "visitors": 3150, + "bounceRate": 28, + "timeOnSite": 340 + } + }, + { + "title": "The $2000 Dyson Hair Dryer: A Scientific Analysis of My Poor Life Choices", + "postID": "16", + "type": "post", + "author": "Chloe Zhang", + "date": "2024-10-12T00:00:00Z", + "metrics": { + "views": 1800, + "comments": 89, + "likes": 340, + "visitors": 1260, + "bounceRate": 36, + "timeOnSite": 230 + } + }, + { + "title": "I Tried to Return a Smart TV That Shows Ads. Best Buy Laughed at Me", + "postID": "18", + "type": "post", + "author": "Avery Taylor", + "date": "2024-10-08T00:00:00Z", + "metrics": { + "views": 2800, + "comments": 142, + "likes": 560, + "visitors": 1960, + "bounceRate": 31, + "timeOnSite": 295 + } + }, + { + "title": "Sony's New $200 Controller Has a Screen Nobody Asked For", + "postID": "19", + "type": "post", + "author": "Riley Martinez", + "date": "2024-10-05T00:00:00Z", + "metrics": { + "views": 1500, + "comments": 75, + "likes": 290, + "visitors": 1050, + "bounceRate": 39, + "timeOnSite": 205 + } + }, + { + "title": "The M3 MacBook Air Is Faster Than My Personality", + "postID": "20", + "type": "post", + "author": "Alex Johnson", + "date": "2024-10-02T00:00:00Z", + "metrics": { + "views": 3800, + "comments": 189, + "likes": 760, + "visitors": 2660, + "bounceRate": 26, + "timeOnSite": 320 + } + }, + { + "title": "Netflix Password Sharing Crackdown: A Love Story", + "postID": "21", + "type": "post", + "author": "Jordan Davis", + "date": "2024-09-30T00:00:00Z", + "metrics": { + "views": 5200, + "comments": 260, + "likes": 1040, + "visitors": 3640, + "bounceRate": 24, + "timeOnSite": 360 + } + }, + { + "title": "The Rabbit R1 Is Just an Android App in a Tiny Orange Box", + "postID": "22", + "type": "post", + "author": "Sofia Rodriguez", + "date": "2024-09-28T00:00:00Z", + "metrics": { + "views": 2300, + "comments": 115, + "likes": 460, + "visitors": 1610, + "bounceRate": 34, + "timeOnSite": 250 + } + }, + { + "title": "Contact Us", + "postID": "9992", + "type": "page", + "author": "Chloe Zhang", + "date": null, + "metrics": { + "views": 500, + "comments": 0, + "likes": 10, + "visitors": 400, + "bounceRate": 65, + "timeOnSite": 75 + } + }, + { + "title": "Newsletter Signup", + "postID": "9993", + "type": "page", + "author": "Jordan Davis", + "date": null, + "metrics": { + "views": 400, + "comments": 0, + "likes": 15, + "visitors": 320, + "bounceRate": 55, + "timeOnSite": 120 + } + }, + { + "title": "Privacy Policy", + "postID": "9994", + "type": "page", + "author": "Sofia Rodriguez", + "date": null, + "metrics": { + "views": 250, + "comments": 0, + "likes": 0, + "visitors": 200, + "bounceRate": 70, + "timeOnSite": 60 + } + }, + { + "title": "Terms of Service", + "postID": "9995", + "type": "page", + "author": "Morgan Smith", + "date": null, + "metrics": { + "views": 180, + "comments": 0, + "likes": 0, + "visitors": 144, + "bounceRate": 72, + "timeOnSite": 55 + } + }, + { + "title": "Careers", + "postID": "9996", + "type": "page", + "author": "Emma Thompson", + "date": null, + "metrics": { + "views": 320, + "comments": 0, + "likes": 8, + "visitors": 256, + "bounceRate": 58, + "timeOnSite": 95 + } + }, + { + "title": "Advertise With Us", + "postID": "9997", + "type": "page", + "author": "Quinn Anderson", + "date": null, + "metrics": { + "views": 220, + "comments": 0, + "likes": 5, + "visitors": 176, + "bounceRate": 62, + "timeOnSite": 85 + } + } +] diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-referrers.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-referrers.json new file mode 100644 index 000000000000..fde5413a0299 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-referrers.json @@ -0,0 +1,370 @@ +[ + { + "name": "Google Search", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "children": [ + { + "name": "best laptop 2024", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "children": [], + "metrics": { + "views": 1800, + "visitors": 1440, + "bounceRate": 18, + "timeOnSite": 380, + "comments": 72, + "likes": 165 + } + }, + { + "name": "cybertruck problems", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "children": [], + "metrics": { + "views": 1500, + "visitors": 1200, + "bounceRate": 22, + "timeOnSite": 340, + "comments": 58, + "likes": 132 + } + }, + { + "name": "apple vision pro review", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "children": [], + "metrics": { + "views": 1200, + "visitors": 960, + "bounceRate": 25, + "timeOnSite": 310, + "comments": 48, + "likes": 108 + } + } + ], + "metrics": { + "views": 8500, + "visitors": 6800, + "bounceRate": 20, + "timeOnSite": 350, + "comments": 340, + "likes": 780 + } + }, + { + "name": "Twitter/X", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "children": [ + { + "name": "@mkbhd shared your article", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "children": [], + "metrics": { + "views": 2200, + "visitors": 1760, + "bounceRate": 28, + "timeOnSite": 260, + "comments": 88, + "likes": 198 + } + }, + { + "name": "@verge tweet thread", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "children": [], + "metrics": { + "views": 1850, + "visitors": 1480, + "bounceRate": 30, + "timeOnSite": 240, + "comments": 74, + "likes": 167 + } + }, + { + "name": "#TechTwitter discussion", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "children": [], + "metrics": { + "views": 950, + "visitors": 760, + "bounceRate": 35, + "timeOnSite": 200, + "comments": 38, + "likes": 86 + } + } + ], + "metrics": { + "views": 6200, + "visitors": 4960, + "bounceRate": 32, + "timeOnSite": 230, + "comments": 248, + "likes": 558 + } + }, + { + "name": "Reddit", + "domain": "reddit.com", + "iconURL": "https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png", + "children": [ + { + "name": "r/technology", + "domain": "reddit.com", + "iconURL": "https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png", + "children": [], + "metrics": { + "views": 1600, + "visitors": 1280, + "bounceRate": 26, + "timeOnSite": 320, + "comments": 96, + "likes": 224 + } + }, + { + "name": "r/gadgets", + "domain": "reddit.com", + "iconURL": "https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png", + "children": [], + "metrics": { + "views": 1200, + "visitors": 960, + "bounceRate": 28, + "timeOnSite": 290, + "comments": 72, + "likes": 168 + } + }, + { + "name": "r/apple", + "domain": "reddit.com", + "iconURL": "https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png", + "children": [], + "metrics": { + "views": 800, + "visitors": 640, + "bounceRate": 24, + "timeOnSite": 340, + "comments": 48, + "likes": 112 + } + } + ], + "metrics": { + "views": 4800, + "visitors": 3840, + "bounceRate": 27, + "timeOnSite": 310, + "comments": 288, + "likes": 672 + } + }, + { + "name": "Hacker News", + "domain": "news.ycombinator.com", + "iconURL": "https://news.ycombinator.com/favicon.ico", + "children": [], + "metrics": { + "views": 3200, + "visitors": 2560, + "bounceRate": 15, + "timeOnSite": 420, + "comments": 192, + "likes": 448 + } + }, + { + "name": "LinkedIn", + "domain": "linkedin.com", + "iconURL": "https://static.licdn.com/sc/h/al2o9zrvru7aqj8e1x2rzsrca", + "children": [], + "metrics": { + "views": 1800, + "visitors": 1440, + "bounceRate": 35, + "timeOnSite": 250, + "comments": 72, + "likes": 162 + } + }, + { + "name": "YouTube", + "domain": "youtube.com", + "iconURL": "https://www.youtube.com/s/desktop/8a0c81e8/img/favicon_32x32.png", + "children": [ + { + "name": "Tech review channels", + "domain": "youtube.com", + "iconURL": "https://www.youtube.com/s/desktop/8a0c81e8/img/favicon_32x32.png", + "children": [], + "metrics": { + "views": 850, + "visitors": 680, + "bounceRate": 40, + "timeOnSite": 180, + "comments": 34, + "likes": 77 + } + } + ], + "metrics": { + "views": 1600, + "visitors": 1280, + "bounceRate": 42, + "timeOnSite": 170, + "comments": 64, + "likes": 144 + } + }, + { + "name": "Ars Technica", + "domain": "arstechnica.com", + "iconURL": "https://arstechnica.com/favicon.ico", + "children": [], + "metrics": { + "views": 1400, + "visitors": 1120, + "bounceRate": 20, + "timeOnSite": 380, + "comments": 84, + "likes": 196 + } + }, + { + "name": "The Register", + "domain": "theregister.com", + "iconURL": "https://www.theregister.com/favicon.ico", + "children": [], + "metrics": { + "views": 1200, + "visitors": 960, + "bounceRate": 18, + "timeOnSite": 390, + "comments": 72, + "likes": 168 + } + }, + { + "name": "Facebook", + "domain": "facebook.com", + "iconURL": "https://static.xx.fbcdn.net/rsrc.php/yD/r/d4ZIVX-5C-b.ico", + "children": [], + "metrics": { + "views": 1100, + "visitors": 880, + "bounceRate": 45, + "timeOnSite": 150, + "comments": 44, + "likes": 99 + } + }, + { + "name": "Mastodon", + "domain": "mastodon.social", + "iconURL": "https://mastodon.social/favicon.ico", + "children": [], + "metrics": { + "views": 900, + "visitors": 720, + "bounceRate": 25, + "timeOnSite": 280, + "comments": 54, + "likes": 126 + } + }, + { + "name": "GitHub", + "domain": "github.com", + "iconURL": "https://github.githubassets.com/favicons/favicon.svg", + "children": [], + "metrics": { + "views": 800, + "visitors": 640, + "bounceRate": 30, + "timeOnSite": 300, + "comments": 48, + "likes": 112 + } + }, + { + "name": "Lobsters", + "domain": "lobste.rs", + "iconURL": "https://lobste.rs/favicon.ico", + "children": [], + "metrics": { + "views": 600, + "visitors": 480, + "bounceRate": 22, + "timeOnSite": 360, + "comments": 36, + "likes": 84 + } + }, + { + "name": "Discord", + "domain": "discord.com", + "iconURL": "https://discord.com/assets/favicon.ico", + "children": [], + "metrics": { + "views": 500, + "visitors": 400, + "bounceRate": 38, + "timeOnSite": 200, + "comments": 20, + "likes": 45 + } + }, + { + "name": "Slack", + "domain": "slack.com", + "iconURL": "https://a.slack-edge.com/80588/marketing/img/meta/favicon-32.png", + "children": [], + "metrics": { + "views": 400, + "visitors": 320, + "bounceRate": 35, + "timeOnSite": 220, + "comments": 16, + "likes": 36 + } + }, + { + "name": "Direct/Bookmarks", + "domain": "direct", + "iconURL": null, + "children": [], + "metrics": { + "views": 3500, + "visitors": 2800, + "bounceRate": 15, + "timeOnSite": 400, + "comments": 140, + "likes": 315 + } + }, + { + "name": "Email Newsletter", + "domain": "email", + "iconURL": null, + "children": [], + "metrics": { + "views": 2800, + "visitors": 2240, + "bounceRate": 12, + "timeOnSite": 440, + "comments": 112, + "likes": 252 + } + } +] diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-search-terms.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-search-terms.json new file mode 100644 index 000000000000..66166ec0d0b5 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-search-terms.json @@ -0,0 +1,212 @@ +[ + { + "term": "apple vision pro review", + "metrics": { + "views": 4200, + "visitors": 3360 + } + }, + { + "term": "best laptop 2024", + "metrics": { + "views": 3800, + "visitors": 3040 + } + }, + { + "term": "cybertruck problems", + "metrics": { + "views": 3500, + "visitors": 2800 + } + }, + { + "term": "nothing phone review", + "metrics": { + "views": 2800, + "visitors": 2240 + } + }, + { + "term": "macbook pro m3 max", + "metrics": { + "views": 2600, + "visitors": 2080 + } + }, + { + "term": "chatgpt vs claude", + "metrics": { + "views": 2400, + "visitors": 1920 + } + }, + { + "term": "steam deck oled", + "metrics": { + "views": 2200, + "visitors": 1760 + } + }, + { + "term": "pixel 8 pro camera test", + "metrics": { + "views": 2000, + "visitors": 1600 + } + }, + { + "term": "framework laptop review", + "metrics": { + "views": 1800, + "visitors": 1440 + } + }, + { + "term": "meta vr legs", + "metrics": { + "views": 1600, + "visitors": 1280 + } + }, + { + "term": "twitter x rebrand", + "metrics": { + "views": 1500, + "visitors": 1200 + } + }, + { + "term": "smart home matter protocol", + "metrics": { + "views": 1400, + "visitors": 1120 + } + }, + { + "term": "dyson zone headphones", + "metrics": { + "views": 1300, + "visitors": 1040 + } + }, + { + "term": "samsung moon photography fake", + "metrics": { + "views": 1200, + "visitors": 960 + } + }, + { + "term": "rabbit r1 ai device", + "metrics": { + "views": 1100, + "visitors": 880 + } + }, + { + "term": "best ai tools 2024", + "metrics": { + "views": 1000, + "visitors": 800 + } + }, + { + "term": "tesla fsd beta", + "metrics": { + "views": 950, + "visitors": 760 + } + }, + { + "term": "apple usb-c iphone", + "metrics": { + "views": 900, + "visitors": 720 + } + }, + { + "term": "microsoft excel ai features", + "metrics": { + "views": 850, + "visitors": 680 + } + }, + { + "term": "netflix password sharing", + "metrics": { + "views": 800, + "visitors": 640 + } + }, + { + "term": "smart tv ads blocking", + "metrics": { + "views": 750, + "visitors": 600 + } + }, + { + "term": "sony dualsense edge", + "metrics": { + "views": 700, + "visitors": 560 + } + }, + { + "term": "brother laser printer recommendation", + "metrics": { + "views": 650, + "visitors": 520 + } + }, + { + "term": "github copilot alternatives", + "metrics": { + "views": 600, + "visitors": 480 + } + }, + { + "term": "mastodon vs twitter", + "metrics": { + "views": 550, + "visitors": 440 + } + }, + { + "term": "arc browser review", + "metrics": { + "views": 500, + "visitors": 400 + } + }, + { + "term": "raspberry pi 5 specs", + "metrics": { + "views": 450, + "visitors": 360 + } + }, + { + "term": "windows 11 ads remove", + "metrics": { + "views": 400, + "visitors": 320 + } + }, + { + "term": "best password manager 2024", + "metrics": { + "views": 350, + "visitors": 280 + } + }, + { + "term": "dall-e 3 vs midjourney", + "metrics": { + "views": 300, + "visitors": 240 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-videos.json b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-videos.json new file mode 100644 index 000000000000..45e2fc01e718 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/HistoricalData/historical-videos.json @@ -0,0 +1,182 @@ +[ + { + "title": "Apple Vision Pro Unboxing: The $3,500 Reality Check", + "postId": "11", + "videoURL": "https://example.com/videos/vision-pro-unboxing.mp4", + "metrics": { + "views": 8500, + "likes": 480 + } + }, + { + "title": "Cybertruck vs F-150 Lightning: Electric Truck Showdown", + "postId": "3", + "videoURL": "https://example.com/videos/truck-showdown.mp4", + "metrics": { + "views": 6200, + "likes": 350 + } + }, + { + "title": "Framework Laptop 16: The Ultimate Modular Machine", + "postId": "2", + "videoURL": "https://example.com/videos/framework-16.mp4", + "metrics": { + "views": 5800, + "likes": 320 + } + }, + { + "title": "Nothing Phone (2a) Review: Glyph Interface Deep Dive", + "postId": "6", + "videoURL": "https://example.com/videos/nothing-phone-2a.mp4", + "metrics": { + "views": 4500, + "likes": 250 + } + }, + { + "title": "Steam Deck OLED vs LCD: Side by Side Comparison", + "postId": "8", + "videoURL": "https://example.com/videos/steam-deck-comparison.mp4", + "metrics": { + "views": 4200, + "likes": 238 + } + }, + { + "title": "ChatGPT vs Claude: AI Assistant Battle", + "postId": "15", + "videoURL": "https://example.com/videos/ai-battle.mp4", + "metrics": { + "views": 3800, + "likes": 210 + } + }, + { + "title": "M3 MacBook Pro Performance Tests: Mind-Blowing Results", + "postId": "20", + "videoURL": "https://example.com/videos/m3-performance.mp4", + "metrics": { + "views": 3500, + "likes": 195 + } + }, + { + "title": "Pixel 8 Pro Camera Test: Moon Mode Investigation", + "postId": "12", + "videoURL": "https://example.com/videos/pixel-camera-test.mp4", + "metrics": { + "views": 3200, + "likes": 180 + } + }, + { + "title": "Twitter to X: The Rebrand Nobody Asked For", + "postId": "17", + "videoURL": "https://example.com/videos/twitter-x-rebrand.mp4", + "metrics": { + "views": 2800, + "likes": 156 + } + }, + { + "title": "Meta Quest 3 vs Apple Vision Pro: VR Headset Comparison", + "postId": "9", + "videoURL": "https://example.com/videos/vr-comparison.mp4", + "metrics": { + "views": 2600, + "likes": 145 + } + }, + { + "title": "The Smart Toaster That Requires a Subscription", + "postId": "14", + "videoURL": "https://example.com/videos/smart-toaster.mp4", + "metrics": { + "views": 2400, + "likes": 134 + } + }, + { + "title": "Brother Printer Setup: Why It Just Works", + "postId": "1", + "videoURL": "https://example.com/videos/brother-printer.mp4", + "metrics": { + "views": 2200, + "likes": 122 + } + }, + { + "title": "Rabbit R1 Teardown: It's Just Android", + "postId": "22", + "videoURL": "https://example.com/videos/rabbit-r1-teardown.mp4", + "metrics": { + "views": 2000, + "likes": 112 + } + }, + { + "title": "Sony DualSense Edge Controller Review", + "postId": "19", + "videoURL": "https://example.com/videos/dualsense-edge.mp4", + "metrics": { + "views": 1800, + "likes": 100 + } + }, + { + "title": "Matter Smart Home: One Year Later", + "postId": "4", + "videoURL": "https://example.com/videos/matter-update.mp4", + "metrics": { + "views": 1600, + "likes": 89 + } + }, + { + "title": "Dyson Zone: The $1000 Air Purifying Headphones", + "postId": "16", + "videoURL": "https://example.com/videos/dyson-zone.mp4", + "metrics": { + "views": 1400, + "likes": 78 + } + }, + { + "title": "Arc Browser: The Future of Web Browsing?", + "postId": "101", + "videoURL": "https://example.com/videos/arc-browser.mp4", + "metrics": { + "views": 1200, + "likes": 67 + } + }, + { + "title": "Raspberry Pi 5: Unboxing and First Boot", + "postId": "102", + "videoURL": "https://example.com/videos/pi5-unboxing.mp4", + "metrics": { + "views": 1000, + "likes": 56 + } + }, + { + "title": "Netflix Password Sharing: How They Caught Me", + "postId": "21", + "videoURL": "https://example.com/videos/netflix-sharing.mp4", + "metrics": { + "views": 900, + "likes": 50 + } + }, + { + "title": "Windows 11: Turning Off All The Ads", + "postId": "103", + "videoURL": "https://example.com/videos/windows11-ads.mp4", + "metrics": { + "views": 800, + "likes": 45 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/Misc/post-details.json b/Modules/Sources/JetpackStats/Resources/Mocks/Misc/post-details.json new file mode 100644 index 000000000000..f26ade8f98c5 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/Misc/post-details.json @@ -0,0 +1,520 @@ +{ + "date": "2025-01-22", + "views": 45892, + "highest_month": 3248, + "highest_day_average": 147, + "highest_week_average": 892, + "fields": ["views", "visitors", "likes", "comments"], + "years": { + "2025": { + "total": 2847, + "months": { + "1": 2847 + } + }, + "2024": { + "total": 43045, + "months": { + "1": 2156, + "2": 3248, + "3": 2987, + "4": 3156, + "5": 3421, + "6": 3087, + "7": 3654, + "8": 3892, + "9": 3421, + "10": 3987, + "11": 4156, + "12": 3880 + } + }, + "2023": { + "total": 28567, + "months": { + "1": 1856, + "2": 2134, + "3": 2567, + "4": 2234, + "5": 2678, + "6": 2456, + "7": 2890, + "8": 2345, + "9": 2123, + "10": 2567, + "11": 2345, + "12": 2372 + } + }, + "2022": { + "total": 15234, + "months": { + "1": 1234, + "2": 1345, + "3": 1456, + "4": 1234, + "5": 1345, + "6": 1123, + "7": 1234, + "8": 1345, + "9": 1234, + "10": 1123, + "11": 1234, + "12": 1327 + } + } + }, + "averages": { + "2025": { + "overall": 92, + "months": { + "1": 92 + } + }, + "2024": { + "overall": 118, + "months": { + "1": 70, + "2": 112, + "3": 96, + "4": 105, + "5": 110, + "6": 103, + "7": 118, + "8": 125, + "9": 114, + "10": 129, + "11": 139, + "12": 125 + } + }, + "2023": { + "overall": 78, + "months": { + "1": 60, + "2": 76, + "3": 83, + "4": 75, + "5": 86, + "6": 82, + "7": 93, + "8": 76, + "9": 71, + "10": 83, + "11": 78, + "12": 77 + } + }, + "2022": { + "overall": 42, + "months": { + "1": 40, + "2": 48, + "3": 47, + "4": 41, + "5": 43, + "6": 37, + "7": 40, + "8": 43, + "9": 41, + "10": 36, + "11": 41, + "12": 43 + } + } + }, + "weeks": [ + { + "total": 892, + "average": 127, + "change": 15.2, + "days": [ + { "day": "2025-01-15", "count": 98 }, + { "day": "2025-01-16", "count": 134 }, + { "day": "2025-01-17", "count": 156 }, + { "day": "2025-01-18", "count": 89 }, + { "day": "2025-01-19", "count": 102 }, + { "day": "2025-01-20", "count": 178 }, + { "day": "2025-01-21", "count": 135 } + ] + }, + { + "total": 774, + "average": 111, + "change": -8.7, + "days": [ + { "day": "2025-01-08", "count": 89 }, + { "day": "2025-01-09", "count": 125 }, + { "day": "2025-01-10", "count": 134 }, + { "day": "2025-01-11", "count": 78 }, + { "day": "2025-01-12", "count": 95 }, + { "day": "2025-01-13", "count": 145 }, + { "day": "2025-01-14", "count": 108 } + ] + }, + { + "total": 847, + "average": 121, + "change": { "isInfinity": true }, + "days": [ + { "day": "2025-01-01", "count": 45 }, + { "day": "2025-01-02", "count": 112 }, + { "day": "2025-01-03", "count": 156 }, + { "day": "2025-01-04", "count": 134 }, + { "day": "2025-01-05", "count": 98 }, + { "day": "2025-01-06", "count": 167 }, + { "day": "2025-01-07", "count": 135 } + ] + }, + { + "total": 912, + "average": 130, + "change": 5.4, + "days": [ + { "day": "2024-12-25", "count": 67 }, + { "day": "2024-12-26", "count": 89 }, + { "day": "2024-12-27", "count": 145 }, + { "day": "2024-12-28", "count": 156 }, + { "day": "2024-12-29", "count": 134 }, + { "day": "2024-12-30", "count": 189 }, + { "day": "2024-12-31", "count": 132 } + ] + } + ], + "data": [ + ["2024-03-15", 45], + ["2024-03-16", 89], + ["2024-03-17", 124], + ["2024-03-18", 156], + ["2024-03-19", 178], + ["2024-03-20", 145], + ["2024-03-21", 134], + ["2024-03-22", 98], + ["2024-03-23", 87], + ["2024-03-24", 112], + ["2024-03-25", 134], + ["2024-03-26", 156], + ["2024-03-27", 123], + ["2024-03-28", 98], + ["2024-03-29", 76], + ["2024-03-30", 65], + ["2024-03-31", 67], + ["2024-04-01", 123], + ["2024-04-02", 145], + ["2024-04-03", 134], + ["2024-04-04", 112], + ["2024-04-05", 98], + ["2024-04-06", 87], + ["2024-04-07", 76], + ["2024-04-08", 134], + ["2024-04-09", 156], + ["2024-04-10", 145], + ["2024-04-11", 123], + ["2024-04-12", 112], + ["2024-04-13", 98], + ["2024-04-14", 89], + ["2024-04-15", 145], + ["2024-04-16", 167], + ["2024-04-17", 156], + ["2024-04-18", 134], + ["2024-04-19", 123], + ["2024-04-20", 112], + ["2024-04-21", 98], + ["2024-04-22", 134], + ["2024-04-23", 145], + ["2024-04-24", 156], + ["2024-04-25", 123], + ["2024-04-26", 112], + ["2024-04-27", 98], + ["2024-04-28", 89], + ["2024-04-29", 123], + ["2024-04-30", 134], + ["2024-05-01", 156], + ["2024-05-02", 167], + ["2024-05-03", 145], + ["2024-05-04", 123], + ["2024-05-05", 112], + ["2024-05-06", 134], + ["2024-05-07", 145], + ["2024-05-08", 156], + ["2024-05-09", 134], + ["2024-05-10", 123], + ["2024-05-11", 98], + ["2024-05-12", 89], + ["2024-05-13", 145], + ["2024-05-14", 156], + ["2024-05-15", 167], + ["2024-05-16", 145], + ["2024-05-17", 134], + ["2024-05-18", 112], + ["2024-05-19", 98], + ["2024-05-20", 134], + ["2024-05-21", 145], + ["2024-05-22", 156], + ["2024-05-23", 134], + ["2024-05-24", 123], + ["2024-05-25", 98], + ["2024-05-26", 89], + ["2024-05-27", 123], + ["2024-05-28", 134], + ["2024-05-29", 145], + ["2024-05-30", 123], + ["2024-05-31", 112], + ["2024-06-01", 98], + ["2024-06-02", 89], + ["2024-06-03", 134], + ["2024-06-04", 145], + ["2024-06-05", 156], + ["2024-06-06", 134], + ["2024-06-07", 123], + ["2024-06-08", 98], + ["2024-06-09", 87], + ["2024-06-10", 145], + ["2024-06-11", 156], + ["2024-06-12", 134], + ["2024-06-13", 123], + ["2024-06-14", 112], + ["2024-06-15", 98], + ["2024-06-16", 89], + ["2024-06-17", 134], + ["2024-06-18", 145], + ["2024-06-19", 123], + ["2024-06-20", 112], + ["2024-06-21", 98], + ["2024-06-22", 87], + ["2024-06-23", 76], + ["2024-06-24", 123], + ["2024-06-25", 134], + ["2024-06-26", 145], + ["2024-06-27", 123], + ["2024-06-28", 112], + ["2024-06-29", 98], + ["2024-06-30", 89], + ["2024-07-01", 145], + ["2024-07-02", 156], + ["2024-07-03", 167], + ["2024-07-04", 189], + ["2024-07-05", 145], + ["2024-07-06", 123], + ["2024-07-07", 98], + ["2024-07-08", 156], + ["2024-07-09", 167], + ["2024-07-10", 145], + ["2024-07-11", 134], + ["2024-07-12", 123], + ["2024-07-13", 98], + ["2024-07-14", 89], + ["2024-07-15", 156], + ["2024-07-16", 167], + ["2024-07-17", 178], + ["2024-07-18", 156], + ["2024-07-19", 134], + ["2024-07-20", 112], + ["2024-07-21", 98], + ["2024-07-22", 145], + ["2024-07-23", 156], + ["2024-07-24", 134], + ["2024-07-25", 123], + ["2024-07-26", 112], + ["2024-07-27", 98], + ["2024-07-28", 89], + ["2024-07-29", 134], + ["2024-07-30", 145], + ["2024-07-31", 123], + ["2024-08-01", 156], + ["2024-08-02", 167], + ["2024-08-03", 178], + ["2024-08-04", 156], + ["2024-08-05", 145], + ["2024-08-06", 156], + ["2024-08-07", 167], + ["2024-08-08", 178], + ["2024-08-09", 156], + ["2024-08-10", 134], + ["2024-08-11", 112], + ["2024-08-12", 98], + ["2024-08-13", 156], + ["2024-08-14", 167], + ["2024-08-15", 178], + ["2024-08-16", 156], + ["2024-08-17", 134], + ["2024-08-18", 112], + ["2024-08-19", 98], + ["2024-08-20", 145], + ["2024-08-21", 156], + ["2024-08-22", 134], + ["2024-08-23", 123], + ["2024-08-24", 112], + ["2024-08-25", 98], + ["2024-08-26", 89], + ["2024-08-27", 134], + ["2024-08-28", 145], + ["2024-08-29", 123], + ["2024-08-30", 112], + ["2024-08-31", 98], + ["2024-09-01", 89], + ["2024-09-02", 87], + ["2024-09-03", 145], + ["2024-09-04", 156], + ["2024-09-05", 167], + ["2024-09-06", 145], + ["2024-09-07", 123], + ["2024-09-08", 98], + ["2024-09-09", 89], + ["2024-09-10", 156], + ["2024-09-11", 167], + ["2024-09-12", 145], + ["2024-09-13", 134], + ["2024-09-14", 112], + ["2024-09-15", 98], + ["2024-09-16", 89], + ["2024-09-17", 145], + ["2024-09-18", 156], + ["2024-09-19", 134], + ["2024-09-20", 123], + ["2024-09-21", 98], + ["2024-09-22", 87], + ["2024-09-23", 76], + ["2024-09-24", 134], + ["2024-09-25", 145], + ["2024-09-26", 123], + ["2024-09-27", 112], + ["2024-09-28", 98], + ["2024-09-29", 89], + ["2024-09-30", 87], + ["2024-10-01", 167], + ["2024-10-02", 178], + ["2024-10-03", 189], + ["2024-10-04", 167], + ["2024-10-05", 145], + ["2024-10-06", 123], + ["2024-10-07", 98], + ["2024-10-08", 167], + ["2024-10-09", 178], + ["2024-10-10", 156], + ["2024-10-11", 145], + ["2024-10-12", 123], + ["2024-10-13", 112], + ["2024-10-14", 98], + ["2024-10-15", 167], + ["2024-10-16", 178], + ["2024-10-17", 189], + ["2024-10-18", 167], + ["2024-10-19", 134], + ["2024-10-20", 112], + ["2024-10-21", 98], + ["2024-10-22", 156], + ["2024-10-23", 167], + ["2024-10-24", 145], + ["2024-10-25", 134], + ["2024-10-26", 112], + ["2024-10-27", 98], + ["2024-10-28", 89], + ["2024-10-29", 145], + ["2024-10-30", 156], + ["2024-10-31", 134], + ["2024-11-01", 178], + ["2024-11-02", 189], + ["2024-11-03", 198], + ["2024-11-04", 178], + ["2024-11-05", 167], + ["2024-11-06", 178], + ["2024-11-07", 189], + ["2024-11-08", 198], + ["2024-11-09", 167], + ["2024-11-10", 145], + ["2024-11-11", 123], + ["2024-11-12", 112], + ["2024-11-13", 178], + ["2024-11-14", 189], + ["2024-11-15", 198], + ["2024-11-16", 167], + ["2024-11-17", 145], + ["2024-11-18", 123], + ["2024-11-19", 112], + ["2024-11-20", 167], + ["2024-11-21", 178], + ["2024-11-22", 156], + ["2024-11-23", 134], + ["2024-11-24", 112], + ["2024-11-25", 98], + ["2024-11-26", 89], + ["2024-11-27", 145], + ["2024-11-28", 156], + ["2024-11-29", 134], + ["2024-11-30", 123], + ["2024-12-01", 112], + ["2024-12-02", 123], + ["2024-12-03", 167], + ["2024-12-04", 178], + ["2024-12-05", 189], + ["2024-12-06", 167], + ["2024-12-07", 134], + ["2024-12-08", 112], + ["2024-12-09", 98], + ["2024-12-10", 167], + ["2024-12-11", 178], + ["2024-12-12", 156], + ["2024-12-13", 145], + ["2024-12-14", 123], + ["2024-12-15", 98], + ["2024-12-16", 89], + ["2024-12-17", 156], + ["2024-12-18", 167], + ["2024-12-19", 145], + ["2024-12-20", 134], + ["2024-12-21", 112], + ["2024-12-22", 98], + ["2024-12-23", 87], + ["2024-12-24", 76], + ["2024-12-25", 67], + ["2024-12-26", 89], + ["2024-12-27", 145], + ["2024-12-28", 156], + ["2024-12-29", 134], + ["2024-12-30", 189], + ["2024-12-31", 132], + ["2025-01-01", 45], + ["2025-01-02", 112], + ["2025-01-03", 156], + ["2025-01-04", 134], + ["2025-01-05", 98], + ["2025-01-06", 167], + ["2025-01-07", 135], + ["2025-01-08", 89], + ["2025-01-09", 125], + ["2025-01-10", 134], + ["2025-01-11", 78], + ["2025-01-12", 95], + ["2025-01-13", 145], + ["2025-01-14", 108], + ["2025-01-15", 98], + ["2025-01-16", 134], + ["2025-01-17", 156], + ["2025-01-18", 89], + ["2025-01-19", 102], + ["2025-01-20", 178], + ["2025-01-21", 135], + ["2025-01-22", 142] + ], + "post": { + "ID": 12345, + "post_title": "Matter Smart Home Protocol Still Doesn't Matter: A Year Later", + "post_author": "42", + "post_date_gmt": "2024-03-15 14:30:00", + "post_content": "
After spending a month with Apple's $3,499 Vision Pro, I've come to a stark realization: this might be the most impressive device I've ever used, and also the loneliest.
\n\nThe Vision Pro does things that feel like magic. It can transform your living room into a personal IMAX theater, let you arrange infinite virtual monitors around your desk, or transport you to Mount Hood while you're sitting on your couch. The eye tracking is so precise it feels telepathic, and the hand gestures are more natural than any interface I've used.
\n\nBut here's the thing: every moment you spend in the Vision Pro is a moment you're not spending with the people around you. Sure, you can see them through the passthrough cameras, rendered in surprisingly high quality. You can even make eye contact through the bizarre EyeSight display. But you're not really there with them. You're in Apple's meticulously crafted digital bubble, experiencing a world they can't see.
\n\nThis isn't just a Vision Pro problem — it's the fundamental challenge facing all headsets. Meta's Quest 3 has the same issue, though at least it doesn't cost as much as a used car. Even the upcoming Samsung headset will face this reality: strapping a computer to your face is inherently antisocial.
", + "post_excerpt": "The Vision Pro is an incredible piece of technology that fundamentally misunderstands how humans want to use computers.", + "post_status": "publish", + "comment_status": "open", + "post_password": "", + "post_name": "apple-vision-pro-lonely-computer-review", + "post_modified_gmt": "2024-12-20 09:15:00", + "post_content_filtered": "", + "post_parent": 0, + "guid": "https://example.com/?p=12345", + "post_type": "post", + "post_mime_type": "", + "comment_count": "487", + "permalink": "https://example.com/2024/03/apple-vision-pro-lonely-computer-review/" + } +} diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-archive.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-archive.json new file mode 100644 index 000000000000..bf0d1ea84b11 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-archive.json @@ -0,0 +1,74 @@ +[ + { + "sectionName": "other", + "items": [ + { + "href": "http://example.com/wp-admin/admin.php?page=stats", + "value": "/wp-admin/admin.php?page=stats", + "metrics": { + "views": 10 + } + }, + { + "href": "http://example.com/wp-admin/", + "value": "/wp-admin/", + "metrics": { + "views": 4 + } + }, + { + "href": "http://example.com/wp-admin/edit.php", + "value": "/wp-admin/edit.php", + "metrics": { + "views": 4 + } + }, + { + "href": "http://example.com/wp-admin/index.php", + "value": "/wp-admin/index.php", + "metrics": { + "views": 2 + } + }, + { + "href": "http://example.com/wp-admin/revision.php?revision=12345", + "value": "/wp-admin/revision.php?revision=12345", + "metrics": { + "views": 2 + } + } + ], + "metrics": { + "views": 25 + } + }, + { + "sectionName": "author", + "items": [ + { + "href": "http://example.com/author/johndoe/", + "value": "johndoe", + "metrics": { + "views": 31 + } + }, + { + "href": "http://example.com/author/janedoe/", + "value": "janedoe", + "metrics": { + "views": 5 + } + }, + { + "href": "http://example.com/author/testuser/", + "value": "testuser", + "metrics": { + "views": 2 + } + } + ], + "metrics": { + "views": 40 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-authors.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-authors.json new file mode 100644 index 000000000000..7558af154644 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-authors.json @@ -0,0 +1,137 @@ +[ + { + "name": "Alex Johnson", + "userId": "1", + "role": "Editor-in-Chief", + "metrics": { + "views": 240, + "comments": 85, + "likes": 180 + }, + "posts": [ + { + "title": "Breaking: Major Tech Announcement", + "postID": "1001", + "postURL": "https://example.com/breaking-tech", + "date": "2024-11-25T00:00:00Z", + "type": "post", + "author": "Alex Johnson", + "metrics": { + "views": 120 + } + }, + { + "title": "Live Blog: Conference Updates", + "postID": "1002", + "postURL": "https://example.com/live-conference", + "date": "2024-11-25T00:00:00Z", + "type": "post", + "author": "Alex Johnson", + "metrics": { + "views": 95 + } + } + ] + }, + { + "name": "Sam Williams", + "userId": "2", + "role": "Editor-at-Large", + "metrics": { + "views": 190, + "comments": 72, + "likes": 145 + }, + "posts": [ + { + "title": "Today's Market Analysis", + "postID": "2001", + "postURL": "https://example.com/market-analysis", + "date": "2024-11-25T00:00:00Z", + "type": "post", + "author": "Sam Williams", + "metrics": { + "views": 85 + } + } + ] + }, + { + "name": "Jordan Chen", + "userId": "3", + "role": "Executive Editor", + "metrics": { + "views": 155, + "comments": 58, + "likes": 120 + }, + "posts": [ + { + "title": "Contact Us", + "postID": "3001", + "postURL": "https://example.com/contact", + "date": null, + "type": "page", + "author": "Jordan Chen", + "metrics": { + "views": 70 + } + } + ] + }, + { + "name": "Taylor Davis", + "userId": "4", + "role": "Senior Writer", + "metrics": { + "views": 130, + "comments": 45, + "likes": 95 + }, + "posts": [] + }, + { + "name": "Morgan Smith", + "userId": "5", + "role": "Senior Editor", + "metrics": { + "views": 105, + "comments": 38, + "likes": 82 + }, + "posts": [] + }, + { + "name": "Casey Brown", + "userId": "6", + "role": "Managing Editor", + "metrics": { + "views": 85, + "comments": 30, + "likes": 65 + }, + "posts": [] + }, + { + "name": "Riley Martinez", + "userId": "7", + "role": "Senior Reporter", + "metrics": { + "views": 70, + "comments": 25, + "likes": 55 + }, + "posts": [] + }, + { + "name": "Jamie Lee", + "userId": "8", + "role": "News Writer", + "metrics": { + "views": 60, + "comments": 20, + "likes": 45 + }, + "posts": [] + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-external-links.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-external-links.json new file mode 100644 index 000000000000..d21fc3eae007 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-external-links.json @@ -0,0 +1,85 @@ +[ + { + "url": "https://developer.apple.com", + "title": "Apple Developer", + "children": [ + { + "url": "https://developer.apple.com/documentation/swiftui", + "title": "SwiftUI Documentation", + "children": [], + "metrics": { + "views": 50, + "visitors": 35 + } + }, + { + "url": "https://developer.apple.com/documentation/uikit", + "title": "UIKit Documentation", + "children": [], + "metrics": { + "views": 30, + "visitors": 20 + } + } + ], + "metrics": { + "views": 180, + "visitors": 120 + } + }, + { + "url": "https://swift.org", + "title": "Swift.org", + "children": [], + "metrics": { + "views": 150, + "visitors": 100 + } + }, + { + "url": "https://github.com", + "title": "GitHub", + "children": [ + { + "url": "https://github.com/wordpress-mobile/WordPress-iOS", + "title": "WordPress-iOS Repository", + "children": [], + "metrics": { + "views": 40, + "visitors": 25 + } + } + ], + "metrics": { + "views": 120, + "visitors": 80 + } + }, + { + "url": "https://stackoverflow.com", + "title": "Stack Overflow", + "children": [], + "metrics": { + "views": 100, + "visitors": 70 + } + }, + { + "url": "https://raywenderlich.com", + "title": "Ray Wenderlich", + "children": [], + "metrics": { + "views": 80, + "visitors": 50 + } + }, + { + "url": "https://nshipster.com", + "title": "NSHipster", + "children": [], + "metrics": { + "views": 60, + "visitors": 40 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-file-downloads.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-file-downloads.json new file mode 100644 index 000000000000..0751839627d6 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-file-downloads.json @@ -0,0 +1,44 @@ +[ + { + "fileName": "annual-report-2024.pdf", + "filePath": "/downloads/reports/annual-report-2024.pdf", + "metrics": { + "downloads": 25 + } + }, + { + "fileName": "swift-cheatsheet.pdf", + "filePath": "/downloads/docs/swift-cheatsheet.pdf", + "metrics": { + "downloads": 21 + } + }, + { + "fileName": "app-screenshots.zip", + "filePath": "/downloads/media/app-screenshots.zip", + "metrics": { + "downloads": 18 + } + }, + { + "fileName": "tutorial-video.mp4", + "filePath": "/downloads/videos/tutorial-video.mp4", + "metrics": { + "downloads": 15 + } + }, + { + "fileName": "code-samples.zip", + "filePath": "/downloads/code/code-samples.zip", + "metrics": { + "downloads": 12 + } + }, + { + "fileName": "whitepaper.pdf", + "filePath": "/downloads/docs/whitepaper.pdf", + "metrics": { + "downloads": 9 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-locations.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-locations.json new file mode 100644 index 000000000000..fa3f08a6b647 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-locations.json @@ -0,0 +1,66 @@ +[ + { + "country": "United States", + "countryCode": "US", + "flag": "🇺🇸", + "metrics": { + "views": 350 + } + }, + { + "country": "United Kingdom", + "countryCode": "GB", + "flag": "🇬🇧", + "metrics": { + "views": 150 + } + }, + { + "country": "Canada", + "countryCode": "CA", + "flag": "🇨🇦", + "metrics": { + "views": 120 + } + }, + { + "country": "Germany", + "countryCode": "DE", + "flag": "🇩🇪", + "metrics": { + "views": 95 + } + }, + { + "country": "Australia", + "countryCode": "AU", + "flag": "🇦🇺", + "metrics": { + "views": 80 + } + }, + { + "country": "France", + "countryCode": "FR", + "flag": "🇫🇷", + "metrics": { + "views": 65 + } + }, + { + "country": "Japan", + "countryCode": "JP", + "flag": "🇯🇵", + "metrics": { + "views": 55 + } + }, + { + "country": "Netherlands", + "countryCode": "NL", + "flag": "🇳🇱", + "metrics": { + "views": 45 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-postsAndPages.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-postsAndPages.json new file mode 100644 index 000000000000..010ab6ec8d7a --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-postsAndPages.json @@ -0,0 +1,200 @@ +[ + { + "postId": "rt1", + "title": "Breaking: Apple Vision Pro Review", + "author": "Nilay Patel", + "metrics": { + "views": 380, + "comments": 45, + "likes": 120 + } + }, + { + "postId": "rt2", + "title": "Live: Tesla Cybertruck First Drive", + "author": "David Pierce", + "metrics": { + "views": 320, + "comments": 38, + "likes": 95 + } + }, + { + "postId": "rt3", + "title": "Google Pixel 8 Pro vs iPhone 15 Pro", + "author": "Dieter Bohn", + "metrics": { + "views": 280, + "comments": 32, + "likes": 85 + } + }, + { + "postId": "rt4", + "title": "The Best Laptops of 2024", + "author": "Monica Chin", + "metrics": { + "views": 240, + "comments": 28, + "likes": 72 + } + }, + { + "postId": "rt5", + "title": "Microsoft Surface Laptop Studio 2 Review", + "author": "Tom Warren", + "metrics": { + "views": 210, + "comments": 25, + "likes": 65 + } + }, + { + "postId": "rt6", + "title": "Samsung Galaxy S24 Ultra: Hands-On", + "author": "Alex Cranz", + "metrics": { + "views": 180, + "comments": 22, + "likes": 58 + } + }, + { + "postId": "rt7", + "title": "Steam Deck OLED Review", + "author": "Adi Robertson", + "metrics": { + "views": 150, + "comments": 18, + "likes": 48 + } + }, + { + "postId": "rt8", + "title": "Meta Quest 3 vs PSVR 2", + "author": "Adi Robertson", + "metrics": { + "views": 130, + "comments": 15, + "likes": 42 + } + }, + { + "pageId": "rtp1", + "title": "About The Verge", + "author": "Editorial Team", + "metrics": { + "views": 120, + "comments": 0, + "likes": 15, + "visitors": 96, + "bounceRate": 60, + "timeOnSite": 90 + } + }, + { + "postId": "rt9", + "title": "Nothing Phone (2) Review", + "author": "Jay Peters", + "metrics": { + "views": 110, + "comments": 12, + "likes": 35 + } + }, + { + "postId": "rt10", + "title": "Framework Laptop 16: The Ultimate Modular PC", + "author": "Monica Chin", + "metrics": { + "views": 95, + "comments": 10, + "likes": 28 + } + }, + { + "pageId": "rtp2", + "title": "Contact Us", + "author": "Support Team", + "metrics": { + "views": 95, + "comments": 0, + "likes": 8, + "visitors": 76, + "bounceRate": 65, + "timeOnSite": 75 + } + }, + { + "postId": "rt11", + "title": "iPhone 15 Pro Max: Six Months Later", + "author": "David Pierce", + "metrics": { + "views": 85, + "comments": 8, + "likes": 22 + } + }, + { + "pageId": "rtp3", + "title": "Newsletter Signup", + "author": "Marketing Team", + "metrics": { + "views": 80, + "comments": 2, + "likes": 12, + "visitors": 64, + "bounceRate": 55, + "timeOnSite": 120 + } + }, + { + "postId": "rt12", + "title": "The Best Smart Home Devices of 2024", + "author": "Emma Roth", + "metrics": { + "views": 75, + "comments": 6, + "likes": 18 + } + }, + { + "pageId": "rtp4", + "title": "Privacy Policy", + "author": "Legal Team", + "metrics": { + "views": 65, + "comments": 1, + "likes": 5, + "visitors": 52, + "bounceRate": 70, + "timeOnSite": 60 + } + }, + { + "pageId": "rtp5", + "title": "Terms of Service", + "author": "Legal Team", + "metrics": { + "views": 55, + "comments": 0, + "likes": 3, + "visitors": 44, + "bounceRate": 72, + "timeOnSite": 55 + } + }, + { + "pageId": "rtp6", + "title": "Advertise with Us", + "author": "Sales Team", + "metrics": { + "views": 45, + "comments": 0, + "likes": 2, + "visitors": 36, + "bounceRate": 58, + "timeOnSite": 110 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-referrers.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-referrers.json new file mode 100644 index 000000000000..0f0d0218df1b --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-referrers.json @@ -0,0 +1,134 @@ +[ + { + "name": "Google Search", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "isSpam": false, + "children": [ + { + "name": "wordpress development tutorial", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 85 + } + }, + { + "name": "swift programming blog", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 75 + } + }, + { + "name": "ios app development", + "domain": "google.com", + "iconURL": "https://www.google.com/favicon.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 60 + } + } + ], + "metrics": { + "views": 220 + } + }, + { + "name": "Twitter/X", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "isSpam": false, + "children": [ + { + "name": "@wordpress shared your post", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 100 + } + }, + { + "name": "@techblogger mentioned you", + "domain": "twitter.com", + "iconURL": "https://abs.twimg.com/favicons/twitter.3.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 60 + } + } + ], + "metrics": { + "views": 160 + } + }, + { + "name": "Reddit", + "domain": "reddit.com", + "iconURL": "https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png", + "isSpam": false, + "children": [], + "metrics": { + "views": 130 + } + }, + { + "name": "Hacker News", + "domain": "news.ycombinator.com", + "iconURL": "https://news.ycombinator.com/favicon.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 100 + } + }, + { + "name": "Direct Traffic", + "domain": "direct", + "iconURL": null, + "isSpam": false, + "children": [], + "metrics": { + "views": 85 + } + }, + { + "name": "LinkedIn", + "domain": "linkedin.com", + "iconURL": "https://static.licdn.com/sc/h/al2o9zrvru7aqj8e1x2rzsrca", + "isSpam": false, + "children": [], + "metrics": { + "views": 70 + } + }, + { + "name": "Facebook", + "domain": "facebook.com", + "iconURL": "https://static.xx.fbcdn.net/rsrc.php/yD/r/d4ZIVX-5C-b.ico", + "isSpam": false, + "children": [], + "metrics": { + "views": 60 + } + }, + { + "name": "YouTube", + "domain": "youtube.com", + "iconURL": "https://www.youtube.com/s/desktop/8a0c81e8/img/favicon_32x32.png", + "isSpam": false, + "children": [], + "metrics": { + "views": 50 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-search-terms.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-search-terms.json new file mode 100644 index 000000000000..1606cc301315 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-search-terms.json @@ -0,0 +1,44 @@ +[ + { + "term": "swiftui tutorial", + "metrics": { + "views": 32, + "visitors": 25 + } + }, + { + "term": "ios development guide", + "metrics": { + "views": 28, + "visitors": 22 + } + }, + { + "term": "swift async await", + "metrics": { + "views": 24, + "visitors": 19 + } + }, + { + "term": "xcode tips", + "metrics": { + "views": 20, + "visitors": 16 + } + }, + { + "term": "swift performance", + "metrics": { + "views": 16, + "visitors": 13 + } + }, + { + "term": "ios app architecture", + "metrics": { + "views": 12, + "visitors": 10 + } + } +] \ No newline at end of file diff --git a/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-videos.json b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-videos.json new file mode 100644 index 000000000000..ecc993a84a54 --- /dev/null +++ b/Modules/Sources/JetpackStats/Resources/Mocks/RealtimeData/realtime-videos.json @@ -0,0 +1,56 @@ +[ + { + "title": "Getting Started with SwiftUI", + "postId": "101", + "videoURL": "https://example.com/videos/swiftui-intro.mp4", + "metrics": { + "views": 45, + "likes": 5 + } + }, + { + "title": "iOS Development Best Practices", + "postId": "102", + "videoURL": "https://example.com/videos/best-practices.mp4", + "metrics": { + "views": 38, + "likes": 4 + } + }, + { + "title": "Advanced Swift Techniques", + "postId": "103", + "videoURL": "https://example.com/videos/advanced-swift.mp4", + "metrics": { + "views": 32, + "likes": 3 + } + }, + { + "title": "Building Custom Views", + "postId": "104", + "videoURL": "https://example.com/videos/custom-views.mp4", + "metrics": { + "views": 26, + "likes": 2 + } + }, + { + "title": "App Performance Optimization", + "postId": "105", + "videoURL": "https://example.com/videos/performance.mp4", + "metrics": { + "views": 20, + "likes": 2 + } + }, + { + "title": "Debugging Like a Pro", + "postId": "106", + "videoURL": "https://example.com/videos/debugging.mp4", + "metrics": { + "views": 15, + "likes": 1 + } + } +]