EcoTracker-II / frontend /src /utils /constants.js
Akash-Dragon's picture
feat: build React/Vite frontend client with TailwindCSS
687ebbb
Raw
History Blame Contribute Delete
4.74 kB
/**
* Carbon Emission Factors (kg CO₂e per unit)
* Sources: IPCC, EPA, UK BEIS carbon factors 2023
*/
// Transportation emission factors
export const CAR_EMISSION_FACTORS = {
petrol: 0.21, // kg CO₂ per km
diesel: 0.17,
electric: 0.047,
hybrid: 0.105,
none: 0,
};
export const PUBLIC_TRANSPORT_FACTOR = 0.089; // kg CO₂ per km (bus average)
export const TRAIN_FACTOR = 0.041; // kg CO₂ per km
export const FLIGHT_FACTORS = {
short_haul: 255, // kg CO₂ per return flight (< 3h)
long_haul: 1620, // kg CO₂ per return flight (> 3h)
};
// Energy emission factors
export const ELECTRICITY_GRID_FACTOR = 0.233; // kg CO₂ per kWh (UK grid 2023)
// Food emission factors (kg CO₂ per year)
export const FOOD_EMISSION_FACTORS = {
vegan: 1500,
vegetarian: 1700,
mixed: 2500,
heavy_meat: 3300,
};
// Shopping emission factors (kg CO₂ per item)
export const CLOTHING_FACTOR = 33; // per clothing item (average)
export const ELECTRONICS_FACTOR = 300; // per device (avg smartphone/laptop)
// Scoring thresholds
export const SCORE_THRESHOLDS = {
excellent: { min: 90, max: 100, label: 'Excellent', color: '#10b981' },
good: { min: 70, max: 89, label: 'Good', color: '#06b6d4' },
moderate: { min: 50, max: 69, label: 'Moderate', color: '#f59e0b' },
poor: { min: 0, max: 49, label: 'Needs Improvement', color: '#ef4444' },
};
// World averages (kg CO₂ per year)
export const GLOBAL_AVERAGE_EMISSION = 4700;
export const UK_AVERAGE_EMISSION = 5500;
export const TARGET_EMISSION = 2000; // Paris Agreement target per person
// Emission category labels
export const CATEGORY_LABELS = {
transport: 'Transportation',
energy: 'Home Energy',
food: 'Food & Diet',
shopping: 'Shopping',
};
// Emission category colors
export const CATEGORY_COLORS = {
transport: '#34d399',
energy: '#60a5fa',
food: '#f472b6',
shopping: '#fb923c',
};
// Fuel type labels
export const FUEL_TYPE_LABELS = {
petrol: 'Petrol/Gasoline',
diesel: 'Diesel',
electric: 'Electric',
hybrid: 'Hybrid',
none: 'No Car',
};
// Diet type labels
export const DIET_TYPE_LABELS = {
vegan: 'Vegan',
vegetarian: 'Vegetarian',
mixed: 'Mixed (Occasional Meat)',
heavy_meat: 'Heavy Meat Consumer',
};
// Simulation scenarios
export const SIMULATION_SCENARIOS = [
{
id: 'ev_switch',
name: 'Switch to Electric Vehicle',
description: 'Replace current car with an EV',
icon: '⚡',
category: 'transport',
params: { carFuelType: 'electric' },
},
{
id: 'cycle_3days',
name: 'Cycle 3 Days/Week',
description: 'Replace 3 days of car trips with cycling',
icon: '🚴',
category: 'transport',
params: { cyclingReductionFactor: 0.4 },
},
{
id: 'reduce_flights_50',
name: 'Reduce Flights by 50%',
description: 'Cut air travel in half',
icon: '✈️',
category: 'transport',
params: { flightReductionFactor: 0.5 },
},
{
id: 'solar_panels',
name: 'Install Solar Panels',
description: 'Generate 80% of electricity from solar',
icon: '☀️',
category: 'energy',
params: { renewablePercentage: 80 },
},
{
id: 'vegetarian_diet',
name: 'Switch to Vegetarian Diet',
description: 'Replace meat with plant-based alternatives',
icon: '🥗',
category: 'food',
params: { dietType: 'vegetarian' },
},
{
id: 'vegan_diet',
name: 'Switch to Vegan Diet',
description: 'Fully plant-based lifestyle',
icon: '🌱',
category: 'food',
params: { dietType: 'vegan' },
},
{
id: 'reduce_electricity_30',
name: 'Reduce Electricity by 30%',
description: 'Energy efficiency improvements at home',
icon: '💡',
category: 'energy',
params: { electricityReductionFactor: 0.3 },
},
{
id: 'secondhand_shopping',
name: 'Buy Second-Hand Only',
description: 'Source 70% of purchases second-hand',
icon: '♻️',
category: 'shopping',
params: { shoppingReductionFactor: 0.7 },
},
];
// Privacy notice
export const PRIVACY_NOTICE =
'EcoGuide AI does not collect personal data. All calculations use anonymous session IDs stored only in your browser. No names, emails, or identifying information are required or retained.';
// Input validation limits (mirroring backend Zod schema)
export const INPUT_LIMITS = {
dailyCarKm: { min: 0, max: 1000 },
publicTransportKmPerWeek: { min: 0, max: 10000 },
cyclingKmPerWeek: { min: 0, max: 1000 },
shortFlightsPerYear: { min: 0, max: 100 },
longFlightsPerYear: { min: 0, max: 50 },
monthlyElectricityKwh: { min: 0, max: 10000 },
renewablePercentage: { min: 0, max: 100 },
clothingItemsPerYear: { min: 0, max: 500 },
electronicsItemsPerYear: { min: 0, max: 50 },
};