@jjlmoya/utils-nature 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +60 -0
- package/src/category/i18n/en.ts +110 -0
- package/src/category/i18n/es.ts +127 -0
- package/src/category/i18n/fr.ts +110 -0
- package/src/category/index.ts +14 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +11 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +30 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +146 -0
- package/src/pages/[locale].astro +251 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/cricketThermometer/bibliography.astro +14 -0
- package/src/tool/cricketThermometer/component.astro +549 -0
- package/src/tool/cricketThermometer/i18n/en.ts +181 -0
- package/src/tool/cricketThermometer/i18n/es.ts +181 -0
- package/src/tool/cricketThermometer/i18n/fr.ts +181 -0
- package/src/tool/cricketThermometer/index.ts +34 -0
- package/src/tool/cricketThermometer/logic.ts +6 -0
- package/src/tool/cricketThermometer/seo.astro +15 -0
- package/src/tool/cricketThermometer/ui.ts +11 -0
- package/src/tool/digitalCarbon/bibliography.astro +9 -0
- package/src/tool/digitalCarbon/component.astro +582 -0
- package/src/tool/digitalCarbon/i18n/en.ts +235 -0
- package/src/tool/digitalCarbon/i18n/es.ts +235 -0
- package/src/tool/digitalCarbon/i18n/fr.ts +235 -0
- package/src/tool/digitalCarbon/index.ts +33 -0
- package/src/tool/digitalCarbon/logic.ts +107 -0
- package/src/tool/digitalCarbon/seo.astro +14 -0
- package/src/tool/digitalCarbon/ui.ts +38 -0
- package/src/tool/rainHarvester/bibliography.astro +9 -0
- package/src/tool/rainHarvester/component.astro +559 -0
- package/src/tool/rainHarvester/i18n/en.ts +185 -0
- package/src/tool/rainHarvester/i18n/es.ts +185 -0
- package/src/tool/rainHarvester/i18n/fr.ts +185 -0
- package/src/tool/rainHarvester/index.ts +33 -0
- package/src/tool/rainHarvester/logic.ts +12 -0
- package/src/tool/rainHarvester/seo.astro +14 -0
- package/src/tool/rainHarvester/ui.ts +23 -0
- package/src/tool/seedCalculator/bibliography.astro +8 -0
- package/src/tool/seedCalculator/component.astro +812 -0
- package/src/tool/seedCalculator/i18n/en.ts +213 -0
- package/src/tool/seedCalculator/i18n/es.ts +213 -0
- package/src/tool/seedCalculator/i18n/fr.ts +213 -0
- package/src/tool/seedCalculator/index.ts +34 -0
- package/src/tool/seedCalculator/logic.ts +19 -0
- package/src/tool/seedCalculator/seo.astro +9 -0
- package/src/tool/seedCalculator/ui.ts +39 -0
- package/src/tools.ts +12 -0
- package/src/types.ts +72 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { DigitalCarbonLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'digital-carbon-footprint-calculator';
|
|
5
|
+
const title = 'Digital Carbon Footprint Calculator';
|
|
6
|
+
const description = 'Analyze the environmental impact of any web page. Estimate energy consumption and CO₂ emissions per visit.';
|
|
7
|
+
|
|
8
|
+
const faqData = [
|
|
9
|
+
{
|
|
10
|
+
question: 'What is a website\'s carbon footprint?',
|
|
11
|
+
answer: 'It is the amount of greenhouse gases, primarily CO₂, emitted into the atmosphere as a result of the energy consumed by servers, transmission networks, and the user\'s device to load and render a web page.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'How is a website\'s impact measured?',
|
|
15
|
+
answer: 'It is typically measured in grams of CO₂ equivalent (gCO₂e) per visit. An efficient website emits less than 0.2g of CO₂, while an unoptimized page can exceed 2 or 3g per load.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Why does the internet pollute?',
|
|
19
|
+
answer: 'Because all the necessary infrastructure (data centers, undersea cables, WiFi routers, smartphones) runs on electricity that, in much of the world, still comes from burning coal or gas.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'How can I reduce my website\'s CO₂?',
|
|
23
|
+
answer: 'The most effective way is to reduce the page weight: optimize images (WebP), minify CSS and JS files, use lazy loading, and choose a hosting provider that uses renewable energy.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const howToData = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Enter the URL',
|
|
30
|
+
text: 'Type the web address of the page you want to analyze into the input field.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Start analysis',
|
|
34
|
+
text: 'Click the analyze button to let our tool estimate the weight of the page resources.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Review your rating',
|
|
38
|
+
text: 'Get an A+ to F grade based on the energy efficiency of the analyzed website.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Apply improvements',
|
|
42
|
+
text: 'Use the list of personalized tips to reduce your site weight and environmental impact.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faqData.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howToData.map((step, i) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
position: i + 1,
|
|
64
|
+
name: step.name,
|
|
65
|
+
text: step.text,
|
|
66
|
+
})),
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
70
|
+
'@context': 'https://schema.org',
|
|
71
|
+
'@type': 'SoftwareApplication',
|
|
72
|
+
name: title,
|
|
73
|
+
description,
|
|
74
|
+
applicationCategory: 'UtilityApplication',
|
|
75
|
+
operatingSystem: 'All',
|
|
76
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
77
|
+
inLanguage: 'en',
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const content: DigitalCarbonLocaleContent = {
|
|
81
|
+
slug,
|
|
82
|
+
title,
|
|
83
|
+
description,
|
|
84
|
+
ui: {
|
|
85
|
+
headInputs: 'URL Analyzer',
|
|
86
|
+
headResults: 'Impact Result',
|
|
87
|
+
headTips: 'Optimization Tips',
|
|
88
|
+
labelUrl: 'Page URL',
|
|
89
|
+
btnAnalyze: 'Analyze Website',
|
|
90
|
+
btnAnalyzing: 'Analyzing...',
|
|
91
|
+
placeholderUrl: 'https://example.com',
|
|
92
|
+
errorInvalidUrl: 'Please enter a valid URL.',
|
|
93
|
+
errorFetchFailed: 'Could not analyze the website. Try another URL.',
|
|
94
|
+
|
|
95
|
+
resultTitle: 'Digital Carbon Footprint',
|
|
96
|
+
resultSubtitle: 'Estimated page efficiency',
|
|
97
|
+
co2PerVisit: 'CO₂ per visit',
|
|
98
|
+
energyPerVisit: 'Energy consumed',
|
|
99
|
+
co2Annual: 'Annual CO₂ (100k visits)',
|
|
100
|
+
impactTitle: 'Real Annual Impact',
|
|
101
|
+
impactTrees: 'Trees required',
|
|
102
|
+
impactKm: 'Driving km (approx.)',
|
|
103
|
+
treesLabel: 'Trees',
|
|
104
|
+
kmLabel: 'Kilometers',
|
|
105
|
+
|
|
106
|
+
ratingExcellent: 'Excellent. This page consumes very little energy compared to the global average.',
|
|
107
|
+
ratingVeryGood: 'Very good efficiency. The page is well optimized and has minimal impact.',
|
|
108
|
+
ratingGood: 'Acceptable efficiency. There is room for improvement but it is below average.',
|
|
109
|
+
ratingAverage: 'Average. The page consumes what is expected on the current web.',
|
|
110
|
+
ratingPoor: 'Above average. Consider optimizing images, scripts, and fonts.',
|
|
111
|
+
ratingVeryPoor: 'High impact. The page weight is significant and should be reduced.',
|
|
112
|
+
ratingCritical: 'Very high impact. There is a great opportunity to reduce page size.',
|
|
113
|
+
|
|
114
|
+
tipImages: 'Convert images to WebP or AVIF to reduce their weight by up to 70%.',
|
|
115
|
+
tipCompression: 'Enable Brotli or GZIP on the server to compress resources.',
|
|
116
|
+
tipLazyLoading: 'Use lazy loading on images and videos outside the viewport.',
|
|
117
|
+
tipHosting: 'Choose horizontal with renewable energy (Cloudflare, Netlify, Vercel).',
|
|
118
|
+
tipThirdParty: 'Remove unnecessary analytics scripts and third-party widgets.',
|
|
119
|
+
tipFonts: 'Load only the typographic weights you actually use.',
|
|
120
|
+
tipCache: 'Configure HTTP cache headers to avoid re-downloads.',
|
|
121
|
+
},
|
|
122
|
+
faqTitle: 'Frequently Asked Questions',
|
|
123
|
+
faq: faqData,
|
|
124
|
+
howTo: howToData,
|
|
125
|
+
bibliographyTitle: 'Web Sustainability References',
|
|
126
|
+
seo: [
|
|
127
|
+
{
|
|
128
|
+
type: 'title',
|
|
129
|
+
text: 'Digital Carbon Footprint Calculator: How Much CO₂ Your Website Generates',
|
|
130
|
+
level: 2,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'paragraph',
|
|
134
|
+
html: 'Discover the real environmental impact of any web page. Analyze its weight, estimate the grams of CO₂ per visit, and learn how to reduce the digital pollution of your projects.',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'title',
|
|
138
|
+
text: 'What is a website\'s digital carbon footprint?',
|
|
139
|
+
level: 2,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'paragraph',
|
|
143
|
+
html: 'Every time you open a web page, your device, home router, undersea cables, and servers on the other side of the world consume electricity. That electricity is still largely generated by burning fossil fuels. The result: a real amount of <strong>CO₂ emitted into the atmosphere for every visit</strong>.',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'A website\'s <strong>digital carbon footprint</strong> is measured in grams of CO₂ equivalent (gCO₂e) per visit. An average website generates approximately 0.5g of CO₂ per load. Although it seems insignificant, a site with 100,000 monthly visits can emit more than 600kg of CO₂ per year, the equivalent of driving a gasoline car more than 3,000 km.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'title',
|
|
151
|
+
text: 'How is a website\'s CO₂ calculated?',
|
|
152
|
+
level: 2,
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'paragraph',
|
|
156
|
+
html: 'The calculation model used is based on the <strong>Sustainable Web Design Model</strong> standards, which divides energy consumption into four main segments:',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'card',
|
|
160
|
+
title: 'Data Transfer',
|
|
161
|
+
html: 'The total weight of the page determines how many gigabytes are transferred. The standard considers <code>0.81 kWh/GB</code> for network infrastructure.',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'card',
|
|
165
|
+
title: 'User Device',
|
|
166
|
+
html: 'The computer or mobile receiving the page consumes energy. It is estimated at <code>0.52 kWh/GB</code> of processed data.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'card',
|
|
170
|
+
title: 'Carbon Intensity',
|
|
171
|
+
html: 'The global reference value of <code>442 gCO₂/kWh</code> is used to convert energy consumption into real carbon emissions.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'card',
|
|
175
|
+
title: 'Caching Factor',
|
|
176
|
+
html: 'The model applies a factor of <code>0.75</code> assuming that 25% of users already have resources cached.',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'title',
|
|
180
|
+
text: 'What does the efficiency rating mean?',
|
|
181
|
+
level: 2,
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
type: 'list',
|
|
185
|
+
items: [
|
|
186
|
+
'<strong>A+ and A:</strong> Less than 0.2g of CO₂. Very light and optimized sites.',
|
|
187
|
+
'<strong>B:</strong> Between 0.2 and 0.5g. Below the global average.',
|
|
188
|
+
'<strong>C:</strong> Between 0.5 and 1g. The average for the current web.',
|
|
189
|
+
'<strong>D and E:</strong> Between 1 and 4g. Heavy pages with relevant impact.',
|
|
190
|
+
'<strong>F:</strong> More than 4g per visit. Very high impact.',
|
|
191
|
+
],
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
type: 'title',
|
|
195
|
+
text: 'How to reduce your website\'s carbon footprint',
|
|
196
|
+
level: 2,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
type: 'card',
|
|
200
|
+
title: 'Image Optimization',
|
|
201
|
+
html: 'Use formats like <strong>WebP or AVIF</strong> to reduce size by up to 80% without noticeable quality loss.',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
type: 'card',
|
|
205
|
+
title: 'Server Compression',
|
|
206
|
+
html: 'Enabling <strong>Brotli or GZIP</strong> reduces the size of text files by up to 70%.',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: 'card',
|
|
210
|
+
title: 'Sustainable Hosting',
|
|
211
|
+
html: 'Choosing a provider with <strong>certified renewable energy</strong> can reduce impact by nearly 100%.',
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
type: 'card',
|
|
215
|
+
title: 'Cache and CDN',
|
|
216
|
+
html: 'Configure <strong>long cache headers</strong> to avoid unnecessary re-downloads.',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
type: 'title',
|
|
220
|
+
text: 'The real impact of the internet on climate',
|
|
221
|
+
level: 2,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
type: 'paragraph',
|
|
225
|
+
html: 'The internet represents between <strong>2% and 4% of global CO₂ emissions</strong>, a figure comparable to the aviation industry. Every kilobyte you eliminate doesn\'t just make your website faster: it measurably reduces digital pollution.',
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
bibliography: [
|
|
229
|
+
{ name: 'Sustainable Web Design Model', url: 'https://sustainablewebdesign.org/' },
|
|
230
|
+
{ name: 'Website Carbon Calculator', url: 'https://www.websitecarbon.com/' },
|
|
231
|
+
{ name: 'The Green Web Foundation', url: 'https://www.thegreenwebfoundation.org/' },
|
|
232
|
+
{ name: 'W3C - Web Sustainability Guidelines', url: 'https://w3c.github.io/sustyweb/' },
|
|
233
|
+
],
|
|
234
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
235
|
+
};
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { DigitalCarbonLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'calculadora-huella-carbono-digital';
|
|
5
|
+
const title = 'Calculadora de Huella de Carbono Digital';
|
|
6
|
+
const description = 'Analiza el impacto medioambiental de cualquier página web. Estima el consumo energético y las emisiones de CO₂ por visita.';
|
|
7
|
+
|
|
8
|
+
const faqData = [
|
|
9
|
+
{
|
|
10
|
+
question: '¿Qué es la huella de carbono de una página web?',
|
|
11
|
+
answer: 'Es la cantidad de gases de efecto invernadero, principalmente CO₂, que se emiten a la atmósfera como resultado de la energía consumida por los servidores, las redes de transmisión y el dispositivo del usuario para cargar y renderizar una web.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: '¿Cómo se mide el impacto de una web?',
|
|
15
|
+
answer: 'Se mide habitualmente en gramos de CO₂ equivalente (gCO₂e) por visita. Una web eficiente emite menos de 0,2 g de CO₂, mientras que una web poco optimizada puede superar los 2 o 3 g por carga.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: '¿Por qué internet contamina?',
|
|
19
|
+
answer: 'Porque toda la infraestructura necesaria (centros de datos, cables submarinos, routers WiFi, smartphones) funciona con electricidad que, en gran parte del mundo, todavía proviene de la quema de carbón o gas.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: '¿Cómo puedo reducir el CO₂ de mi web?',
|
|
23
|
+
answer: 'La forma más efectiva es reducir el peso de la página: optimiza imágenes (WebP), minimiza archivos CSS y JS, usa carga diferida (lazy loading) y elige un proveedor de hosting que utilice energías renovables.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const howToData = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Introduce la URL',
|
|
30
|
+
text: 'Escribe la dirección web de la página que quieres analizar en el campo de entrada.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Inicia el análisis',
|
|
34
|
+
text: 'Pulsa el botón de analizar para que nuestra herramienta obtenga el peso estimado de los recursos de la página.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Revisa tu calificación',
|
|
38
|
+
text: 'Obtén una nota de A+ a F basada en la eficiencia energética de la web analizada.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Aplica las mejoras',
|
|
42
|
+
text: 'Utiliza la lista de consejos personalizados para reducir el peso de tu web y su impacto ambiental.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faqData.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howToData.map((step, i) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
position: i + 1,
|
|
64
|
+
name: step.name,
|
|
65
|
+
text: step.text,
|
|
66
|
+
})),
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
70
|
+
'@context': 'https://schema.org',
|
|
71
|
+
'@type': 'SoftwareApplication',
|
|
72
|
+
name: title,
|
|
73
|
+
description,
|
|
74
|
+
applicationCategory: 'UtilityApplication',
|
|
75
|
+
operatingSystem: 'All',
|
|
76
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
77
|
+
inLanguage: 'es',
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const content: DigitalCarbonLocaleContent = {
|
|
81
|
+
slug,
|
|
82
|
+
title,
|
|
83
|
+
description,
|
|
84
|
+
ui: {
|
|
85
|
+
headInputs: 'Analizador de URL',
|
|
86
|
+
headResults: 'Resultado del Impacto',
|
|
87
|
+
headTips: 'Consejos de Optimización',
|
|
88
|
+
labelUrl: 'URL de la Página',
|
|
89
|
+
btnAnalyze: 'Analizar Web',
|
|
90
|
+
btnAnalyzing: 'Analizando...',
|
|
91
|
+
placeholderUrl: 'https://ejemplo.com',
|
|
92
|
+
errorInvalidUrl: 'Por favor, introduce una URL válida.',
|
|
93
|
+
errorFetchFailed: 'No se pudo analizar la web. Prueba con otra URL.',
|
|
94
|
+
|
|
95
|
+
resultTitle: 'Huella de Carbono Digital',
|
|
96
|
+
resultSubtitle: 'Eficiencia estimada de la página',
|
|
97
|
+
co2PerVisit: 'CO₂ por visita',
|
|
98
|
+
energyPerVisit: 'Energía consumida',
|
|
99
|
+
co2Annual: 'CO₂ anual (100k visitas)',
|
|
100
|
+
impactTitle: 'Impacto Real Anual',
|
|
101
|
+
impactTrees: 'Árboles necesarios',
|
|
102
|
+
impactKm: 'Km en coche (aprox.)',
|
|
103
|
+
treesLabel: 'Árboles',
|
|
104
|
+
kmLabel: 'Kilómetros',
|
|
105
|
+
|
|
106
|
+
ratingExcellent: 'Excelente. Esta página consume muy poca energía comparada con la media global.',
|
|
107
|
+
ratingVeryGood: 'Muy buena eficiencia. La página está bien optimizada y tiene un impacto mínimo.',
|
|
108
|
+
ratingGood: 'Eficiencia aceptable. Hay margen de mejora pero está por debajo de la media.',
|
|
109
|
+
ratingAverage: 'En la media. La página consume lo esperado en la web actual.',
|
|
110
|
+
ratingPoor: 'Por encima de la media. Considera optimizar imágenes, scripts y fuentes.',
|
|
111
|
+
ratingVeryPoor: 'Alto impacto. El peso de la página es significativo y debería reducirse.',
|
|
112
|
+
ratingCritical: 'Impacto muy alto. Hay una gran oportunidad de reducir el tamaño de la página.',
|
|
113
|
+
|
|
114
|
+
tipImages: 'Convierte imágenes a WebP o AVIF para reducir hasta un 70% su peso.',
|
|
115
|
+
tipCompression: 'Activa Brotli o GZIP en el servidor para comprimir recursos.',
|
|
116
|
+
tipLazyLoading: 'Usa lazy loading en imágenes y vídeos fuera del viewport.',
|
|
117
|
+
tipHosting: 'Elige un hosting con energía renovable (Cloudflare, Netlify, Vercel).',
|
|
118
|
+
tipThirdParty: 'Elimina scripts de analítica y widgets de terceros innecesarios.',
|
|
119
|
+
tipFonts: 'Carga solo los pesos tipográficos que realmente usas.',
|
|
120
|
+
tipCache: 'Configura cabeceras de caché HTTP para evitar re-descargas.',
|
|
121
|
+
},
|
|
122
|
+
faqTitle: 'Preguntas Frecuentes',
|
|
123
|
+
faq: faqData,
|
|
124
|
+
howTo: howToData,
|
|
125
|
+
bibliographyTitle: 'Referencias de Sostenibilidad Web',
|
|
126
|
+
bibliography: [
|
|
127
|
+
{ name: 'Sustainable Web Design Model', url: 'https://sustainablewebdesign.org/' },
|
|
128
|
+
{ name: 'Website Carbon Calculator', url: 'https://www.websitecarbon.com/' },
|
|
129
|
+
{ name: 'The Green Web Foundation', url: 'https://www.thegreenwebfoundation.org/' },
|
|
130
|
+
{ name: 'W3C - Web Sustainability Guidelines', url: 'https://w3c.github.io/sustyweb/' },
|
|
131
|
+
],
|
|
132
|
+
seo: [
|
|
133
|
+
{
|
|
134
|
+
type: 'title',
|
|
135
|
+
text: 'Calculadora de Huella de Carbono Digital: Cuánto CO₂ Genera tu Web',
|
|
136
|
+
level: 2,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Descubre el impacto medioambiental real de cualquier página web. Analiza su peso, estima los gramos de CO₂ por visita y aprende a reducir la contaminación digital de tus proyectos.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: '¿Qué es la huella de carbono digital de una web?',
|
|
145
|
+
level: 2,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'paragraph',
|
|
149
|
+
html: 'Cada vez que abres una página web, tu dispositivo, el router de casa, los cables submarinos y los servidores del otro lado del mundo consumen electricidad. Esa electricidad, en su mayor parte, sigue generándose quemando combustibles fósiles. El resultado: una cantidad real de <strong>CO₂ emitida a la atmósfera por cada visita</strong>.',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: 'La <strong>huella de carbono digital</strong> de un sitio web se mide en gramos de CO₂ equivalente (gCO₂e) por visita. Una web media genera aproximadamente 0,5 g de CO₂ por carga. Aunque parece insignificante, un sitio con 100.000 visitas mensuales puede emitir más de 600 kg de CO₂ al año, el equivalente a conducir un coche de gasolina más de 3.000 km.',
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
type: 'title',
|
|
157
|
+
text: '¿Cómo se calcula el CO₂ de una página web?',
|
|
158
|
+
level: 2,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'paragraph',
|
|
162
|
+
html: 'El modelo de cálculo utilizado se basa en los estándares del <strong>Sustainable Web Design Model</strong>, que divide el consumo energético en cuatro tramos principales:',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'card',
|
|
166
|
+
title: 'Transferencia de datos',
|
|
167
|
+
html: 'El peso total de la página determina cuántos gigabytes se transfieren. El estándar considera <code>0,81 kWh/GB</code> para la infraestructura de red.',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'card',
|
|
171
|
+
title: 'Dispositivo del usuario',
|
|
172
|
+
html: 'El ordenador o móvil que recibe la página consume energía. Se estima en <code>0,52 kWh/GB</code> de datos procesados.',
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
type: 'card',
|
|
176
|
+
title: 'Intensidad de carbono',
|
|
177
|
+
html: 'Se utiliza el valor de referencia mundial de <code>442 gCO₂/kWh</code> para convertir el consumo energético en emisiones.',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
type: 'card',
|
|
181
|
+
title: 'Factor de caché',
|
|
182
|
+
html: 'El modelo aplica un factor de <code>0,75</code> asumiendo que el 25% de los usuarios ya tienen recursos en caché.',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: 'title',
|
|
186
|
+
text: '¿Qué significa la calificación de eficiencia?',
|
|
187
|
+
level: 2,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'list',
|
|
191
|
+
items: [
|
|
192
|
+
'<strong>A+ y A:</strong> Menos de 0,2 g de CO₂. Sitios muy ligeros y optimizados.',
|
|
193
|
+
'<strong>B:</strong> Entre 0,2 y 0,5 g. Por debajo de la media global.',
|
|
194
|
+
'<strong>C:</strong> Entre 0,5 y 1 g. La media de la web actual.',
|
|
195
|
+
'<strong>D y E:</strong> Entre 1 y 4 g. Páginas pesadas con impacto relevante.',
|
|
196
|
+
'<strong>F:</strong> Más de 4 g por visita. Impacto muy alto.',
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'title',
|
|
201
|
+
text: 'Cómo reducir la huella de carbono de tu web',
|
|
202
|
+
level: 2,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
type: 'card',
|
|
206
|
+
title: 'Optimización de imágenes',
|
|
207
|
+
html: 'Usa formatos como <strong>WebP o AVIF</strong> para reducir el tamaño hasta un 80% sin pérdida de calidad.',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'card',
|
|
211
|
+
title: 'Compresión del servidor',
|
|
212
|
+
html: 'Activar <strong>Brotli o GZIP</strong> reduce el tamaño de los archivos de texto hasta un 70%.',
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'card',
|
|
216
|
+
title: 'Hosting sostenible',
|
|
217
|
+
html: 'Elegir un proveedor con <strong>energías renovables certificadas</strong> puede reducir el impacto casi un 100%.',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
type: 'card',
|
|
221
|
+
title: 'Caché y CDN',
|
|
222
|
+
html: 'Configura <strong>cabeceras de caché largas</strong> para evitar re-descargas innecesarias.',
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
type: 'title',
|
|
226
|
+
text: 'El impacto real de internet en el clima',
|
|
227
|
+
level: 2,
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
type: 'paragraph',
|
|
231
|
+
html: 'Internet representa entre el <strong>2% y el 4% de las emisiones globales de CO₂</strong>, cifra comparable a la industria de la aviación. Cada kilobyte que eliminas no solo hace tu web más rápida: reduce de forma medible la contaminación digital.',
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
235
|
+
};
|