From 7f2faeaede002c4ac7fe4b9084210ca3566ceffc Mon Sep 17 00:00:00 2001 From: null Date: Fri, 3 Jul 2026 13:05:16 -0500 Subject: [PATCH] refactor(db): extract subscription-catalog seed data out of database.js (IMP-CODE-02) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit db/database.js was 4,174 lines. The largest self-contained block was ~315 lines of static subscription_catalog seed rows (SUBSCRIPTION_CATALOG_ROWS + SUBSCRIPTION_CATALOG_V2_ROWS) — pure data, no logic. Moved it to db/subscriptionCatalogSeed.js and imported it; database.js is now 3,859 lines and the seed data lives in a cohesive, obvious module. Behavior-preserving: a fresh DB still seeds 291 catalog rows; full server suite (122) passes — migrations and the catalog seed run on every fresh test DB. The migrations array (~2,700 lines) is the other big block but is the DB core; splitting it safely needs a dedicated pass (tracked in the backlog), not a blind move — a mistake there corrupts every DB on boot. Co-Authored-By: Claude Opus 4.8 --- db/database.js | 319 +-------------------------------- db/subscriptionCatalogSeed.js | 324 ++++++++++++++++++++++++++++++++++ 2 files changed, 326 insertions(+), 317 deletions(-) create mode 100644 db/subscriptionCatalogSeed.js diff --git a/db/database.js b/db/database.js index 3a8c664..00af8ae 100644 --- a/db/database.js +++ b/db/database.js @@ -73,323 +73,8 @@ function isValidSqlDefinition(def) { return /^[\w\s\(\)\',!@#$%^&*+=\[\]<>\-.]+$/i.test(def); } -// ── Subscription catalog seed ───────────────────────────────────────────────── -// [rank, name, category, subscription_type, website, domain] -const SUBSCRIPTION_CATALOG_ROWS = [ - [1,'Netflix','Video Streaming','streaming','https://www.netflix.com/','netflix.com'], - [2,'Amazon Prime Video','Video Streaming','streaming','https://www.primevideo.com/','primevideo.com'], - [3,'Hulu','Video Streaming','streaming','https://www.hulu.com/','hulu.com'], - [4,'Disney+','Video Streaming','streaming','https://www.disneyplus.com/','disneyplus.com'], - [5,'Max','Video Streaming','streaming','https://www.max.com/','max.com'], - [6,'Peacock','Video Streaming','streaming','https://www.peacocktv.com/','peacocktv.com'], - [7,'Paramount+','Video Streaming','streaming','https://www.paramountplus.com/','paramountplus.com'], - [8,'Apple TV+','Video Streaming','streaming','https://tv.apple.com/','tv.apple.com'], - [9,'YouTube Premium','Video Streaming','streaming','https://www.youtube.com/premium','youtube.com'], - [10,'ESPN+','Sports Streaming','streaming','https://plus.espn.com/','plus.espn.com'], - [11,'YouTube TV','Live TV Streaming','streaming','https://tv.youtube.com/','tv.youtube.com'], - [12,'Sling TV','Live TV Streaming','streaming','https://www.sling.com/','sling.com'], - [13,'Fubo','Live TV Streaming','streaming','https://www.fubo.tv/','fubo.tv'], - [14,'DirecTV Stream','Live TV Streaming','streaming','https://streamtv.directv.com/','streamtv.directv.com'], - [15,'Philo','Live TV Streaming','streaming','https://www.philo.com/','philo.com'], - [16,'Starz','Video Streaming','streaming','https://www.starz.com/','starz.com'], - [17,'MGM+','Video Streaming','streaming','https://www.mgmplus.com/','mgmplus.com'], - [18,'AMC+','Video Streaming','streaming','https://www.amcplus.com/','amcplus.com'], - [19,'BET+','Video Streaming','streaming','https://www.bet.plus/','bet.plus'], - [20,'Crunchyroll','Video Streaming','streaming','https://www.crunchyroll.com/','crunchyroll.com'], - [21,'HIDIVE','Video Streaming','streaming','https://www.hidive.com/','hidive.com'], - [22,'Shudder','Video Streaming','streaming','https://www.shudder.com/','shudder.com'], - [23,'Acorn TV','Video Streaming','streaming','https://acorn.tv/','acorn.tv'], - [24,'BritBox','Video Streaming','streaming','https://www.britbox.com/','britbox.com'], - [25,'The Criterion Channel','Video Streaming','streaming','https://www.criterionchannel.com/','criterionchannel.com'], - [26,'MUBI','Video Streaming','streaming','https://mubi.com/','mubi.com'], - [27,'Discovery+','Video Streaming','streaming','https://www.discoveryplus.com/','discoveryplus.com'], - [28,'Hallmark+','Video Streaming','streaming','https://www.hallmarkplus.com/','hallmarkplus.com'], - [29,'PBS Passport','Video Streaming','streaming','https://www.pbs.org/passport/','pbs.org'], - [30,'MagellanTV','Video Streaming','streaming','https://www.magellantv.com/','magellantv.com'], - [31,'Curiosity Stream','Video Streaming','streaming','https://curiositystream.com/','curiositystream.com'], - [32,'Nebula','Video Streaming','streaming','https://nebula.tv/','nebula.tv'], - [33,'WOW Presents Plus','Video Streaming','streaming','https://www.wowpresentsplus.com/','wowpresentsplus.com'], - [34,'ViX Premium','Video Streaming','streaming','https://vix.com/','vix.com'], - [35,'FloSports','Sports Streaming','streaming','https://www.flosports.tv/','flosports.tv'], - [36,'DAZN','Sports Streaming','streaming','https://www.dazn.com/','dazn.com'], - [37,'MLB.TV','Sports Streaming','streaming','https://www.mlb.com/live-stream-games/subscribe','mlb.com'], - [38,'NBA League Pass','Sports Streaming','streaming','https://www.nba.com/watch/league-pass-stream','nba.com'], - [39,'NHL Power Play on ESPN+','Sports Streaming','streaming','https://www.espn.com/espnplus/catalog/nhl','espn.com'], - [40,'NFL+','Sports Streaming','streaming','https://www.nfl.com/plus/','nfl.com'], - [41,'Spotify Premium','Music & Audio','music','https://www.spotify.com/premium/','spotify.com'], - [42,'Apple Music','Music & Audio','music','https://www.apple.com/apple-music/','apple.com'], - [43,'Amazon Music Unlimited','Music & Audio','music','https://music.amazon.com/','music.amazon.com'], - [44,'Pandora Premium','Music & Audio','music','https://www.pandora.com/upgrade','pandora.com'], - [45,'SiriusXM','Music & Audio','music','https://www.siriusxm.com/','siriusxm.com'], - [46,'TIDAL','Music & Audio','music','https://tidal.com/','tidal.com'], - [47,'Qobuz','Music & Audio','music','https://www.qobuz.com/us-en/music/streaming/offers','qobuz.com'], - [48,'SoundCloud Go+','Music & Audio','music','https://soundcloud.com/go','soundcloud.com'], - [49,'Deezer','Music & Audio','music','https://www.deezer.com/us/offers','deezer.com'], - [50,'iHeartRadio Plus','Music & Audio','music','https://www.iheart.com/plus/','iheart.com'], - [51,'Audible','Audiobooks','education','https://www.audible.com/','audible.com'], - [52,'Spotify Audiobooks','Audiobooks','education','https://www.spotify.com/us/audiobooks/','spotify.com'], - [53,'Everand','Audiobooks & Ebooks','education','https://www.everand.com/','everand.com'], - [54,'Scribd','Documents & Ebooks','education','https://www.scribd.com/','scribd.com'], - [55,'Kindle Unlimited','Ebooks','education','https://www.amazon.com/kindle-dbs/hz/subscribe/ku','amazon.com'], - [56,'Kobo Plus','Ebooks & Audiobooks','education','https://www.kobo.com/us/en/plus','kobo.com'], - [57,'Libro.fm','Audiobooks','education','https://libro.fm/','libro.fm'], - [58,'Blinkist','Books & Learning','education','https://www.blinkist.com/','blinkist.com'], - [59,'Pocket Casts Plus','Podcasts','music','https://pocketcasts.com/plus/','pocketcasts.com'], - [60,'Wondery+','Podcasts','music','https://wondery.com/plus/','wondery.com'], - [61,'The New York Times','News & Magazines','news','https://www.nytimes.com/subscription','nytimes.com'], - [62,'The Wall Street Journal','News & Magazines','news','https://www.wsj.com/news/subscribe','wsj.com'], - [63,'The Washington Post','News & Magazines','news','https://subscribe.washingtonpost.com/','subscribe.washingtonpost.com'], - [64,'The Atlantic','News & Magazines','news','https://www.theatlantic.com/subscribe/','theatlantic.com'], - [65,'The New Yorker','News & Magazines','news','https://www.newyorker.com/subscribe','newyorker.com'], - [66,'Bloomberg.com','News & Magazines','news','https://www.bloomberg.com/subscriptions','bloomberg.com'], - [67,'Financial Times','News & Magazines','news','https://www.ft.com/products','ft.com'], - [68,'The Economist','News & Magazines','news','https://www.economist.com/subscribe','economist.com'], - [69,'TIME','News & Magazines','news','https://time.com/subscribe/','time.com'], - [70,'WIRED','News & Magazines','news','https://www.wired.com/subscribe/','wired.com'], - [71,'Consumer Reports','News & Magazines','news','https://www.consumerreports.org/join/','consumerreports.org'], - [72,'Politico Pro','News & Magazines','news','https://www.politicopro.com/','politicopro.com'], - [73,'The Athletic','Sports Media','streaming','https://theathletic.com/','theathletic.com'], - [74,'Substack','Creator Media','news','https://substack.com/','substack.com'], - [75,'Medium','Creator Media','news','https://medium.com/membership','medium.com'], - [76,'Patreon','Creator Media','news','https://www.patreon.com/','patreon.com'], - [77,'Apple News+','News & Magazines','news','https://www.apple.com/apple-news/','apple.com'], - [78,'Readly','News & Magazines','news','https://us.readly.com/','us.readly.com'], - [79,'PressReader','News & Magazines','news','https://www.pressreader.com/','pressreader.com'], - [80,'The Information','News & Magazines','news','https://www.theinformation.com/subscribe','theinformation.com'], - [81,'Microsoft 365','Software & Productivity','software','https://www.microsoft.com/microsoft-365','microsoft.com'], - [82,'Google One','Cloud & Storage','cloud','https://one.google.com/','one.google.com'], - [83,'iCloud+','Cloud & Storage','cloud','https://www.apple.com/icloud/','apple.com'], - [84,'Dropbox','Cloud & Storage','cloud','https://www.dropbox.com/plans','dropbox.com'], - [85,'Box','Cloud & Storage','cloud','https://www.box.com/pricing','box.com'], - [86,'Adobe Creative Cloud','Software & Design','software','https://www.adobe.com/creativecloud.html','adobe.com'], - [87,'Canva Pro','Software & Design','software','https://www.canva.com/pro/','canva.com'], - [88,'Figma','Software & Design','software','https://www.figma.com/pricing/','figma.com'], - [89,'Notion','Software & Productivity','software','https://www.notion.so/pricing','notion.so'], - [90,'Evernote','Software & Productivity','software','https://evernote.com/compare-plans','evernote.com'], - [91,'Todoist','Software & Productivity','software','https://todoist.com/pricing','todoist.com'], - [92,'Grammarly','Writing & AI','software','https://www.grammarly.com/plans','grammarly.com'], - [93,'ChatGPT','AI','software','https://chatgpt.com/pricing','chatgpt.com'], - [94,'Claude.ai','AI','software','https://claude.ai/upgrade','anthropic.com'], - [95,'Perplexity','AI','software','https://www.perplexity.ai/pro','perplexity.ai'], - [96,'Gemini Advanced','AI','software','https://one.google.com/about/google-ai-plans/','one.google.com'], - [97,'GitHub Copilot','Developer Tools','software','https://github.com/features/copilot/plans','github.com'], - [98,'Cursor','Developer Tools','software','https://www.cursor.com/pricing','cursor.com'], - [99,'Replit','Developer Tools','software','https://replit.com/pricing','replit.com'], - [100,'Setapp','Software & Productivity','software','https://setapp.com/','setapp.com'], - [101,'1Password','Security','security','https://1password.com/pricing','1password.com'], - [102,'Dashlane','Security','security','https://www.dashlane.com/pricing','dashlane.com'], - [103,'NordVPN','Security','security','https://nordvpn.com/pricing/','nordvpn.com'], - [104,'ExpressVPN','Security','security','https://www.expressvpn.com/','expressvpn.com'], - [105,'Surfshark','Security','security','https://surfshark.com/pricing','surfshark.com'], - [106,'Norton 360','Security','security','https://us.norton.com/products','us.norton.com'], - [107,'McAfee+','Security','security','https://www.mcafee.com/en-us/consumer-support/pricing.html','mcafee.com'], - [108,'QuickBooks Online','Finance Software','software','https://quickbooks.intuit.com/pricing/','quickbooks.intuit.com'], - [109,'TurboTax Live','Finance Software','software','https://turbotax.intuit.com/personal-taxes/online/live/','turbotax.intuit.com'], - [110,'YNAB','Finance Software','software','https://www.ynab.com/pricing','ynab.com'], - [111,'Rocket Money Premium','Finance Software','software','https://www.rocketmoney.com/premium','rocketmoney.com'], - [112,'Copilot Money','Finance Software','software','https://copilot.money/','copilot.money'], - [113,'Calendly','Software & Productivity','software','https://calendly.com/pricing','calendly.com'], - [114,'Zoom Workplace','Software & Productivity','software','https://www.zoom.com/en/pricing/','zoom.com'], - [115,'Slack','Software & Productivity','software','https://slack.com/pricing','slack.com'], - [116,'Xbox Game Pass','Gaming','gaming','https://www.xbox.com/en-US/xbox-game-pass','xbox.com'], - [117,'PlayStation Plus','Gaming','gaming','https://www.playstation.com/en-us/ps-plus/','playstation.com'], - [118,'Nintendo Switch Online','Gaming','gaming','https://www.nintendo.com/us/switch/online/','nintendo.com'], - [119,'Apple Arcade','Gaming','gaming','https://www.apple.com/apple-arcade/','apple.com'], - [120,'EA Play','Gaming','gaming','https://www.ea.com/ea-play','ea.com'], - [121,'Ubisoft+','Gaming','gaming','https://www.ubisoft.com/en-us/ubisoft-plus','ubisoft.com'], - [122,'NVIDIA GeForce NOW','Gaming','gaming','https://www.nvidia.com/en-us/geforce-now/memberships/','nvidia.com'], - [123,'Roblox Premium','Gaming','gaming','https://www.roblox.com/premium/membership','roblox.com'], - [124,'Fortnite Crew','Gaming','gaming','https://www.fortnite.com/fortnite-crew-subscription','fortnite.com'], - [125,'Minecraft Realms','Gaming','gaming','https://www.minecraft.net/realms','minecraft.net'], - [126,'Twitch Turbo','Creator & Social','news','https://www.twitch.tv/turbo','twitch.tv'], - [127,'Discord Nitro','Creator & Social','news','https://discord.com/nitro','discord.com'], - [128,'X Premium','Creator & Social','news','https://help.x.com/en/using-x/x-premium','help.x.com'], - [129,'Snapchat+','Creator & Social','news','https://www.snapchat.com/plus','snapchat.com'], - [130,'TikTok Live Subscription','Creator & Social','news','https://www.tiktok.com/live/creators/en-US/subscription/','tiktok.com'], - [131,'Meta Verified','Creator & Social','news','https://about.meta.com/technologies/meta-verified/','about.meta.com'], - [132,'LinkedIn Premium','Career & Social','news','https://premium.linkedin.com/','premium.linkedin.com'], - [133,'Tinder Gold','Dating','other','https://tinder.com/feature/plus','tinder.com'], - [134,'Bumble Premium','Dating','other','https://bumble.com/en/the-buzz/bumble-premium','bumble.com'], - [135,'Hinge+','Dating','other','https://hinge.co/hinge-plus','hinge.co'], - [136,'Amazon Prime','Shopping & Delivery','shopping','https://www.amazon.com/amazonprime','amazon.com'], - [137,'Walmart+','Shopping & Delivery','shopping','https://www.walmart.com/plus','walmart.com'], - [138,'Target Circle 360','Shopping & Delivery','shopping','https://www.target.com/circle/target-circle-360','target.com'], - [139,'Costco','Warehouse Clubs','shopping','https://www.costco.com/join-costco.html','costco.com'], - [140,'Sam\'s Club','Warehouse Clubs','shopping','https://www.samsclub.com/join','samsclub.com'], - [141,'BJ\'s Wholesale Club','Warehouse Clubs','shopping','https://www.bjs.com/membership','bjs.com'], - [142,'Instacart+','Grocery & Delivery','food','https://www.instacart.com/instacart-plus','instacart.com'], - [143,'DoorDash DashPass','Food Delivery','food','https://www.doordash.com/dashpass/','doordash.com'], - [144,'Uber One','Food & Rides','food','https://www.uber.com/us/en/u/uber-one/','uber.com'], - [145,'Grubhub+','Food Delivery','food','https://www.grubhub.com/plus','grubhub.com'], - [146,'Shipt','Grocery & Delivery','food','https://www.shipt.com/membership/','shipt.com'], - [147,'Kroger Boost','Grocery & Delivery','food','https://www.kroger.com/pr/boost','kroger.com'], - [148,'Thrive Market','Grocery & Delivery','food','https://thrivemarket.com/','thrivemarket.com'], - [149,'Misfits Market','Grocery & Delivery','food','https://www.misfitsmarket.com/','misfitsmarket.com'], - [150,'Imperfect Foods','Grocery & Delivery','food','https://www.imperfectfoods.com/','imperfectfoods.com'], - [151,'Chewy Autoship','Pet Retail','shopping','https://www.chewy.com/app/content/autoship','chewy.com'], - [152,'Petco Vital Care Premier','Pet Retail','shopping','https://www.petco.com/shop/en/petcostore/c/vitalcare','petco.com'], - [153,'PetSmart Treats Rewards VIPP','Pet Retail','shopping','https://www.petsmart.com/treats-rewards-vipp.html','petsmart.com'], - [154,'GameStop Pro','Retail Memberships','shopping','https://www.gamestop.com/pro/','gamestop.com'], - [155,'Barnes & Noble Membership','Retail Memberships','shopping','https://www.barnesandnoble.com/membership','barnesandnoble.com'], - [156,'HelloFresh','Food & Meal Kits','food','https://www.hellofresh.com/','hellofresh.com'], - [157,'Blue Apron','Food & Meal Kits','food','https://www.blueapron.com/','blueapron.com'], - [158,'Home Chef','Food & Meal Kits','food','https://www.homechef.com/','homechef.com'], - [159,'Marley Spoon','Food & Meal Kits','food','https://marleyspoon.com/','marleyspoon.com'], - [160,'Dinnerly','Food & Meal Kits','food','https://dinnerly.com/','dinnerly.com'], - [161,'EveryPlate','Food & Meal Kits','food','https://www.everyplate.com/','everyplate.com'], - [162,'Green Chef','Food & Meal Kits','food','https://www.greenchef.com/','greenchef.com'], - [163,'Purple Carrot','Food & Meal Kits','food','https://www.purplecarrot.com/','purplecarrot.com'], - [164,'Sunbasket','Food & Meal Kits','food','https://sunbasket.com/','sunbasket.com'], - [165,'Factor','Prepared Meals','food','https://www.factor75.com/','factor75.com'], - [166,'CookUnity','Prepared Meals','food','https://www.cookunity.com/','cookunity.com'], - [167,'Fresh N Lean','Prepared Meals','food','https://www.freshnlean.com/','freshnlean.com'], - [168,'Hungryroot','Food & Meal Kits','food','https://www.hungryroot.com/','hungryroot.com'], - [169,'Daily Harvest','Prepared Meals','food','https://www.daily-harvest.com/','daily-harvest.com'], - [170,'Tovala','Prepared Meals','food','https://www.tovala.com/','tovala.com'], - [171,'MistoBox','Coffee & Tea','food','https://mistobox.com/','mistobox.com'], - [172,'Trade Coffee','Coffee & Tea','food','https://www.drinktrade.com/','drinktrade.com'], - [173,'Atlas Coffee Club','Coffee & Tea','food','https://atlascoffeeclub.com/','atlascoffeeclub.com'], - [174,'Bean Box','Coffee & Tea','food','https://beanbox.com/','beanbox.com'], - [175,'Universal Yums','Snacks','food','https://www.universalyums.com/','universalyums.com'], - [176,'Peloton App','Fitness & Wellness','fitness','https://www.onepeloton.com/app','onepeloton.com'], - [177,'ClassPass','Fitness & Wellness','fitness','https://classpass.com/','classpass.com'], - [178,'Apple Fitness+','Fitness & Wellness','fitness','https://www.apple.com/apple-fitness-plus/','apple.com'], - [179,'Strava','Fitness & Wellness','fitness','https://www.strava.com/subscribe','strava.com'], - [180,'Fitbit Premium','Fitness & Wellness','fitness','https://www.fitbit.com/global/us/products/services/premium','fitbit.com'], - [181,'MyFitnessPal Premium','Fitness & Wellness','fitness','https://www.myfitnesspal.com/premium','myfitnesspal.com'], - [182,'Noom','Fitness & Wellness','fitness','https://www.noom.com/','noom.com'], - [183,'WW','Fitness & Wellness','fitness','https://www.weightwatchers.com/us/plans','weightwatchers.com'], - [184,'Headspace','Meditation & Wellness','fitness','https://www.headspace.com/','headspace.com'], - [185,'Calm','Meditation & Wellness','fitness','https://www.calm.com/premium','calm.com'], - [186,'Sleep Cycle Premium','Sleep & Wellness','fitness','https://www.sleepcycle.com/premium/','sleepcycle.com'], - [187,'Oura Membership','Fitness & Wellness','fitness','https://ouraring.com/membership','ouraring.com'], - [188,'Whoop','Fitness & Wellness','fitness','https://www.whoop.com/us/en/membership/','whoop.com'], - [189,'Aaptiv','Fitness & Wellness','fitness','https://aaptiv.com/','aaptiv.com'], - [190,'Fitbod','Fitness & Wellness','fitness','https://fitbod.me/pricing/','fitbod.me'], - [191,'Alo Moves','Fitness & Wellness','fitness','https://www.alomoves.com/','alomoves.com'], - [192,'Obe Fitness','Fitness & Wellness','fitness','https://obefitness.com/','obefitness.com'], - [193,'Centr','Fitness & Wellness','fitness','https://centr.com/','centr.com'], - [194,'Future','Fitness & Wellness','fitness','https://www.future.co/','future.co'], - [195,'Tonal Membership','Fitness & Wellness','fitness','https://www.tonal.com/membership/','tonal.com'], - [196,'Duolingo Super','Education','education','https://www.duolingo.com/super','duolingo.com'], - [197,'MasterClass','Education','education','https://www.masterclass.com/','masterclass.com'], - [198,'Coursera Plus','Education','education','https://www.coursera.org/courseraplus','coursera.org'], - [199,'Skillshare','Education','education','https://www.skillshare.com/','skillshare.com'], - [200,'Book of the Month','Books & Subscription Boxes','education','https://www.bookofthemonth.com/','bookofthemonth.com'], -]; - -const SUBSCRIPTION_CATALOG_V2_ROWS = [ - // ── AI ────────────────────────────────────────────────────────────────────── - [201,'Suno','AI Music','music','https://suno.com/','suno.com'], - [202,'Midjourney','AI Image Generation','software','https://midjourney.com/','midjourney.com'], - [203,'Grok','AI','software','https://grok.com/','grok.com'], - [204,'ElevenLabs','AI Voice','software','https://elevenlabs.io/','elevenlabs.io'], - [205,'Character.ai Plus','AI','software','https://character.ai/','character.ai'], - [206,'Runway','AI Video','software','https://runwayml.com/','runwayml.com'], - [207,'Windsurf','Developer Tools','software','https://windsurf.com/','windsurf.com'], - [208,'Leonardo.ai','AI Image Generation','software','https://leonardo.ai/','leonardo.ai'], - // ── Home Security / Smart Home ─────────────────────────────────────────────── - [209,'Ring Protect','Home Security','other','https://ring.com/protect-plans','ring.com'], - [210,'Nest Aware','Home Security','other','https://store.google.com/us/category/connected_home','nest.com'], - [211,'SimpliSafe','Home Security','other','https://simplisafe.com/','simplisafe.com'], - [212,'ADT','Home Security','other','https://www.adt.com/','adt.com'], - [213,'Arlo Secure','Home Security','other','https://www.arlo.com/','arlo.com'], - [214,'Wyze Cam Plus','Home Security','other','https://www.wyze.com/','wyze.com'], - [215,'Abode','Home Security','other','https://goabode.com/','goabode.com'], - // ── Financial Data & Aggregation ──────────────────────────────────────────── - [216,'SimpleFIN Bridge','Financial Data','software','https://simplefin.org/','simplefin.org'], - [217,'Tiller Money','Financial Data','software','https://www.tillerhq.com/','tillerhq.com'], - [218,'Monarch Money','Finance Software','software','https://www.monarchmoney.com/','monarchmoney.com'], - [219,'Empower','Finance Software','software','https://www.empower.com/','empower.com'], - // ── Cloud Backup ───────────────────────────────────────────────────────────── - [220,'Backblaze','Cloud Backup','cloud','https://www.backblaze.com/','backblaze.com'], - [221,'Carbonite','Cloud Backup','cloud','https://www.carbonite.com/','carbonite.com'], - [222,'iDrive','Cloud Backup','cloud','https://www.idrive.com/','idrive.com'], - // ── Email ──────────────────────────────────────────────────────────────────── - [223,'Proton Mail','Email & Privacy','software','https://proton.me/mail','proton.me'], - [224,'Fastmail','Email','software','https://www.fastmail.com/','fastmail.com'], - [225,'Superhuman','Email','software','https://superhuman.com/','superhuman.com'], - [226,'Hey','Email','software','https://www.hey.com/','hey.com'], - // ── Security / Privacy ─────────────────────────────────────────────────────── - [227,'Bitwarden','Security','security','https://bitwarden.com/','bitwarden.com'], - [228,'Keeper','Security','security','https://www.keepersecurity.com/','keepersecurity.com'], - [229,'LastPass','Security','security','https://www.lastpass.com/','lastpass.com'], - [230,'Proton VPN','Security','security','https://protonvpn.com/','protonvpn.com'], - [231,'Mullvad VPN','Security','security','https://mullvad.net/','mullvad.net'], - [232,'Private Internet Access','Security','security','https://www.privateinternetaccess.com/','privateinternetaccess.com'], - [233,'Proton Pass','Security','security','https://proton.me/pass','proton.me'], - [234,'SimpleLogin','Email Privacy','software','https://simplelogin.io/','simplelogin.io'], - // ── Identity Protection ────────────────────────────────────────────────────── - [235,'LifeLock','Identity Protection','security','https://www.lifelock.com/','lifelock.com'], - [236,'Aura','Identity Protection','security','https://www.aura.com/','aura.com'], - [237,'IdentityForce','Identity Protection','security','https://www.identityforce.com/','identityforce.com'], - // ── Comics ─────────────────────────────────────────────────────────────────── - [238,'Marvel Unlimited','Comics','streaming','https://www.marvel.com/unlimited','marvel.com'], - [239,'DC Universe Infinite','Comics','streaming','https://www.dcuniverseinfinite.com/','dcuniverseinfinite.com'], - // ── Genealogy ──────────────────────────────────────────────────────────────── - [240,'Ancestry','Genealogy','other','https://www.ancestry.com/','ancestry.com'], - [241,'MyHeritage','Genealogy','other','https://www.myheritage.com/','myheritage.com'], - [242,'Findmypast','Genealogy','other','https://www.findmypast.com/','findmypast.com'], - // ── Telehealth ─────────────────────────────────────────────────────────────── - [243,'BetterHelp','Telehealth','other','https://www.betterhelp.com/','betterhelp.com'], - [244,'Talkspace','Telehealth','other','https://www.talkspace.com/','talkspace.com'], - [245,'Teladoc','Telehealth','other','https://www.teladoc.com/','teladoc.com'], - [246,'Hims & Hers','Telehealth','other','https://www.forhims.com/','forhims.com'], - [247,'Cerebral','Telehealth','other','https://cerebral.com/','cerebral.com'], - // ── Website Builder / Hosting / Domains ───────────────────────────────────── - [248,'Squarespace','Website Builder','software','https://www.squarespace.com/','squarespace.com'], - [249,'Wix','Website Builder','software','https://www.wix.com/','wix.com'], - [250,'Webflow','Website Builder','software','https://webflow.com/','webflow.com'], - [251,'GoDaddy','Domain & Hosting','software','https://www.godaddy.com/','godaddy.com'], - [252,'Namecheap','Domain & Hosting','software','https://www.namecheap.com/','namecheap.com'], - [253,'Netlify','Developer Tools','software','https://www.netlify.com/','netlify.com'], - [254,'Vercel','Developer Tools','software','https://vercel.com/','vercel.com'], - // ── Learning ───────────────────────────────────────────────────────────────── - [255,'LinkedIn Learning','Education','education','https://www.linkedin.com/learning/','linkedin.com'], - [256,'Pluralsight','Education','education','https://www.pluralsight.com/','pluralsight.com'], - [257,"O'Reilly",'Education','education','https://www.oreilly.com/','oreilly.com'], - [258,'CBT Nuggets','Education','education','https://www.cbtnuggets.com/','cbtnuggets.com'], - [259,'Udacity','Education','education','https://www.udacity.com/','udacity.com'], - [260,'Frontend Masters','Education','education','https://frontendmasters.com/','frontendmasters.com'], - // ── Project Management ─────────────────────────────────────────────────────── - [261,'Monday.com','Software & Productivity','software','https://monday.com/','monday.com'], - [262,'Asana','Software & Productivity','software','https://asana.com/','asana.com'], - [263,'ClickUp','Software & Productivity','software','https://clickup.com/','clickup.com'], - [264,'Linear','Developer Tools','software','https://linear.app/','linear.app'], - [265,'Basecamp','Software & Productivity','software','https://basecamp.com/','basecamp.com'], - [266,'Jira','Developer Tools','software','https://www.atlassian.com/software/jira','atlassian.com'], - [267,'Miro','Software & Productivity','software','https://miro.com/','miro.com'], - [268,'Airtable','Software & Productivity','software','https://airtable.com/','airtable.com'], - // ── Email Marketing ────────────────────────────────────────────────────────── - [269,'Mailchimp','Email Marketing','software','https://mailchimp.com/','mailchimp.com'], - [270,'ConvertKit','Email Marketing','software','https://convertkit.com/','convertkit.com'], - [271,'Beehiiv','Newsletter Platform','software','https://www.beehiiv.com/','beehiiv.com'], - [272,'Constant Contact','Email Marketing','software','https://www.constantcontact.com/','constantcontact.com'], - [273,'ActiveCampaign','Email Marketing','software','https://www.activecampaign.com/','activecampaign.com'], - // ── Cloud Computing ────────────────────────────────────────────────────────── - [274,'DigitalOcean','Cloud Computing','cloud','https://www.digitalocean.com/','digitalocean.com'], - [275,'Linode','Cloud Computing','cloud','https://www.linode.com/','linode.com'], - [276,'Render','Cloud Computing','cloud','https://render.com/','render.com'], - [277,'Vultr','Cloud Computing','cloud','https://www.vultr.com/','vultr.com'], - [278,'Hetzner','Cloud Computing','cloud','https://www.hetzner.com/','hetzner.com'], - [279,'Cloudflare','Network & Security','cloud','https://www.cloudflare.com/','cloudflare.com'], - // ── Media Server ───────────────────────────────────────────────────────────── - [280,'Plex Pass','Media Server','streaming','https://www.plex.tv/plex-pass/','plex.tv'], - [281,'Emby Premiere','Media Server','streaming','https://emby.media/premiere/','emby.media'], - // ── Network / Homelab ──────────────────────────────────────────────────────── - [282,'NextDNS','Network & Security','software','https://nextdns.io/','nextdns.io'], - [283,'Tailscale','Network & Security','software','https://tailscale.com/','tailscale.com'], - // ── Productivity ───────────────────────────────────────────────────────────── - [284,'Obsidian Sync','Software & Productivity','software','https://obsidian.md/','obsidian.md'], - [285,'Readwise','Software & Productivity','software','https://readwise.io/','readwise.io'], - [286,'Loom','Software & Productivity','software','https://www.loom.com/','loom.com'], - [287,'Raycast Pro','Software & Productivity','software','https://www.raycast.com/','raycast.com'], - // ── Developer Tools ────────────────────────────────────────────────────────── - [288,'JetBrains','Developer Tools','software','https://www.jetbrains.com/','jetbrains.com'], - [289,'Tabnine','Developer Tools','software','https://www.tabnine.com/','tabnine.com'], - // ── Communication ──────────────────────────────────────────────────────────── - [290,'Telegram Premium','Messaging','software','https://telegram.org/','telegram.org'], -]; +// Subscription catalog seed rows live in their own module (pure data, no logic). +const { SUBSCRIPTION_CATALOG_ROWS, SUBSCRIPTION_CATALOG_V2_ROWS } = require('./subscriptionCatalogSeed'); function runSubscriptionCatalogV2Migration(database) { // Category fixes for existing rows diff --git a/db/subscriptionCatalogSeed.js b/db/subscriptionCatalogSeed.js new file mode 100644 index 0000000..0326664 --- /dev/null +++ b/db/subscriptionCatalogSeed.js @@ -0,0 +1,324 @@ +'use strict'; + +// Seed rows for the subscription_catalog table, extracted from db/database.js +// to keep that module focused on schema + migrations. Pure data, no logic. + +// ── Subscription catalog seed ───────────────────────────────────────────────── +// [rank, name, category, subscription_type, website, domain] +const SUBSCRIPTION_CATALOG_ROWS = [ + [1,'Netflix','Video Streaming','streaming','https://www.netflix.com/','netflix.com'], + [2,'Amazon Prime Video','Video Streaming','streaming','https://www.primevideo.com/','primevideo.com'], + [3,'Hulu','Video Streaming','streaming','https://www.hulu.com/','hulu.com'], + [4,'Disney+','Video Streaming','streaming','https://www.disneyplus.com/','disneyplus.com'], + [5,'Max','Video Streaming','streaming','https://www.max.com/','max.com'], + [6,'Peacock','Video Streaming','streaming','https://www.peacocktv.com/','peacocktv.com'], + [7,'Paramount+','Video Streaming','streaming','https://www.paramountplus.com/','paramountplus.com'], + [8,'Apple TV+','Video Streaming','streaming','https://tv.apple.com/','tv.apple.com'], + [9,'YouTube Premium','Video Streaming','streaming','https://www.youtube.com/premium','youtube.com'], + [10,'ESPN+','Sports Streaming','streaming','https://plus.espn.com/','plus.espn.com'], + [11,'YouTube TV','Live TV Streaming','streaming','https://tv.youtube.com/','tv.youtube.com'], + [12,'Sling TV','Live TV Streaming','streaming','https://www.sling.com/','sling.com'], + [13,'Fubo','Live TV Streaming','streaming','https://www.fubo.tv/','fubo.tv'], + [14,'DirecTV Stream','Live TV Streaming','streaming','https://streamtv.directv.com/','streamtv.directv.com'], + [15,'Philo','Live TV Streaming','streaming','https://www.philo.com/','philo.com'], + [16,'Starz','Video Streaming','streaming','https://www.starz.com/','starz.com'], + [17,'MGM+','Video Streaming','streaming','https://www.mgmplus.com/','mgmplus.com'], + [18,'AMC+','Video Streaming','streaming','https://www.amcplus.com/','amcplus.com'], + [19,'BET+','Video Streaming','streaming','https://www.bet.plus/','bet.plus'], + [20,'Crunchyroll','Video Streaming','streaming','https://www.crunchyroll.com/','crunchyroll.com'], + [21,'HIDIVE','Video Streaming','streaming','https://www.hidive.com/','hidive.com'], + [22,'Shudder','Video Streaming','streaming','https://www.shudder.com/','shudder.com'], + [23,'Acorn TV','Video Streaming','streaming','https://acorn.tv/','acorn.tv'], + [24,'BritBox','Video Streaming','streaming','https://www.britbox.com/','britbox.com'], + [25,'The Criterion Channel','Video Streaming','streaming','https://www.criterionchannel.com/','criterionchannel.com'], + [26,'MUBI','Video Streaming','streaming','https://mubi.com/','mubi.com'], + [27,'Discovery+','Video Streaming','streaming','https://www.discoveryplus.com/','discoveryplus.com'], + [28,'Hallmark+','Video Streaming','streaming','https://www.hallmarkplus.com/','hallmarkplus.com'], + [29,'PBS Passport','Video Streaming','streaming','https://www.pbs.org/passport/','pbs.org'], + [30,'MagellanTV','Video Streaming','streaming','https://www.magellantv.com/','magellantv.com'], + [31,'Curiosity Stream','Video Streaming','streaming','https://curiositystream.com/','curiositystream.com'], + [32,'Nebula','Video Streaming','streaming','https://nebula.tv/','nebula.tv'], + [33,'WOW Presents Plus','Video Streaming','streaming','https://www.wowpresentsplus.com/','wowpresentsplus.com'], + [34,'ViX Premium','Video Streaming','streaming','https://vix.com/','vix.com'], + [35,'FloSports','Sports Streaming','streaming','https://www.flosports.tv/','flosports.tv'], + [36,'DAZN','Sports Streaming','streaming','https://www.dazn.com/','dazn.com'], + [37,'MLB.TV','Sports Streaming','streaming','https://www.mlb.com/live-stream-games/subscribe','mlb.com'], + [38,'NBA League Pass','Sports Streaming','streaming','https://www.nba.com/watch/league-pass-stream','nba.com'], + [39,'NHL Power Play on ESPN+','Sports Streaming','streaming','https://www.espn.com/espnplus/catalog/nhl','espn.com'], + [40,'NFL+','Sports Streaming','streaming','https://www.nfl.com/plus/','nfl.com'], + [41,'Spotify Premium','Music & Audio','music','https://www.spotify.com/premium/','spotify.com'], + [42,'Apple Music','Music & Audio','music','https://www.apple.com/apple-music/','apple.com'], + [43,'Amazon Music Unlimited','Music & Audio','music','https://music.amazon.com/','music.amazon.com'], + [44,'Pandora Premium','Music & Audio','music','https://www.pandora.com/upgrade','pandora.com'], + [45,'SiriusXM','Music & Audio','music','https://www.siriusxm.com/','siriusxm.com'], + [46,'TIDAL','Music & Audio','music','https://tidal.com/','tidal.com'], + [47,'Qobuz','Music & Audio','music','https://www.qobuz.com/us-en/music/streaming/offers','qobuz.com'], + [48,'SoundCloud Go+','Music & Audio','music','https://soundcloud.com/go','soundcloud.com'], + [49,'Deezer','Music & Audio','music','https://www.deezer.com/us/offers','deezer.com'], + [50,'iHeartRadio Plus','Music & Audio','music','https://www.iheart.com/plus/','iheart.com'], + [51,'Audible','Audiobooks','education','https://www.audible.com/','audible.com'], + [52,'Spotify Audiobooks','Audiobooks','education','https://www.spotify.com/us/audiobooks/','spotify.com'], + [53,'Everand','Audiobooks & Ebooks','education','https://www.everand.com/','everand.com'], + [54,'Scribd','Documents & Ebooks','education','https://www.scribd.com/','scribd.com'], + [55,'Kindle Unlimited','Ebooks','education','https://www.amazon.com/kindle-dbs/hz/subscribe/ku','amazon.com'], + [56,'Kobo Plus','Ebooks & Audiobooks','education','https://www.kobo.com/us/en/plus','kobo.com'], + [57,'Libro.fm','Audiobooks','education','https://libro.fm/','libro.fm'], + [58,'Blinkist','Books & Learning','education','https://www.blinkist.com/','blinkist.com'], + [59,'Pocket Casts Plus','Podcasts','music','https://pocketcasts.com/plus/','pocketcasts.com'], + [60,'Wondery+','Podcasts','music','https://wondery.com/plus/','wondery.com'], + [61,'The New York Times','News & Magazines','news','https://www.nytimes.com/subscription','nytimes.com'], + [62,'The Wall Street Journal','News & Magazines','news','https://www.wsj.com/news/subscribe','wsj.com'], + [63,'The Washington Post','News & Magazines','news','https://subscribe.washingtonpost.com/','subscribe.washingtonpost.com'], + [64,'The Atlantic','News & Magazines','news','https://www.theatlantic.com/subscribe/','theatlantic.com'], + [65,'The New Yorker','News & Magazines','news','https://www.newyorker.com/subscribe','newyorker.com'], + [66,'Bloomberg.com','News & Magazines','news','https://www.bloomberg.com/subscriptions','bloomberg.com'], + [67,'Financial Times','News & Magazines','news','https://www.ft.com/products','ft.com'], + [68,'The Economist','News & Magazines','news','https://www.economist.com/subscribe','economist.com'], + [69,'TIME','News & Magazines','news','https://time.com/subscribe/','time.com'], + [70,'WIRED','News & Magazines','news','https://www.wired.com/subscribe/','wired.com'], + [71,'Consumer Reports','News & Magazines','news','https://www.consumerreports.org/join/','consumerreports.org'], + [72,'Politico Pro','News & Magazines','news','https://www.politicopro.com/','politicopro.com'], + [73,'The Athletic','Sports Media','streaming','https://theathletic.com/','theathletic.com'], + [74,'Substack','Creator Media','news','https://substack.com/','substack.com'], + [75,'Medium','Creator Media','news','https://medium.com/membership','medium.com'], + [76,'Patreon','Creator Media','news','https://www.patreon.com/','patreon.com'], + [77,'Apple News+','News & Magazines','news','https://www.apple.com/apple-news/','apple.com'], + [78,'Readly','News & Magazines','news','https://us.readly.com/','us.readly.com'], + [79,'PressReader','News & Magazines','news','https://www.pressreader.com/','pressreader.com'], + [80,'The Information','News & Magazines','news','https://www.theinformation.com/subscribe','theinformation.com'], + [81,'Microsoft 365','Software & Productivity','software','https://www.microsoft.com/microsoft-365','microsoft.com'], + [82,'Google One','Cloud & Storage','cloud','https://one.google.com/','one.google.com'], + [83,'iCloud+','Cloud & Storage','cloud','https://www.apple.com/icloud/','apple.com'], + [84,'Dropbox','Cloud & Storage','cloud','https://www.dropbox.com/plans','dropbox.com'], + [85,'Box','Cloud & Storage','cloud','https://www.box.com/pricing','box.com'], + [86,'Adobe Creative Cloud','Software & Design','software','https://www.adobe.com/creativecloud.html','adobe.com'], + [87,'Canva Pro','Software & Design','software','https://www.canva.com/pro/','canva.com'], + [88,'Figma','Software & Design','software','https://www.figma.com/pricing/','figma.com'], + [89,'Notion','Software & Productivity','software','https://www.notion.so/pricing','notion.so'], + [90,'Evernote','Software & Productivity','software','https://evernote.com/compare-plans','evernote.com'], + [91,'Todoist','Software & Productivity','software','https://todoist.com/pricing','todoist.com'], + [92,'Grammarly','Writing & AI','software','https://www.grammarly.com/plans','grammarly.com'], + [93,'ChatGPT','AI','software','https://chatgpt.com/pricing','chatgpt.com'], + [94,'Claude.ai','AI','software','https://claude.ai/upgrade','anthropic.com'], + [95,'Perplexity','AI','software','https://www.perplexity.ai/pro','perplexity.ai'], + [96,'Gemini Advanced','AI','software','https://one.google.com/about/google-ai-plans/','one.google.com'], + [97,'GitHub Copilot','Developer Tools','software','https://github.com/features/copilot/plans','github.com'], + [98,'Cursor','Developer Tools','software','https://www.cursor.com/pricing','cursor.com'], + [99,'Replit','Developer Tools','software','https://replit.com/pricing','replit.com'], + [100,'Setapp','Software & Productivity','software','https://setapp.com/','setapp.com'], + [101,'1Password','Security','security','https://1password.com/pricing','1password.com'], + [102,'Dashlane','Security','security','https://www.dashlane.com/pricing','dashlane.com'], + [103,'NordVPN','Security','security','https://nordvpn.com/pricing/','nordvpn.com'], + [104,'ExpressVPN','Security','security','https://www.expressvpn.com/','expressvpn.com'], + [105,'Surfshark','Security','security','https://surfshark.com/pricing','surfshark.com'], + [106,'Norton 360','Security','security','https://us.norton.com/products','us.norton.com'], + [107,'McAfee+','Security','security','https://www.mcafee.com/en-us/consumer-support/pricing.html','mcafee.com'], + [108,'QuickBooks Online','Finance Software','software','https://quickbooks.intuit.com/pricing/','quickbooks.intuit.com'], + [109,'TurboTax Live','Finance Software','software','https://turbotax.intuit.com/personal-taxes/online/live/','turbotax.intuit.com'], + [110,'YNAB','Finance Software','software','https://www.ynab.com/pricing','ynab.com'], + [111,'Rocket Money Premium','Finance Software','software','https://www.rocketmoney.com/premium','rocketmoney.com'], + [112,'Copilot Money','Finance Software','software','https://copilot.money/','copilot.money'], + [113,'Calendly','Software & Productivity','software','https://calendly.com/pricing','calendly.com'], + [114,'Zoom Workplace','Software & Productivity','software','https://www.zoom.com/en/pricing/','zoom.com'], + [115,'Slack','Software & Productivity','software','https://slack.com/pricing','slack.com'], + [116,'Xbox Game Pass','Gaming','gaming','https://www.xbox.com/en-US/xbox-game-pass','xbox.com'], + [117,'PlayStation Plus','Gaming','gaming','https://www.playstation.com/en-us/ps-plus/','playstation.com'], + [118,'Nintendo Switch Online','Gaming','gaming','https://www.nintendo.com/us/switch/online/','nintendo.com'], + [119,'Apple Arcade','Gaming','gaming','https://www.apple.com/apple-arcade/','apple.com'], + [120,'EA Play','Gaming','gaming','https://www.ea.com/ea-play','ea.com'], + [121,'Ubisoft+','Gaming','gaming','https://www.ubisoft.com/en-us/ubisoft-plus','ubisoft.com'], + [122,'NVIDIA GeForce NOW','Gaming','gaming','https://www.nvidia.com/en-us/geforce-now/memberships/','nvidia.com'], + [123,'Roblox Premium','Gaming','gaming','https://www.roblox.com/premium/membership','roblox.com'], + [124,'Fortnite Crew','Gaming','gaming','https://www.fortnite.com/fortnite-crew-subscription','fortnite.com'], + [125,'Minecraft Realms','Gaming','gaming','https://www.minecraft.net/realms','minecraft.net'], + [126,'Twitch Turbo','Creator & Social','news','https://www.twitch.tv/turbo','twitch.tv'], + [127,'Discord Nitro','Creator & Social','news','https://discord.com/nitro','discord.com'], + [128,'X Premium','Creator & Social','news','https://help.x.com/en/using-x/x-premium','help.x.com'], + [129,'Snapchat+','Creator & Social','news','https://www.snapchat.com/plus','snapchat.com'], + [130,'TikTok Live Subscription','Creator & Social','news','https://www.tiktok.com/live/creators/en-US/subscription/','tiktok.com'], + [131,'Meta Verified','Creator & Social','news','https://about.meta.com/technologies/meta-verified/','about.meta.com'], + [132,'LinkedIn Premium','Career & Social','news','https://premium.linkedin.com/','premium.linkedin.com'], + [133,'Tinder Gold','Dating','other','https://tinder.com/feature/plus','tinder.com'], + [134,'Bumble Premium','Dating','other','https://bumble.com/en/the-buzz/bumble-premium','bumble.com'], + [135,'Hinge+','Dating','other','https://hinge.co/hinge-plus','hinge.co'], + [136,'Amazon Prime','Shopping & Delivery','shopping','https://www.amazon.com/amazonprime','amazon.com'], + [137,'Walmart+','Shopping & Delivery','shopping','https://www.walmart.com/plus','walmart.com'], + [138,'Target Circle 360','Shopping & Delivery','shopping','https://www.target.com/circle/target-circle-360','target.com'], + [139,'Costco','Warehouse Clubs','shopping','https://www.costco.com/join-costco.html','costco.com'], + [140,'Sam\'s Club','Warehouse Clubs','shopping','https://www.samsclub.com/join','samsclub.com'], + [141,'BJ\'s Wholesale Club','Warehouse Clubs','shopping','https://www.bjs.com/membership','bjs.com'], + [142,'Instacart+','Grocery & Delivery','food','https://www.instacart.com/instacart-plus','instacart.com'], + [143,'DoorDash DashPass','Food Delivery','food','https://www.doordash.com/dashpass/','doordash.com'], + [144,'Uber One','Food & Rides','food','https://www.uber.com/us/en/u/uber-one/','uber.com'], + [145,'Grubhub+','Food Delivery','food','https://www.grubhub.com/plus','grubhub.com'], + [146,'Shipt','Grocery & Delivery','food','https://www.shipt.com/membership/','shipt.com'], + [147,'Kroger Boost','Grocery & Delivery','food','https://www.kroger.com/pr/boost','kroger.com'], + [148,'Thrive Market','Grocery & Delivery','food','https://thrivemarket.com/','thrivemarket.com'], + [149,'Misfits Market','Grocery & Delivery','food','https://www.misfitsmarket.com/','misfitsmarket.com'], + [150,'Imperfect Foods','Grocery & Delivery','food','https://www.imperfectfoods.com/','imperfectfoods.com'], + [151,'Chewy Autoship','Pet Retail','shopping','https://www.chewy.com/app/content/autoship','chewy.com'], + [152,'Petco Vital Care Premier','Pet Retail','shopping','https://www.petco.com/shop/en/petcostore/c/vitalcare','petco.com'], + [153,'PetSmart Treats Rewards VIPP','Pet Retail','shopping','https://www.petsmart.com/treats-rewards-vipp.html','petsmart.com'], + [154,'GameStop Pro','Retail Memberships','shopping','https://www.gamestop.com/pro/','gamestop.com'], + [155,'Barnes & Noble Membership','Retail Memberships','shopping','https://www.barnesandnoble.com/membership','barnesandnoble.com'], + [156,'HelloFresh','Food & Meal Kits','food','https://www.hellofresh.com/','hellofresh.com'], + [157,'Blue Apron','Food & Meal Kits','food','https://www.blueapron.com/','blueapron.com'], + [158,'Home Chef','Food & Meal Kits','food','https://www.homechef.com/','homechef.com'], + [159,'Marley Spoon','Food & Meal Kits','food','https://marleyspoon.com/','marleyspoon.com'], + [160,'Dinnerly','Food & Meal Kits','food','https://dinnerly.com/','dinnerly.com'], + [161,'EveryPlate','Food & Meal Kits','food','https://www.everyplate.com/','everyplate.com'], + [162,'Green Chef','Food & Meal Kits','food','https://www.greenchef.com/','greenchef.com'], + [163,'Purple Carrot','Food & Meal Kits','food','https://www.purplecarrot.com/','purplecarrot.com'], + [164,'Sunbasket','Food & Meal Kits','food','https://sunbasket.com/','sunbasket.com'], + [165,'Factor','Prepared Meals','food','https://www.factor75.com/','factor75.com'], + [166,'CookUnity','Prepared Meals','food','https://www.cookunity.com/','cookunity.com'], + [167,'Fresh N Lean','Prepared Meals','food','https://www.freshnlean.com/','freshnlean.com'], + [168,'Hungryroot','Food & Meal Kits','food','https://www.hungryroot.com/','hungryroot.com'], + [169,'Daily Harvest','Prepared Meals','food','https://www.daily-harvest.com/','daily-harvest.com'], + [170,'Tovala','Prepared Meals','food','https://www.tovala.com/','tovala.com'], + [171,'MistoBox','Coffee & Tea','food','https://mistobox.com/','mistobox.com'], + [172,'Trade Coffee','Coffee & Tea','food','https://www.drinktrade.com/','drinktrade.com'], + [173,'Atlas Coffee Club','Coffee & Tea','food','https://atlascoffeeclub.com/','atlascoffeeclub.com'], + [174,'Bean Box','Coffee & Tea','food','https://beanbox.com/','beanbox.com'], + [175,'Universal Yums','Snacks','food','https://www.universalyums.com/','universalyums.com'], + [176,'Peloton App','Fitness & Wellness','fitness','https://www.onepeloton.com/app','onepeloton.com'], + [177,'ClassPass','Fitness & Wellness','fitness','https://classpass.com/','classpass.com'], + [178,'Apple Fitness+','Fitness & Wellness','fitness','https://www.apple.com/apple-fitness-plus/','apple.com'], + [179,'Strava','Fitness & Wellness','fitness','https://www.strava.com/subscribe','strava.com'], + [180,'Fitbit Premium','Fitness & Wellness','fitness','https://www.fitbit.com/global/us/products/services/premium','fitbit.com'], + [181,'MyFitnessPal Premium','Fitness & Wellness','fitness','https://www.myfitnesspal.com/premium','myfitnesspal.com'], + [182,'Noom','Fitness & Wellness','fitness','https://www.noom.com/','noom.com'], + [183,'WW','Fitness & Wellness','fitness','https://www.weightwatchers.com/us/plans','weightwatchers.com'], + [184,'Headspace','Meditation & Wellness','fitness','https://www.headspace.com/','headspace.com'], + [185,'Calm','Meditation & Wellness','fitness','https://www.calm.com/premium','calm.com'], + [186,'Sleep Cycle Premium','Sleep & Wellness','fitness','https://www.sleepcycle.com/premium/','sleepcycle.com'], + [187,'Oura Membership','Fitness & Wellness','fitness','https://ouraring.com/membership','ouraring.com'], + [188,'Whoop','Fitness & Wellness','fitness','https://www.whoop.com/us/en/membership/','whoop.com'], + [189,'Aaptiv','Fitness & Wellness','fitness','https://aaptiv.com/','aaptiv.com'], + [190,'Fitbod','Fitness & Wellness','fitness','https://fitbod.me/pricing/','fitbod.me'], + [191,'Alo Moves','Fitness & Wellness','fitness','https://www.alomoves.com/','alomoves.com'], + [192,'Obe Fitness','Fitness & Wellness','fitness','https://obefitness.com/','obefitness.com'], + [193,'Centr','Fitness & Wellness','fitness','https://centr.com/','centr.com'], + [194,'Future','Fitness & Wellness','fitness','https://www.future.co/','future.co'], + [195,'Tonal Membership','Fitness & Wellness','fitness','https://www.tonal.com/membership/','tonal.com'], + [196,'Duolingo Super','Education','education','https://www.duolingo.com/super','duolingo.com'], + [197,'MasterClass','Education','education','https://www.masterclass.com/','masterclass.com'], + [198,'Coursera Plus','Education','education','https://www.coursera.org/courseraplus','coursera.org'], + [199,'Skillshare','Education','education','https://www.skillshare.com/','skillshare.com'], + [200,'Book of the Month','Books & Subscription Boxes','education','https://www.bookofthemonth.com/','bookofthemonth.com'], +]; + +const SUBSCRIPTION_CATALOG_V2_ROWS = [ + // ── AI ────────────────────────────────────────────────────────────────────── + [201,'Suno','AI Music','music','https://suno.com/','suno.com'], + [202,'Midjourney','AI Image Generation','software','https://midjourney.com/','midjourney.com'], + [203,'Grok','AI','software','https://grok.com/','grok.com'], + [204,'ElevenLabs','AI Voice','software','https://elevenlabs.io/','elevenlabs.io'], + [205,'Character.ai Plus','AI','software','https://character.ai/','character.ai'], + [206,'Runway','AI Video','software','https://runwayml.com/','runwayml.com'], + [207,'Windsurf','Developer Tools','software','https://windsurf.com/','windsurf.com'], + [208,'Leonardo.ai','AI Image Generation','software','https://leonardo.ai/','leonardo.ai'], + // ── Home Security / Smart Home ─────────────────────────────────────────────── + [209,'Ring Protect','Home Security','other','https://ring.com/protect-plans','ring.com'], + [210,'Nest Aware','Home Security','other','https://store.google.com/us/category/connected_home','nest.com'], + [211,'SimpliSafe','Home Security','other','https://simplisafe.com/','simplisafe.com'], + [212,'ADT','Home Security','other','https://www.adt.com/','adt.com'], + [213,'Arlo Secure','Home Security','other','https://www.arlo.com/','arlo.com'], + [214,'Wyze Cam Plus','Home Security','other','https://www.wyze.com/','wyze.com'], + [215,'Abode','Home Security','other','https://goabode.com/','goabode.com'], + // ── Financial Data & Aggregation ──────────────────────────────────────────── + [216,'SimpleFIN Bridge','Financial Data','software','https://simplefin.org/','simplefin.org'], + [217,'Tiller Money','Financial Data','software','https://www.tillerhq.com/','tillerhq.com'], + [218,'Monarch Money','Finance Software','software','https://www.monarchmoney.com/','monarchmoney.com'], + [219,'Empower','Finance Software','software','https://www.empower.com/','empower.com'], + // ── Cloud Backup ───────────────────────────────────────────────────────────── + [220,'Backblaze','Cloud Backup','cloud','https://www.backblaze.com/','backblaze.com'], + [221,'Carbonite','Cloud Backup','cloud','https://www.carbonite.com/','carbonite.com'], + [222,'iDrive','Cloud Backup','cloud','https://www.idrive.com/','idrive.com'], + // ── Email ──────────────────────────────────────────────────────────────────── + [223,'Proton Mail','Email & Privacy','software','https://proton.me/mail','proton.me'], + [224,'Fastmail','Email','software','https://www.fastmail.com/','fastmail.com'], + [225,'Superhuman','Email','software','https://superhuman.com/','superhuman.com'], + [226,'Hey','Email','software','https://www.hey.com/','hey.com'], + // ── Security / Privacy ─────────────────────────────────────────────────────── + [227,'Bitwarden','Security','security','https://bitwarden.com/','bitwarden.com'], + [228,'Keeper','Security','security','https://www.keepersecurity.com/','keepersecurity.com'], + [229,'LastPass','Security','security','https://www.lastpass.com/','lastpass.com'], + [230,'Proton VPN','Security','security','https://protonvpn.com/','protonvpn.com'], + [231,'Mullvad VPN','Security','security','https://mullvad.net/','mullvad.net'], + [232,'Private Internet Access','Security','security','https://www.privateinternetaccess.com/','privateinternetaccess.com'], + [233,'Proton Pass','Security','security','https://proton.me/pass','proton.me'], + [234,'SimpleLogin','Email Privacy','software','https://simplelogin.io/','simplelogin.io'], + // ── Identity Protection ────────────────────────────────────────────────────── + [235,'LifeLock','Identity Protection','security','https://www.lifelock.com/','lifelock.com'], + [236,'Aura','Identity Protection','security','https://www.aura.com/','aura.com'], + [237,'IdentityForce','Identity Protection','security','https://www.identityforce.com/','identityforce.com'], + // ── Comics ─────────────────────────────────────────────────────────────────── + [238,'Marvel Unlimited','Comics','streaming','https://www.marvel.com/unlimited','marvel.com'], + [239,'DC Universe Infinite','Comics','streaming','https://www.dcuniverseinfinite.com/','dcuniverseinfinite.com'], + // ── Genealogy ──────────────────────────────────────────────────────────────── + [240,'Ancestry','Genealogy','other','https://www.ancestry.com/','ancestry.com'], + [241,'MyHeritage','Genealogy','other','https://www.myheritage.com/','myheritage.com'], + [242,'Findmypast','Genealogy','other','https://www.findmypast.com/','findmypast.com'], + // ── Telehealth ─────────────────────────────────────────────────────────────── + [243,'BetterHelp','Telehealth','other','https://www.betterhelp.com/','betterhelp.com'], + [244,'Talkspace','Telehealth','other','https://www.talkspace.com/','talkspace.com'], + [245,'Teladoc','Telehealth','other','https://www.teladoc.com/','teladoc.com'], + [246,'Hims & Hers','Telehealth','other','https://www.forhims.com/','forhims.com'], + [247,'Cerebral','Telehealth','other','https://cerebral.com/','cerebral.com'], + // ── Website Builder / Hosting / Domains ───────────────────────────────────── + [248,'Squarespace','Website Builder','software','https://www.squarespace.com/','squarespace.com'], + [249,'Wix','Website Builder','software','https://www.wix.com/','wix.com'], + [250,'Webflow','Website Builder','software','https://webflow.com/','webflow.com'], + [251,'GoDaddy','Domain & Hosting','software','https://www.godaddy.com/','godaddy.com'], + [252,'Namecheap','Domain & Hosting','software','https://www.namecheap.com/','namecheap.com'], + [253,'Netlify','Developer Tools','software','https://www.netlify.com/','netlify.com'], + [254,'Vercel','Developer Tools','software','https://vercel.com/','vercel.com'], + // ── Learning ───────────────────────────────────────────────────────────────── + [255,'LinkedIn Learning','Education','education','https://www.linkedin.com/learning/','linkedin.com'], + [256,'Pluralsight','Education','education','https://www.pluralsight.com/','pluralsight.com'], + [257,"O'Reilly",'Education','education','https://www.oreilly.com/','oreilly.com'], + [258,'CBT Nuggets','Education','education','https://www.cbtnuggets.com/','cbtnuggets.com'], + [259,'Udacity','Education','education','https://www.udacity.com/','udacity.com'], + [260,'Frontend Masters','Education','education','https://frontendmasters.com/','frontendmasters.com'], + // ── Project Management ─────────────────────────────────────────────────────── + [261,'Monday.com','Software & Productivity','software','https://monday.com/','monday.com'], + [262,'Asana','Software & Productivity','software','https://asana.com/','asana.com'], + [263,'ClickUp','Software & Productivity','software','https://clickup.com/','clickup.com'], + [264,'Linear','Developer Tools','software','https://linear.app/','linear.app'], + [265,'Basecamp','Software & Productivity','software','https://basecamp.com/','basecamp.com'], + [266,'Jira','Developer Tools','software','https://www.atlassian.com/software/jira','atlassian.com'], + [267,'Miro','Software & Productivity','software','https://miro.com/','miro.com'], + [268,'Airtable','Software & Productivity','software','https://airtable.com/','airtable.com'], + // ── Email Marketing ────────────────────────────────────────────────────────── + [269,'Mailchimp','Email Marketing','software','https://mailchimp.com/','mailchimp.com'], + [270,'ConvertKit','Email Marketing','software','https://convertkit.com/','convertkit.com'], + [271,'Beehiiv','Newsletter Platform','software','https://www.beehiiv.com/','beehiiv.com'], + [272,'Constant Contact','Email Marketing','software','https://www.constantcontact.com/','constantcontact.com'], + [273,'ActiveCampaign','Email Marketing','software','https://www.activecampaign.com/','activecampaign.com'], + // ── Cloud Computing ────────────────────────────────────────────────────────── + [274,'DigitalOcean','Cloud Computing','cloud','https://www.digitalocean.com/','digitalocean.com'], + [275,'Linode','Cloud Computing','cloud','https://www.linode.com/','linode.com'], + [276,'Render','Cloud Computing','cloud','https://render.com/','render.com'], + [277,'Vultr','Cloud Computing','cloud','https://www.vultr.com/','vultr.com'], + [278,'Hetzner','Cloud Computing','cloud','https://www.hetzner.com/','hetzner.com'], + [279,'Cloudflare','Network & Security','cloud','https://www.cloudflare.com/','cloudflare.com'], + // ── Media Server ───────────────────────────────────────────────────────────── + [280,'Plex Pass','Media Server','streaming','https://www.plex.tv/plex-pass/','plex.tv'], + [281,'Emby Premiere','Media Server','streaming','https://emby.media/premiere/','emby.media'], + // ── Network / Homelab ──────────────────────────────────────────────────────── + [282,'NextDNS','Network & Security','software','https://nextdns.io/','nextdns.io'], + [283,'Tailscale','Network & Security','software','https://tailscale.com/','tailscale.com'], + // ── Productivity ───────────────────────────────────────────────────────────── + [284,'Obsidian Sync','Software & Productivity','software','https://obsidian.md/','obsidian.md'], + [285,'Readwise','Software & Productivity','software','https://readwise.io/','readwise.io'], + [286,'Loom','Software & Productivity','software','https://www.loom.com/','loom.com'], + [287,'Raycast Pro','Software & Productivity','software','https://www.raycast.com/','raycast.com'], + // ── Developer Tools ────────────────────────────────────────────────────────── + [288,'JetBrains','Developer Tools','software','https://www.jetbrains.com/','jetbrains.com'], + [289,'Tabnine','Developer Tools','software','https://www.tabnine.com/','tabnine.com'], + // ── Communication ──────────────────────────────────────────────────────────── + [290,'Telegram Premium','Messaging','software','https://telegram.org/','telegram.org'], +]; + +module.exports = { SUBSCRIPTION_CATALOG_ROWS, SUBSCRIPTION_CATALOG_V2_ROWS };