feat: integrate barcode scanning functionality and enhance Appwrite setup

- Added a new `barcode_products` collection to the Appwrite setup for managing barcode data.
- Implemented barcode scanning feature with a dedicated modal for scanning and adding products.
- Introduced new components for barcode product preview and management.
- Updated the setup script to seed verified barcode products from a JSON file.
- Enhanced the application state management to handle barcode-related actions and user interactions.
This commit is contained in:
Ned Halksworth
2026-05-27 14:29:22 +01:00
parent 38deca4562
commit ec9ea9d1f9
19 changed files with 2033 additions and 164 deletions
+6
View File
@@ -0,0 +1,6 @@
import type { BarcodeSeedProduct } from "../types";
import verifiedBarcodes from "./verified-barcodes.json";
// Verified retail barcodes only. Add rows here via verified-barcodes.json so
// the frontend seed data and Appwrite setup script stay aligned.
export const BUILT_IN_BARCODE_PRODUCTS = verifiedBarcodes as Record<string, BarcodeSeedProduct>;
+17 -12
View File
@@ -1,20 +1,25 @@
import type { Flavour } from "../types";
export const BUILT_IN_FLAVOURS: Flavour[] = [
{ name: "Original", accent: "#00A7FF" },
{ name: "Sugar Free", accent: "#E7EEF8", sugarFree: true },
{ name: "Ruby", accent: "#C3093B" },
{ name: "Iced Vanilla", accent: "#49adbe" },
{ name: "Tropical", accent: "#FFC247" },
{ name: "Watermelon", accent: "#FF355E" },
{ name: "Original", accent: "#282874" },
{ name: "Zero", accent: "#B1D0EE", sugarFree: true },
{ name: "Sugar Free", accent: "#009EDF", sugarFree: true },
{ name: "Ruby", accent: "#B50045" },
{ name: "Iced Vanilla", accent: "#53B2C2" },
{ name: "Tropical", accent: "#FFCB04" },
{ name: "Cherry Edition", accent: "#D81B60" },
{ name: "Apricot Edition", accent: "#F3911B" },
{ name: "Lilac Sugarfree", accent: "#7D62CE", sugarFree: true },
{ name: "Pink Sugarfree", accent: "#E77BAB", sugarFree: true },
{ name: "Watermelon", accent: "#E6301F" },
{ name: "Blueberry", accent: "#496DFF" },
{ name: "Coconut Berry", accent: "#D8F9FF" },
{ name: "Peach", accent: "#FF9B63" },
{ name: "Juneberry", accent: "#9C73FF" },
{ name: "Coconut Berry", accent: "#0070B8" },
{ name: "Peach", accent: "#E24585" },
{ name: "Juneberry", accent: "#0085C8" },
{ name: "Dragon Fruit", accent: "#FF3DBD" },
{ name: "Curuba Elderflower", accent: "#B7FF4A" },
{ name: "Winter Edition", accent: "#7CE7FF" },
{ name: "Summer Edition", accent: "#f0e53b" },
{ name: "Curuba Elderflower", accent: "#78B941" },
{ name: "Winter Edition", accent: "#BF1431" },
{ name: "Summer Edition", accent: "#F2E853" },
{ name: "Other", accent: "#AEB9C7" },
];
+101 -99
View File
@@ -51,147 +51,149 @@ export const APP_THEMES: AppTheme[] = [
tertiary: "#ffd8e7",
}),
theme("original", "Original", "flavour", "#00a7ff", {
primary: "#0077c8",
secondary: "#00a7ff",
tertiary: "#1e3264",
theme("original", "Original", "flavour", "#282874", {
primary: "#282874",
secondary: "#efefef",
tertiary: "#d4af37",
tokens: {
chartSecondary: "#e6301f",
},
}),
theme("zero", "Zero", "flavour", "#2a2a2a", {
primary: "#2a2a2a",
secondary: "#5c5c5c",
tertiary: "#8a8a8a",
dark: true,
theme("zero", "Zero", "flavour", "#b1d0ee", {
primary: "#b1d0ee",
secondary: "#efefef",
tertiary: "#e6301f",
}),
theme("summer", "Summer Edition", "flavour", "#f0e53b", {
primary: "#d4c400",
secondary: "#f0e53b",
tertiary: "#ffc247",
primary: "#f2e853",
secondary: "#efefef",
tertiary: "#8a8f98",
}),
theme("cherry", "Cherry Edition", "flavour", "#e40046", {
primary: "#c3093b",
secondary: "#e40046",
tertiary: "#ff6b8a",
theme("cherry", "Cherry Edition", "flavour", "#d81b60", {
primary: "#d81b60",
secondary: "#efefef",
tertiary: "#b50045",
}),
theme("spring", "Spring Edition", "flavour", "#ff8fab", {
primary: "#e85d8a",
secondary: "#ffb3c6",
tertiary: "#ffd8e7",
}),
theme("apple", "Apple Edition", "flavour", "#78be20", {
primary: "#5a9a12",
secondary: "#78be20",
tertiary: "#a8d84a",
theme("apple", "Apple Edition", "flavour", "#bf1431", {
primary: "#bf1431",
secondary: "#f6c300",
tertiary: "#f3911b",
}),
theme("peach", "Peach Edition", "flavour", "#ff9b63", {
primary: "#e87a3a",
secondary: "#ff9b63",
tertiary: "#ffc9a3",
theme("peach", "Peach Edition", "flavour", "#e24585", {
primary: "#e24585",
secondary: "#efefef",
tertiary: "#d6417e",
}),
theme("ice", "Ice Edition", "flavour", "#49adbe", {
primary: "#2d8a9a",
secondary: "#49adbe",
tertiary: "#7ce7ff",
primary: "#53b2c2",
secondary: "#efefef",
tertiary: "#49adbe",
}),
theme("blue-edition", "Blue Edition", "flavour", "#496dff", {
primary: "#3a52cc",
secondary: "#496dff",
tertiary: "#9c73ff",
theme("blue-edition", "Blue Edition", "flavour", "#0085c8", {
primary: "#0085c8",
secondary: "#efefef",
tertiary: "#ff73d1",
}),
theme("red-edition", "Red Edition", "flavour", "#ff355e", {
primary: "#e02045",
secondary: "#ff355e",
tertiary: "#ff6b8a",
theme("red-edition", "Red Edition", "flavour", "#e6301f", {
primary: "#e6301f",
secondary: "#efefef",
tertiary: "#78b941",
}),
theme("tropical", "Tropical Edition", "flavour", "#ffc247", {
primary: "#e0a820",
secondary: "#ffc247",
tertiary: "#ff9b63",
theme("tropical", "Tropical Edition", "flavour", "#ffcb04", {
primary: "#ffcb04",
secondary: "#efefef",
tertiary: "#f6c300",
}),
theme("coconut", "Coconut Edition", "flavour", "#7ce7ff", {
primary: "#4ec4e0",
secondary: "#7ce7ff",
tertiary: "#d8f9ff",
theme("coconut", "Coconut Edition", "flavour", "#0070b8", {
primary: "#0070b8",
secondary: "#efefef",
tertiary: "#8a8f98",
}),
theme("green-edition", "Green Edition", "flavour", "#b7ff4a", {
primary: "#7acc20",
secondary: "#b7ff4a",
tertiary: "#d4ff8a",
theme("green-edition", "Green Edition", "flavour", "#78b941", {
primary: "#78b941",
secondary: "#efefef",
tertiary: "#f3911b",
}),
theme("apricot", "Apricot Edition", "flavour", "#ff8c42", {
primary: "#e06a20",
secondary: "#ff8c42",
tertiary: "#ffb87a",
theme("apricot", "Apricot Edition", "flavour", "#f3911b", {
primary: "#f3911b",
secondary: "#efefef",
tertiary: "#d6417e",
}),
theme("ruby", "Ruby Edition", "flavour", "#c3093b", {
primary: "#a00730",
secondary: "#c3093b",
tertiary: "#e04060",
theme("ruby", "Ruby Edition", "flavour", "#b50045", {
primary: "#b50045",
secondary: "#efefef",
tertiary: "#a3e635",
}),
theme("sugarfree", "Sugarfree", "sugarfree", "#c8d4e0", {
primary: "#8a9bb0",
secondary: "#c8d4e0",
tertiary: "#e7eef8",
theme("sugarfree", "Sugarfree", "sugarfree", "#009edf", {
primary: "#009edf",
secondary: "#efefef",
tertiary: "#e6301f",
sugarFree: true,
}),
theme("sf-summer", "Summer Sugarfree", "sugarfree", "#e8e4a0", {
primary: "#c4c020",
secondary: "#e8e4a0",
tertiary: "#f0e53b",
theme("sf-summer", "Summer Sugarfree", "sugarfree", "#f0e53b", {
primary: "#f2e853",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-apple", "Apple Sugarfree", "sugarfree", "#b8d4a0", {
primary: "#6a9a30",
secondary: "#b8d4a0",
tertiary: "#78be20",
theme("sf-apple", "Apple Sugarfree", "sugarfree", "#bf1431", {
primary: "#bf1431",
secondary: "#f6c300",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-peach", "Peach Sugarfree", "sugarfree", "#f0d0b8", {
primary: "#d08050",
secondary: "#f0d0b8",
tertiary: "#ff9b63",
theme("sf-peach", "Peach Sugarfree", "sugarfree", "#e24585", {
primary: "#e24585",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-ice", "Ice Sugarfree", "sugarfree", "#b8e0e8", {
primary: "#4a9aaa",
secondary: "#b8e0e8",
tertiary: "#49adbe",
theme("sf-ice", "Ice Sugarfree", "sugarfree", "#49adbe", {
primary: "#53b2c2",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-lilac", "Lilac Sugarfree", "sugarfree", "#d8c8f0", {
primary: "#9070c0",
secondary: "#d8c8f0",
tertiary: "#b898e0",
theme("sf-lilac", "Lilac Sugarfree", "sugarfree", "#7d62ce", {
primary: "#7d62ce",
secondary: "#44c7b7",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-pink", "Pink Sugarfree", "sugarfree", "#f0c8d8", {
primary: "#d06090",
secondary: "#f0c8d8",
tertiary: "#ffb7d9",
theme("sf-pink", "Pink Sugarfree", "sugarfree", "#e77bab", {
primary: "#e77bab",
secondary: "#8a1f3d",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-blue", "Blue Sugarfree", "sugarfree", "#c8d0f8", {
primary: "#5060c0",
secondary: "#c8d0f8",
tertiary: "#496dff",
theme("sf-blue", "Blue Sugarfree", "sugarfree", "#0085c8", {
primary: "#0085c8",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-coconut", "Coconut Sugarfree", "sugarfree", "#d0f0f8", {
primary: "#60b8d0",
secondary: "#d0f0f8",
tertiary: "#7ce7ff",
theme("sf-coconut", "Coconut Sugarfree", "sugarfree", "#0070b8", {
primary: "#0070b8",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-green", "Green Sugarfree", "sugarfree", "#d8f0b8", {
primary: "#70a830",
secondary: "#d8f0b8",
tertiary: "#b7ff4a",
theme("sf-green", "Green Sugarfree", "sugarfree", "#78b941", {
primary: "#78b941",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-ruby", "Ruby Sugarfree", "sugarfree", "#f0c0c8", {
primary: "#a03050",
secondary: "#f0c0c8",
tertiary: "#c3093b",
theme("sf-ruby", "Ruby Sugarfree", "sugarfree", "#b50045", {
primary: "#b50045",
secondary: "#efefef",
tertiary: "#009edf",
sugarFree: true,
}),
theme("sf-spring", "Spring Sugarfree", "sugarfree", "#f8d0e0", {
+475
View File
@@ -0,0 +1,475 @@
{
"90162602": {
"flavourName": "Original",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - ORIGINAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-original-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode. Price uses tracker default."
},
"90493317": {
"flavourName": "Original",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - ORIGINAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-original-250ml/",
"variant": "current-pmp",
"notes": "Current GBP 1.75 PMP barcode."
},
"90457999": {
"flavourName": "Original",
"sizeMl": 250,
"pricePerCan": 1.65,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - ORIGINAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-original-250ml/",
"variant": "older-pmp",
"notes": "Older GBP 1.65 PMP barcode."
},
"90162800": {
"flavourName": "Sugar Free",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - SUGAR FREE",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-sugar-free/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode. Price uses tracker default."
},
"90496066": {
"flavourName": "Sugar Free",
"sizeMl": 250,
"pricePerCan": 1.7,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - SUGAR FREE",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-sugar-free/",
"variant": "current-pmp",
"notes": "Current GBP 1.70 PMP barcode."
},
"90457982": {
"flavourName": "Sugar Free",
"sizeMl": 250,
"pricePerCan": 1.6,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL NON PMP - SUGAR FREE",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-non-pmp-sugar-free/",
"variant": "older-pmp",
"notes": "Older GBP 1.60 PMP barcode."
},
"90415425": {
"flavourName": "Zero",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL ZERO 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-zero-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode. Price uses tracker default."
},
"90496011": {
"flavourName": "Zero",
"sizeMl": 250,
"pricePerCan": 1.7,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL ZERO 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-zero-250ml/",
"variant": "current-pmp",
"notes": "Current GBP 1.70 PMP barcode."
},
"90457890": {
"flavourName": "Zero",
"sizeMl": 250,
"pricePerCan": 1.6,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL ZERO 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-zero-250ml/",
"variant": "older-pmp",
"notes": "Older GBP 1.60 PMP barcode."
},
"90493423": {
"flavourName": "Cherry Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Spring Edition Cherry Sakura Energy Drink 250ml",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/833691-1",
"variant": "pmp",
"notes": "PMP barcode verified. Plain can barcode not publicly verified in the supplied source list."
},
"90493539": {
"flavourName": "Summer Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Summer Edition Citrus Zest Energy Drink 250ml",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/833324-1",
"variant": "pmp",
"notes": "PMP barcode verified. Sugarfree Citrus Zest barcode was not publicly verified in the supplied source list."
},
"90486449": {
"flavourName": "Winter Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "BB Foodservice",
"sourceName": "Red Bull Winter Edition Fuji Apple & Ginger Energy Drink",
"sourceUrl": "https://www.bbfoodservice.co.uk/product/830604-1",
"variant": "meal-deal-or-no-price",
"notes": "Fuji Apple & Ginger listing mapped to existing Winter Edition flavour."
},
"90493485": {
"flavourName": "Winter Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "BB Foodservice",
"sourceName": "Red Bull Winter Edition Fuji Apple & Ginger Energy Drink",
"sourceUrl": "https://www.bbfoodservice.co.uk/product/830604-1",
"variant": "pmp",
"notes": "PMP barcode mapped to existing Winter Edition flavour."
},
"90493355": {
"flavourName": "Peach",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Peach Edition White Peach Energy Drink 250ml",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/832794-1",
"variant": "current-pmp",
"notes": "Current PMP barcode verified. Plain can barcode not publicly verified in the supplied source list."
},
"90474576": {
"flavourName": "Peach",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Peach Edition White Peach Energy Drink 250ml",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/832794-1",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90457449": {
"flavourName": "Iced Vanilla",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - ICED VANILLA BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-iced-vanilla-berry-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493324": {
"flavourName": "Iced Vanilla",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - ICED VANILLA BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-iced-vanilla-berry-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90486234": {
"flavourName": "Iced Vanilla",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - ICED VANILLA BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-iced-vanilla-berry-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90454035": {
"flavourName": "Juneberry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - JUNEBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-juneberry-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493737": {
"flavourName": "Juneberry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - JUNEBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-juneberry-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90474095": {
"flavourName": "Juneberry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - JUNEBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-juneberry-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90446412": {
"flavourName": "Watermelon",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - WATERMELON 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-watermelon-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493713": {
"flavourName": "Watermelon",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - WATERMELON 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-watermelon-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90457975": {
"flavourName": "Watermelon",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - WATERMELON 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-watermelon-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90415739": {
"flavourName": "Tropical",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - TROPICAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-tropical-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493348": {
"flavourName": "Tropical",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - TROPICAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-tropical-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90474057": {
"flavourName": "Tropical",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - TROPICAL 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-tropical-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90435348": {
"flavourName": "Coconut Berry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - COCONUT & BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-coconut-berry-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493720": {
"flavourName": "Coconut Berry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - COCONUT & BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-coconut-berry-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90457951": {
"flavourName": "Coconut Berry",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - COCONUT & BERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-coconut-berry-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90456831": {
"flavourName": "Curuba Elderflower",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - SUMMER CARUBA 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-summer-caruba-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode appears under older Caruba naming."
},
"90493362": {
"flavourName": "Curuba Elderflower",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - SUMMER CARUBA 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-summer-caruba-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90474064": {
"flavourName": "Curuba Elderflower",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - SUMMER CARUBA 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-summer-caruba-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90453168": {
"flavourName": "Apricot Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - APRICOT & STRAWBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-apricot-strawberry-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493300": {
"flavourName": "Apricot Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - APRICOT & STRAWBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-apricot-strawberry-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90457968": {
"flavourName": "Apricot Edition",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "Red Bull - APRICOT & STRAWBERRY 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-apricot-strawberry-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90454899": {
"flavourName": "Ruby",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Intamarque",
"sourceName": "Red Bull The Ruby Edition Spiced Pear Energy Drink 250ml",
"sourceUrl": "https://intamarquewholesale.com/products/red-bull-the-ruby-edition-spiced-pear-energy-drink-250ml",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493560": {
"flavourName": "Ruby",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Intamarque",
"sourceName": "Red Bull The Ruby Edition Spiced Pear Energy Drink 250ml",
"sourceUrl": "https://intamarquewholesale.com/products/red-bull-the-ruby-edition-spiced-pear-energy-drink-250ml",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90474088": {
"flavourName": "Ruby",
"sizeMl": 250,
"pricePerCan": 1.75,
"verifiedBy": "Intamarque",
"sourceName": "Red Bull The Ruby Edition Spiced Pear Energy Drink 250ml",
"sourceUrl": "https://intamarquewholesale.com/products/red-bull-the-ruby-edition-spiced-pear-energy-drink-250ml",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90456985": {
"flavourName": "Pink Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - SF PINK 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-sf-pink-250ml/",
"variant": "meal-deal-or-no-price",
"notes": "Verified non-PMP barcode."
},
"90493379": {
"flavourName": "Pink Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - SF PINK 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-sf-pink-250ml/",
"variant": "current-pmp",
"notes": "Current PMP barcode verified."
},
"90474071": {
"flavourName": "Pink Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - SF PINK 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-sf-pink-250ml/",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90456978": {
"flavourName": "Pink Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Brand Factory Ltd",
"sourceName": "RED BULL COLOURS NON PMP - SF PINK 250ML",
"sourceUrl": "https://www.brandfactory.co.uk/product/red-bull-colours-non-pmp-sf-pink-250ml/",
"variant": "pmp",
"notes": "Additional PMP barcode verified."
},
"90493294": {
"flavourName": "Lilac Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Lilac Edition Sugarfree Grapefruit & Blossom Energy Drink",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/832789-1",
"variant": "current-pmp",
"notes": "PMP barcode verified. Plain can barcode not publicly verified in the supplied source list."
},
"90474774": {
"flavourName": "Lilac Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Lilac Edition Sugarfree Grapefruit & Blossom Energy Drink",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/832789-1",
"variant": "older-pmp",
"notes": "Older PMP barcode verified."
},
"90486067": {
"flavourName": "Lilac Sugarfree",
"sizeMl": 250,
"pricePerCan": 1.75,
"sugarFree": true,
"verifiedBy": "Bestway Wholesale",
"sourceName": "Red Bull Lilac Edition Sugarfree Grapefruit & Blossom Energy Drink",
"sourceUrl": "https://www.bestwaywholesale.co.uk/product/832789-1",
"variant": "pmp",
"notes": "Additional PMP barcode verified."
}
}