@jjlmoya/utils-diy 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 +110 -0
- package/src/category/i18n/fr.ts +101 -0
- package/src/category/index.ts +25 -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 +57 -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/balusterCalculator/bibliography.astro +14 -0
- package/src/tool/balusterCalculator/component.astro +605 -0
- package/src/tool/balusterCalculator/i18n/en.ts +264 -0
- package/src/tool/balusterCalculator/i18n/es.ts +264 -0
- package/src/tool/balusterCalculator/i18n/fr.ts +264 -0
- package/src/tool/balusterCalculator/index.ts +33 -0
- package/src/tool/balusterCalculator/seo.astro +15 -0
- package/src/tool/balusterCalculator/ui.ts +15 -0
- package/src/tool/clayCalculator/bibliography.astro +14 -0
- package/src/tool/clayCalculator/component.astro +731 -0
- package/src/tool/clayCalculator/i18n/en.ts +183 -0
- package/src/tool/clayCalculator/i18n/es.ts +183 -0
- package/src/tool/clayCalculator/i18n/fr.ts +183 -0
- package/src/tool/clayCalculator/index.ts +33 -0
- package/src/tool/clayCalculator/seo.astro +15 -0
- package/src/tool/clayCalculator/ui.ts +19 -0
- package/src/tool/concreteCalculator/bibliography.astro +13 -0
- package/src/tool/concreteCalculator/component.astro +1089 -0
- package/src/tool/concreteCalculator/i18n/en.ts +201 -0
- package/src/tool/concreteCalculator/i18n/es.ts +201 -0
- package/src/tool/concreteCalculator/i18n/fr.ts +201 -0
- package/src/tool/concreteCalculator/index.ts +28 -0
- package/src/tool/concreteCalculator/seo.astro +14 -0
- package/src/tool/concreteCalculator/ui.ts +35 -0
- package/src/tool/cutOptimizer/bibliography.astro +13 -0
- package/src/tool/cutOptimizer/component.astro +825 -0
- package/src/tool/cutOptimizer/i18n/en.ts +178 -0
- package/src/tool/cutOptimizer/i18n/es.ts +178 -0
- package/src/tool/cutOptimizer/i18n/fr.ts +178 -0
- package/src/tool/cutOptimizer/index.ts +28 -0
- package/src/tool/cutOptimizer/optimizer.ts +199 -0
- package/src/tool/cutOptimizer/seo.astro +14 -0
- package/src/tool/cutOptimizer/ui.ts +25 -0
- package/src/tool/drillCalculator/bibliography.astro +13 -0
- package/src/tool/drillCalculator/component.astro +1210 -0
- package/src/tool/drillCalculator/engine.ts +63 -0
- package/src/tool/drillCalculator/i18n/en.ts +137 -0
- package/src/tool/drillCalculator/i18n/es.ts +137 -0
- package/src/tool/drillCalculator/i18n/fr.ts +137 -0
- package/src/tool/drillCalculator/index.ts +28 -0
- package/src/tool/drillCalculator/seo.astro +14 -0
- package/src/tool/drillCalculator/ui.ts +41 -0
- package/src/tool/drillSharpener/bibliography.astro +13 -0
- package/src/tool/drillSharpener/component.astro +712 -0
- package/src/tool/drillSharpener/engine.ts +42 -0
- package/src/tool/drillSharpener/i18n/en.ts +121 -0
- package/src/tool/drillSharpener/i18n/es.ts +121 -0
- package/src/tool/drillSharpener/i18n/fr.ts +121 -0
- package/src/tool/drillSharpener/index.ts +31 -0
- package/src/tool/drillSharpener/seo.astro +14 -0
- package/src/tool/drillSharpener/ui.ts +53 -0
- package/src/tool/epoxyCalculator/bibliography.astro +14 -0
- package/src/tool/epoxyCalculator/component.astro +888 -0
- package/src/tool/epoxyCalculator/i18n/en.ts +195 -0
- package/src/tool/epoxyCalculator/i18n/es.ts +195 -0
- package/src/tool/epoxyCalculator/i18n/fr.ts +195 -0
- package/src/tool/epoxyCalculator/index.ts +33 -0
- package/src/tool/epoxyCalculator/seo.astro +15 -0
- package/src/tool/epoxyCalculator/ui.ts +22 -0
- package/src/tool/furnitureFit/bibliography.astro +13 -0
- package/src/tool/furnitureFit/component.astro +552 -0
- package/src/tool/furnitureFit/engine.ts +51 -0
- package/src/tool/furnitureFit/i18n/en.ts +152 -0
- package/src/tool/furnitureFit/i18n/es.ts +152 -0
- package/src/tool/furnitureFit/i18n/fr.ts +152 -0
- package/src/tool/furnitureFit/index.ts +28 -0
- package/src/tool/furnitureFit/seo.astro +14 -0
- package/src/tool/furnitureFit/ui.ts +21 -0
- package/src/tool/mortarCalculator/bibliography.astro +13 -0
- package/src/tool/mortarCalculator/component.astro +1139 -0
- package/src/tool/mortarCalculator/i18n/en.ts +219 -0
- package/src/tool/mortarCalculator/i18n/es.ts +205 -0
- package/src/tool/mortarCalculator/i18n/fr.ts +220 -0
- package/src/tool/mortarCalculator/index.ts +24 -0
- package/src/tool/mortarCalculator/seo.astro +14 -0
- package/src/tool/mortarCalculator/ui.ts +37 -0
- package/src/tool/passepartoutCalculator/bibliography.astro +13 -0
- package/src/tool/passepartoutCalculator/component.astro +741 -0
- package/src/tool/passepartoutCalculator/i18n/en.ts +178 -0
- package/src/tool/passepartoutCalculator/i18n/es.ts +178 -0
- package/src/tool/passepartoutCalculator/i18n/fr.ts +178 -0
- package/src/tool/passepartoutCalculator/index.ts +28 -0
- package/src/tool/passepartoutCalculator/seo.astro +14 -0
- package/src/tool/passepartoutCalculator/ui.ts +17 -0
- package/src/tool/stairCalculator/bibliography.astro +52 -0
- package/src/tool/stairCalculator/component.astro +766 -0
- package/src/tool/stairCalculator/engine.ts +128 -0
- package/src/tool/stairCalculator/i18n/en.ts +149 -0
- package/src/tool/stairCalculator/i18n/es.ts +149 -0
- package/src/tool/stairCalculator/i18n/fr.ts +149 -0
- package/src/tool/stairCalculator/index.ts +31 -0
- package/src/tool/stairCalculator/seo.astro +211 -0
- package/src/tool/stairCalculator/ui.ts +109 -0
- package/src/tool/thermalExpansionCalculator/bibliography.astro +13 -0
- package/src/tool/thermalExpansionCalculator/component.astro +771 -0
- package/src/tool/thermalExpansionCalculator/engine.ts +23 -0
- package/src/tool/thermalExpansionCalculator/i18n/en.ts +174 -0
- package/src/tool/thermalExpansionCalculator/i18n/es.ts +174 -0
- package/src/tool/thermalExpansionCalculator/i18n/fr.ts +174 -0
- package/src/tool/thermalExpansionCalculator/index.ts +28 -0
- package/src/tool/thermalExpansionCalculator/seo.astro +14 -0
- package/src/tool/thermalExpansionCalculator/ui.ts +41 -0
- package/src/tool/voltageDropCalculator/bibliography.astro +13 -0
- package/src/tool/voltageDropCalculator/component.astro +1022 -0
- package/src/tool/voltageDropCalculator/i18n/en.ts +155 -0
- package/src/tool/voltageDropCalculator/i18n/es.ts +155 -0
- package/src/tool/voltageDropCalculator/i18n/fr.ts +148 -0
- package/src/tool/voltageDropCalculator/index.ts +28 -0
- package/src/tool/voltageDropCalculator/seo.astro +14 -0
- package/src/tool/voltageDropCalculator/ui.ts +22 -0
- package/src/tools.ts +16 -0
- package/src/types.ts +72 -0
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jjlmoya/utils-diy",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./src/index.ts",
|
|
6
|
+
"types": "./src/index.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.ts",
|
|
9
|
+
"./data": "./src/data.ts"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"dev": "astro dev",
|
|
19
|
+
"start": "astro dev",
|
|
20
|
+
"build": "astro build",
|
|
21
|
+
"preview": "astro preview",
|
|
22
|
+
"astro": "astro",
|
|
23
|
+
"lint": "eslint src/ --max-warnings 0 && stylelint \"src/**/*.{css,astro}\"",
|
|
24
|
+
"check": "astro check",
|
|
25
|
+
"type-check": "astro check",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"preversion": "npm run lint && npm run test",
|
|
28
|
+
"postversion": "git push && git push --tags",
|
|
29
|
+
"patch": "npm version patch",
|
|
30
|
+
"minor": "npm version minor",
|
|
31
|
+
"major": "npm version major"
|
|
32
|
+
},
|
|
33
|
+
"lint-staged": {
|
|
34
|
+
"*.{ts,tsx,astro}": [
|
|
35
|
+
"eslint --fix"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@iconify-json/mdi": "^1.2.3",
|
|
40
|
+
"@jjlmoya/utils-shared": "1.2.0",
|
|
41
|
+
"astro": "^6.1.2",
|
|
42
|
+
"astro-icon": "^1.1.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@astrojs/check": "^0.9.8",
|
|
46
|
+
"eslint": "^9.39.4",
|
|
47
|
+
"eslint-plugin-astro": "^1.6.0",
|
|
48
|
+
"eslint-plugin-no-comments": "^1.1.10",
|
|
49
|
+
"husky": "^9.1.7",
|
|
50
|
+
"lint-staged": "^16.4.0",
|
|
51
|
+
"postcss-html": "^1.8.1",
|
|
52
|
+
"schema-dts": "^1.1.2",
|
|
53
|
+
"stylelint": "^17.6.0",
|
|
54
|
+
"stylelint-config-standard": "^40.0.0",
|
|
55
|
+
"stylelint-declaration-strict-value": "^1.11.1",
|
|
56
|
+
"typescript": "^5.4.0",
|
|
57
|
+
"typescript-eslint": "^8.58.0",
|
|
58
|
+
"vitest": "^4.1.2"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'diy',
|
|
5
|
+
title: 'Tools and Calculators for DIY and Construction Projects',
|
|
6
|
+
description:
|
|
7
|
+
'Plan your DIY projects with free online tools. Clay shrinkage calculators, resin mixing, concrete, cut optimizers and stair layout tools.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'title',
|
|
11
|
+
text: 'Home Engineering and DIY Projects: From Design to Reality',
|
|
12
|
+
level: 2,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
type: 'paragraph',
|
|
16
|
+
html: 'The <strong>Do It Yourself (DIY)</strong> movement has evolved from a simple hobby into a form of technical and creative autonomy. This section provides a suite of <strong>free online tools</strong> designed for makers, craftspeople and construction enthusiasts seeking professional results. We apply mathematical models and technical standards so every cut, every mix and every structure is safe and precise.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
html: 'From calculating the exact concrete dosage to optimizing cuts on wooden boards, our utilities eliminate material waste and guarantee the integrity of your projects.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'title',
|
|
24
|
+
text: 'Construction and Renovation: Concrete, Mortar and Stairs',
|
|
25
|
+
level: 2,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'paragraph',
|
|
29
|
+
html: "The foundation of any structure is its mix. Our <strong>concrete mix calculator</strong> provides the exact dosage of cement, sand and gravel for any required volume. For fine masonry work, the <strong>mortar calculator</strong> adjusts lime-to-sand ratios for durable renders. Additionally, the stair layout tool uses <strong>Blondel's Law</strong> to guarantee comfortable, code-compliant steps.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: 'title',
|
|
33
|
+
text: 'Carpentry and Material Optimization',
|
|
34
|
+
level: 2,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'paragraph',
|
|
38
|
+
html: 'Material is expensive and waste is unacceptable. The <strong>cut optimizer</strong> calculates the best distribution of pieces across boards or strips, minimizing offcuts. For furniture projects, the <strong>"Does the furniture fit?"</strong> calculator analyzes door and elevator dimensions to avoid logistical surprises during assembly.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'title',
|
|
42
|
+
text: 'Crafts and New Materials: Clay and Epoxy Resin',
|
|
43
|
+
level: 2,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'paragraph',
|
|
47
|
+
html: 'Dynamic materials require phase-change calculations. In ceramics, the <strong>clay calculator</strong> estimates the shrinkage factor during drying and firing so your finished pieces have the exact desired dimensions. For resin pouring, our utility calculates total volume and mix ratio by weight or volume of components A and B, preventing bubbles and incomplete curing.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'title',
|
|
51
|
+
text: 'Electrical Safety and Technical Calculations',
|
|
52
|
+
level: 2,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'paragraph',
|
|
56
|
+
html: 'A bad electrical calculation can cause fires. Our <strong>voltage drop calculator</strong> determines the minimum cable cross-section needed based on line length and connected load (12V/24V/230V), ensuring your solar or domestic installations operate within current safety standards.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'list',
|
|
60
|
+
items: [
|
|
61
|
+
'<strong>Cost Savings:</strong> Minimize waste of expensive materials like resins, wood and metals through algorithmic optimization.',
|
|
62
|
+
'<strong>Structural Safety:</strong> Calculations based on construction standards (Blondel, local electrical codes) for safe projects.',
|
|
63
|
+
'<strong>Precision in Detail:</strong> Correction factors for thermal expansion, chemical shrinkage and assembly tolerances.',
|
|
64
|
+
'<strong>Offline-Ready Tools:</strong> Use them in the workshop or on-site without heavy apps.',
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'tip',
|
|
69
|
+
title: 'Execution Tip for the Job Site',
|
|
70
|
+
html: '<p><strong>Perfect Mix:</strong> Always add powder (cement/lime) to water, not the other way around. You will achieve more homogeneous hydration and avoid hard-to-dissolve lumps, guaranteeing the final strength of the material.</p>',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'title',
|
|
74
|
+
text: 'Budget Management: Cost Breakdown and Economic Optimization',
|
|
75
|
+
level: 2,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: 'paragraph',
|
|
79
|
+
html: "A project without a budget is a project that falls apart. Our cost calculator lets you break down the price of each material, estimated labor, tools and contingencies. By optimizing cuts and reducing waste by 20%, you save significantly. Documenting every expense from the start allows real-time adjustments if surprises arise, letting you decide whether to complete the project, reduce scope or seek additional funding before it's too late.",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
text: 'Sustainability and Recycled Materials in DIY',
|
|
84
|
+
level: 2,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'paragraph',
|
|
88
|
+
html: "Modern DIY is ecological. Reusing boards, recycling resins, leveraging construction offcuts is the current trend. Our tools include conversions for recycled materials: if you find an old 80cm door and need 25cm panels, the cut optimizer shows you exactly how to use it. Building with environmental awareness is not just responsible; it's cheaper and more creative.",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'title',
|
|
92
|
+
text: 'The democratization of personal manufacturing',
|
|
93
|
+
level: 2,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
type: 'paragraph',
|
|
97
|
+
html: 'Access to <strong>simplified engineering software</strong> enables anyone to execute projects that previously required years of specialization. These tools are the bridge between your idea and its physical realization, giving you the confidence of data to build the world around you.',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'stats',
|
|
101
|
+
columns: 2,
|
|
102
|
+
items: [
|
|
103
|
+
{ label: 'Optimization', value: '95%+ Material', icon: 'mdi:saw-blade' },
|
|
104
|
+
{ label: 'Safety', value: 'Standards-based', icon: 'mdi:ruler-square' },
|
|
105
|
+
{ label: 'Materials', value: 'Recoverable', icon: 'mdi:tools' },
|
|
106
|
+
{ label: 'Precision', value: 'Millimetric', icon: 'mdi:calculator' },
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'diy',
|
|
5
|
+
title: 'Herramientas y Calculadoras para Proyectos DIY y Construcción',
|
|
6
|
+
description:
|
|
7
|
+
'Planifica tus proyectos de bricolaje con herramientas gratuitas online. Calculadoras de contracción de arcilla, mezclas de resina, hormigón, optimizadores de corte y trazado de escaleras.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'title',
|
|
11
|
+
text: 'Ingeniería Doméstica y Proyectos DIY: Del Diseño a la Realidad',
|
|
12
|
+
level: 2,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
type: 'paragraph',
|
|
16
|
+
html: 'El movimiento <strong>Do It Yourself (DIY)</strong> ha dejado de ser un simple pasatiempo para convertirse en una forma de soberanía técnica y creativa. En esta sección, proporcionamos una suite de <strong>herramientas gratuitas online</strong> diseñadas para makers, artesanos y aficionados a la construcción que buscan resultados profesionales. Aplicamos modelos matemáticos y normativas técnicas para que cada corte, cada mezcla y cada estructura sea segura y precisa.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
html: 'Desde el cálculo de la dosificación exacta del hormigón hasta la optimización de cortes en tableros de madera, nuestras utilidades eliminan el desperdicio de material y garantizan la integridad de tus proyectos.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'title',
|
|
24
|
+
text: 'Construcción y Reformas: Hormigón, Morteros y Escaleras',
|
|
25
|
+
level: 2,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'paragraph',
|
|
29
|
+
html: 'La base de cualquier estructura es su mezcla. Nuestra calculadora de <strong>mezcla de hormigón</strong> permite obtener la dosificación exacta de cemento, arena y grava según el volumen necesario. Para trabajos de albañilería fina, la <strong>calculadora de morteros</strong> ajusta las proporciones de cal y arena para revocos duraderos. Además, el trazado de escaleras utiliza la <strong>Ley de Blondel</strong> para garantizar peldaños cómodos y normativos.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: 'title',
|
|
33
|
+
text: 'Carpintería y Optimización de Materiales',
|
|
34
|
+
level: 2,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'paragraph',
|
|
38
|
+
html: 'El material es caro y el desperdicio es inaceptable. El <strong>optimizador de cortes</strong> calcula la mejor distribución de piezas sobre listones o tableros, minimizando el sobrante. Para proyectos de mobiliario, la calculadora <strong>"¿Cabe el mueble?"</strong> analiza dimensiones de puertas y ascensores para evitar sorpresas logísticas durante el montaje.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'title',
|
|
42
|
+
text: 'Artesanía y Nuevos Materiales: Arcilla y Resina Epoxi',
|
|
43
|
+
level: 2,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'paragraph',
|
|
47
|
+
html: 'Los materiales dinámicos requieren cálculos de cambio de estado. En cerámica, la <strong>calculadora de arcilla</strong> estima el factor de contracción durante el secado y la cocción para que tus piezas finales tengan el tamaño exacto deseado. Para el vertido de resinas, nuestra utilidad calcula el volumen total y la proporción de mezcla según el peso o volumen del componente A y B, evitando burbujas y falta de curado.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'title',
|
|
51
|
+
text: 'Electricidad y Seguridad Técnica',
|
|
52
|
+
level: 2,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'paragraph',
|
|
56
|
+
html: 'Un mal cálculo eléctrico puede causar incendios. Nuestra calculadora de <strong>caída de tensión</strong> determina la sección mínima de cable necesaria según la longitud de la línea y la carga conectada (12V/24V/230V), asegurando que tus instalaciones solares o domésticas funcionen bajo estándares de seguridad vigentes.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'list',
|
|
60
|
+
items: [
|
|
61
|
+
'<strong>Ahorro de Costes:</strong> Minimiza el desperdicio de materiales caros como resinas, madera y metales mediante optimización algorítmica.',
|
|
62
|
+
'<strong>Seguridad Estructural:</strong> Cálculos basados en normativas de construcción (Blondel, REBT) para proyectos seguros.',
|
|
63
|
+
'<strong>Precisión en el Detalle:</strong> Factores de corrección para dilatación térmica, contracción química y holguras de montaje.',
|
|
64
|
+
'<strong>Herramientas Offline-Ready:</strong> Úsalas en el taller o la obra sin necesidad de apps pesadas.',
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'tip',
|
|
69
|
+
title: 'Tip de Ejecución en Obra',
|
|
70
|
+
html: '<p><strong>Mezcla Perfecta:</strong> Siempre añade los polvos (cemento/cal) al agua, no al revés. Lograrás una hidratación más homogénea y evitarás la formación de grumos difíciles de disolver, garantizando la resistencia final del material.</p>',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'title',
|
|
74
|
+
text: 'Gestión de Presupuesto: Desglose de Costes y Optimización Económica',
|
|
75
|
+
level: 2,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: 'paragraph',
|
|
79
|
+
html: 'Un proyecto sin presupuesto es un proyecto que se desmorona. Nuestra calculadora de costes permite desglosar el precio de cada material, mano de obra estimada, herramientas y contingencias. Al optimizar cortes, reducir desperdicio un 20%, ahorras significativamente. Documentar cada gasto desde el inicio facilita ajustes en tiempo real si aparecen sorpresas, permitiéndote decidir si completar el proyecto, reducir alcance o buscar financiación adicional antes de ser demasiado tarde.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
text: 'Sostenibilidad y Materiales Reciclados en DIY',
|
|
84
|
+
level: 2,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'paragraph',
|
|
88
|
+
html: 'El DIY moderno es ecológico. Reutilizar tableros, reciclar resinas, aprovechar descartes de obra es la tendencia actual. Nuestras herramientas incluyen conversiones para materiales reciclados: si encuentras una puerta vieja de 80cm y necesitas paneles de 25cm, el optimizador de cortes te muestra exactamente cómo aprovecharla. Construir con conciencia ambiental no solo es responsable; es más barato y creativo.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'title',
|
|
92
|
+
text: 'La democratización de la fabricación personal',
|
|
93
|
+
level: 2,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
type: 'paragraph',
|
|
97
|
+
html: 'El acceso a <strong>software de ingeniería simplificado</strong> permite que cualquier persona pueda ejecutar proyectos que antes requerían años de especialización. Estas herramientas son el puente entre tu idea y su realización física, dándote la confianza de los datos para construir el mundo que te rodea. Ya no necesitas un título en ingeniería civil para montar escaleras seguras; necesitas una calculadora y el conocimiento de dónde encontrar los estándares técnicos que la respaldan.',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'stats',
|
|
101
|
+
columns: 2,
|
|
102
|
+
items: [
|
|
103
|
+
{ label: 'Optimización', value: 'Material 95%+', icon: 'mdi:saw-blade' },
|
|
104
|
+
{ label: 'Seguridad', value: 'Normativa', icon: 'mdi:ruler-square' },
|
|
105
|
+
{ label: 'Materiales', value: 'Recuperación', icon: 'mdi:tools' },
|
|
106
|
+
{ label: 'Precisión', value: 'Milimétrica', icon: 'mdi:calculator' },
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'diy',
|
|
5
|
+
title: 'Outils et Calculateurs pour Projets DIY et Construction',
|
|
6
|
+
description:
|
|
7
|
+
"Planifiez vos projets de bricolage avec des outils gratuits en ligne. Calculateurs de retrait de l'argile, mélanges de résine, béton, optimiseurs de coupe et tracé d'escaliers.",
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'title',
|
|
11
|
+
text: 'Ingénierie Domestique et Projets DIY : Du Design à la Réalité',
|
|
12
|
+
level: 2,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
type: 'paragraph',
|
|
16
|
+
html: "Le mouvement <strong>Do It Yourself (DIY)</strong> est passé d'un simple passe-temps à une forme d'autonomie technique et créative. Cette section propose une suite d'<strong>outils gratuits en ligne</strong> conçus pour les makers, artisans et passionnés de construction qui recherchent des résultats professionnels. Nous appliquons des modèles mathématiques et des normes techniques pour que chaque coupe, chaque mélange et chaque structure soit sûr et précis.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
html: "Du calcul du dosage exact du béton à l'optimisation des coupes sur des planches de bois, nos utilitaires éliminent le gaspillage de matériaux et garantissent l'intégrité de vos projets.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'title',
|
|
24
|
+
text: 'Construction et Rénovation : Béton, Mortiers et Escaliers',
|
|
25
|
+
level: 2,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'paragraph',
|
|
29
|
+
html: "La base de toute structure est son mélange. Notre calculateur de <strong>mélange de béton</strong> fournit le dosage exact de ciment, sable et gravier pour tout volume requis. Pour les travaux de maçonnerie fine, le <strong>calculateur de mortier</strong> ajuste les proportions de chaux et sable pour des enduits durables. De plus, l'outil de tracé d'escaliers utilise la <strong>Loi de Blondel</strong> pour garantir des marches confortables et conformes aux normes.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: 'title',
|
|
33
|
+
text: 'Menuiserie et Optimisation des Matériaux',
|
|
34
|
+
level: 2,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'paragraph',
|
|
38
|
+
html: "Les matériaux sont coûteux et le gaspillage est inacceptable. L'<strong>optimiseur de coupes</strong> calcule la meilleure distribution des pièces sur des planches ou liteaux, minimisant les chutes. Pour les projets de mobilier, le calculateur <strong>\"Le meuble entre-t-il ?\"</strong> analyse les dimensions des portes et ascenseurs pour éviter les surprises logistiques lors du montage.",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'title',
|
|
42
|
+
text: 'Artisanat et Nouveaux Matériaux : Argile et Résine Époxy',
|
|
43
|
+
level: 2,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'paragraph',
|
|
47
|
+
html: "Les matériaux dynamiques nécessitent des calculs de changement de phase. En céramique, le <strong>calculateur d'argile</strong> estime le facteur de retrait pendant le séchage et la cuisson pour que vos pièces finales aient les dimensions exactes souhaitées. Pour le coulage de résines, notre utilitaire calcule le volume total et le ratio de mélange par poids ou volume des composants A et B, évitant les bulles et le durcissement incomplet.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'title',
|
|
51
|
+
text: 'Électricité et Sécurité Technique',
|
|
52
|
+
level: 2,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'paragraph',
|
|
56
|
+
html: "Un mauvais calcul électrique peut provoquer des incendies. Notre calculateur de <strong>chute de tension</strong> détermine la section minimale de câble nécessaire selon la longueur de ligne et la charge connectée (12V/24V/230V), garantissant que vos installations solaires ou domestiques fonctionnent selon les normes de sécurité en vigueur.",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'list',
|
|
60
|
+
items: [
|
|
61
|
+
"<strong>Économies de coûts :</strong> Minimisez le gaspillage de matériaux coûteux comme les résines, le bois et les métaux grâce à l'optimisation algorithmique.",
|
|
62
|
+
'<strong>Sécurité structurelle :</strong> Calculs basés sur les normes de construction (Blondel, normes électriques) pour des projets sûrs.',
|
|
63
|
+
"<strong>Précision dans les détails :</strong> Facteurs de correction pour la dilatation thermique, le retrait chimique et les jeux de montage.",
|
|
64
|
+
"<strong>Outils prêts hors ligne :</strong> Utilisez-les à l'atelier ou sur le chantier sans applications lourdes.",
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'tip',
|
|
69
|
+
title: "Conseil d'Exécution sur Chantier",
|
|
70
|
+
html: "<p><strong>Mélange Parfait :</strong> Ajoutez toujours les poudres (ciment/chaux) à l'eau, jamais l'inverse. Vous obtiendrez une hydratation plus homogène et éviterez la formation de grumeaux difficiles à dissoudre, garantissant la résistance finale du matériau.</p>",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'title',
|
|
74
|
+
text: 'Gestion du Budget : Décomposition des Coûts et Optimisation Économique',
|
|
75
|
+
level: 2,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: 'paragraph',
|
|
79
|
+
html: "Un projet sans budget est un projet qui s'effondre. Notre calculateur de coûts permet de décomposer le prix de chaque matériau, la main-d'œuvre estimée, les outils et les imprévus. En optimisant les coupes et en réduisant les déchets de 20%, vous économisez significativement.",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
text: 'La démocratisation de la fabrication personnelle',
|
|
84
|
+
level: 2,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'paragraph',
|
|
88
|
+
html: "L'accès à des <strong>logiciels d'ingénierie simplifiés</strong> permet à quiconque d'exécuter des projets qui nécessitaient auparavant des années de spécialisation. Ces outils sont le pont entre votre idée et sa réalisation physique, vous donnant la confiance des données pour construire le monde qui vous entoure.",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'stats',
|
|
92
|
+
columns: 2,
|
|
93
|
+
items: [
|
|
94
|
+
{ label: 'Optimisation', value: 'Matériau 95%+', icon: 'mdi:saw-blade' },
|
|
95
|
+
{ label: 'Sécurité', value: 'Normative', icon: 'mdi:ruler-square' },
|
|
96
|
+
{ label: 'Matériaux', value: 'Récupération', icon: 'mdi:tools' },
|
|
97
|
+
{ label: 'Précision', value: 'Millimétrique', icon: 'mdi:calculator' },
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DiyCategoryEntry } from '../types';
|
|
2
|
+
import { clayCalculator } from '../tool/clayCalculator/index';
|
|
3
|
+
import { epoxyCalculator } from '../tool/epoxyCalculator/index';
|
|
4
|
+
import { balusterCalculator } from '../tool/balusterCalculator/index';
|
|
5
|
+
import { mortarCalculator } from '../tool/mortarCalculator/index';
|
|
6
|
+
import { passepartoutCalculator } from '../tool/passepartoutCalculator/index';
|
|
7
|
+
import { concreteCalculator } from '../tool/concreteCalculator/index';
|
|
8
|
+
import { cutOptimizer } from '../tool/cutOptimizer/index';
|
|
9
|
+
import { voltageDropCalculator } from '../tool/voltageDropCalculator/index';
|
|
10
|
+
import { furnitureFit } from '../tool/furnitureFit/index';
|
|
11
|
+
import { thermalExpansionCalculator } from '../tool/thermalExpansionCalculator/index';
|
|
12
|
+
import { drillCalculator } from '../tool/drillCalculator/index';
|
|
13
|
+
import { stairCalculator } from '../tool/stairCalculator/index';
|
|
14
|
+
import { drillSharpener } from '../tool/drillSharpener/index';
|
|
15
|
+
|
|
16
|
+
export const diyCategory: DiyCategoryEntry = {
|
|
17
|
+
icon: 'mdi:hand',
|
|
18
|
+
tools: [clayCalculator, epoxyCalculator, balusterCalculator, mortarCalculator, passepartoutCalculator, concreteCalculator, cutOptimizer, voltageDropCalculator, furnitureFit, thermalExpansionCalculator, drillCalculator, stairCalculator, drillSharpener],
|
|
19
|
+
i18n: {
|
|
20
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
21
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
22
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { diyCategory } from './index';
|
|
4
|
+
import type { KnownLocale } from '../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await diyCategory.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
15
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface NavItem {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
href: string;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
categoryTitle: string;
|
|
11
|
+
tools?: NavItem[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const { categoryTitle, tools = [] } = Astro.props;
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<nav class="preview-nav-sidebar">
|
|
18
|
+
<div class="sidebar-header">
|
|
19
|
+
<h3>{categoryTitle}</h3>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<ul class="tools-list">
|
|
23
|
+
{tools.map((tool) => (
|
|
24
|
+
<li>
|
|
25
|
+
<a
|
|
26
|
+
href={tool.href}
|
|
27
|
+
class:list={['tool-link', { active: tool.isActive }]}
|
|
28
|
+
>
|
|
29
|
+
<span class="tool-title">{tool.title}</span>
|
|
30
|
+
</a>
|
|
31
|
+
</li>
|
|
32
|
+
))}
|
|
33
|
+
</ul>
|
|
34
|
+
</nav>
|
|
35
|
+
|
|
36
|
+
<style>
|
|
37
|
+
.preview-nav-sidebar {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
height: 100%;
|
|
41
|
+
background: var(--bg-surface, #0f172a);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sidebar-header {
|
|
45
|
+
padding: 2rem 1.5rem 1.5rem;
|
|
46
|
+
border-bottom: 1px solid var(--border-color, #1e293b);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.sidebar-header h3 {
|
|
50
|
+
margin: 0;
|
|
51
|
+
font-size: 0.75rem;
|
|
52
|
+
font-weight: 900;
|
|
53
|
+
text-transform: uppercase;
|
|
54
|
+
letter-spacing: 0.1em;
|
|
55
|
+
color: var(--text-muted, #94a3b8);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.tools-list {
|
|
59
|
+
list-style: none;
|
|
60
|
+
margin: 0;
|
|
61
|
+
padding: 0.5rem 0;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
gap: 0.25rem;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.tools-list li {
|
|
68
|
+
margin: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.tool-link {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
padding: 0.75rem 1.5rem;
|
|
75
|
+
color: var(--text-muted, #94a3b8);
|
|
76
|
+
text-decoration: none;
|
|
77
|
+
font-size: 0.9375rem;
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
80
|
+
border-left: 3px solid transparent;
|
|
81
|
+
position: relative;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.tool-link:hover {
|
|
85
|
+
color: var(--text-base, #f1f5f9);
|
|
86
|
+
background: rgba(255, 255, 255, 0.08);
|
|
87
|
+
padding-left: 1.75rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.tool-link.active {
|
|
91
|
+
color: var(--accent, #f43f5e);
|
|
92
|
+
background: rgba(244, 63, 94, 0.15);
|
|
93
|
+
border-left-color: var(--accent, #f43f5e);
|
|
94
|
+
font-weight: 600;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.tool-link.active::before {
|
|
98
|
+
content: '';
|
|
99
|
+
position: absolute;
|
|
100
|
+
left: 0;
|
|
101
|
+
top: 50%;
|
|
102
|
+
transform: translateY(-50%);
|
|
103
|
+
width: 3px;
|
|
104
|
+
height: 24px;
|
|
105
|
+
background: var(--accent, #f43f5e);
|
|
106
|
+
border-radius: 0 2px 2px 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.tool-title {
|
|
110
|
+
display: block;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
text-overflow: ellipsis;
|
|
113
|
+
white-space: nowrap;
|
|
114
|
+
}
|
|
115
|
+
</style>
|
|
116
|
+
|