diff --git a/frontend/app/pages/index.vue b/frontend/app/pages/index.vue index 0e39324..6d7cec6 100644 --- a/frontend/app/pages/index.vue +++ b/frontend/app/pages/index.vue @@ -5,17 +5,21 @@ import api from '~/composables/api' const { get, post } = api(); const { locale } = useI18n(); +const { t } = useI18n(); // Move useAsyncData to top level — NOT inside onMounted const { data: markdown } = await useAsyncData(`fixed-root`, async () => await queryCollection(`fixed`).path(`/fixed/${locale.value}/root`).first() -, {watch: [locale]}) + ,{watch: [locale]}) + +const { data: projects } = await useAsyncData(`projects`, async () => + (await queryCollection(`projects`).where('path', 'LIKE', `/projects/${locale.value}/%`).all()) + .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()), +{ watch: [locale] }) onMounted(async () => { try { - console.log("Getting") const response = await get('/test'); - console.log('API Response:', response); } catch (error) { console.error('API Error:', error); } @@ -28,7 +32,142 @@ onMounted(async () => { + +
+

{{ t('pages.projects_heading') }}

+
+
+ + + + + + {{ project.title }} +

{{ project.description }}

+
+ {{ tech }} +
+
+
+
- \ No newline at end of file + + + \ No newline at end of file diff --git a/frontend/content.config.ts b/frontend/content.config.ts index f767d36..05449d0 100644 --- a/frontend/content.config.ts +++ b/frontend/content.config.ts @@ -29,6 +29,18 @@ export default defineContentConfig({ date: z.string() }) }), + + projects: defineCollection({ + type: 'page', + source: 'projects/**/**.md', + schema: z.object({ + title: z.string(), + slug: z.string(), + description: z.string(), + link: z.string().optional(), + tech: z.array(z.string()).default([]) + }) + }), }, markdown: { tags: { diff --git a/frontend/content/projects/ca/codelearn-app.md b/frontend/content/projects/ca/codelearn-app.md new file mode 100644 index 0000000..fb95133 --- /dev/null +++ b/frontend/content/projects/ca/codelearn-app.md @@ -0,0 +1,8 @@ +--- +title: App de Codelearn +slug: codelearn-app +date: 2026-01-01 +description: Una aplicació full-stack de gestió d'aprenentatge construïda al meu temps a Codelearn. Autenticació d'usuaris, gestió de cursos i seguiment del progrés en temps real. +link: https://codelearn.cat +tech: ["Nuxt", "Express", "MongoDB", "TypeScript"] +--- diff --git a/frontend/content/projects/ca/ml-pipeline.md b/frontend/content/projects/ca/ml-pipeline.md new file mode 100644 index 0000000..cc8b240 --- /dev/null +++ b/frontend/content/projects/ca/ml-pipeline.md @@ -0,0 +1,7 @@ +--- +title: Eina Pipeline ML +slug: ml-pipeline +date: 2026-01-01 +description: Una eina modular de pipeline d'aprenentatge automàtic per al màster d'Aprenentatge Automàtic i Ciberseguretat de la UPC. Automatització del preprocesament, entrenament i avaluació de models. +tech: ["Python", "PyTorch", "Docker"] +--- diff --git a/frontend/content/projects/ca/portfolio-website.md b/frontend/content/projects/ca/portfolio-website.md new file mode 100644 index 0000000..3df50b6 --- /dev/null +++ b/frontend/content/projects/ca/portfolio-website.md @@ -0,0 +1,8 @@ +--- +title: Portfolio Website +slug: portfolio-website +date: 2026-01-01 +description: Aquesta mateixa pàgina web, construïda amb Nuxt 4, Vue 3 i SCSS. Estètica pixel-art, temes fosc/clar, personalització de colors d'accent i suport multilingüe en anglès, castellà i català. +link: https://aranroig.com +tech: ["Nuxt 4", "Vue 3", "SCSS", "Node.js", "MongoDB"] +--- diff --git a/frontend/content/projects/en/codelearn-app.md b/frontend/content/projects/en/codelearn-app.md new file mode 100644 index 0000000..440b5dd --- /dev/null +++ b/frontend/content/projects/en/codelearn-app.md @@ -0,0 +1,8 @@ +--- +title: Codelearn Full-Stack App +slug: codelearn-app +date: 2026-01-01 +description: A full-stack learning management application built during my time at Codelearn. Features user authentication, course management, and real-time progress tracking. +link: https://codelearn.cat +tech: ["Nuxt", "Express", "MongoDB", "TypeScript"] +--- diff --git a/frontend/content/projects/en/ml-pipeline.md b/frontend/content/projects/en/ml-pipeline.md new file mode 100644 index 0000000..f47cb22 --- /dev/null +++ b/frontend/content/projects/en/ml-pipeline.md @@ -0,0 +1,7 @@ +--- +title: ML Pipeline Tool +slug: ml-pipeline +date: 2026-01-01 +description: A modular machine learning pipeline tool for UPC's Machine Learning and Cybersecurity master's degree. Automates data preprocessing, model training, and evaluation workflows. +tech: ["Python", "PyTorch", "Docker"] +--- diff --git a/frontend/content/projects/en/portfolio-website.md b/frontend/content/projects/en/portfolio-website.md new file mode 100644 index 0000000..fcf6677 --- /dev/null +++ b/frontend/content/projects/en/portfolio-website.md @@ -0,0 +1,8 @@ +--- +title: Portfolio Website +slug: portfolio-website +date: 2026-01-01 +description: This very website, built with Nuxt 4, Vue 3, and SCSS. Features pixel-art aesthetics, dark/light themes, accent color customization, and multilingual support across English, Spanish, and Catalan. +link: https://aranroig.com +tech: ["Nuxt 4", "Vue 3", "SCSS", "Node.js", "MongoDB"] +--- diff --git a/frontend/content/projects/es/codelearn-app.md b/frontend/content/projects/es/codelearn-app.md new file mode 100644 index 0000000..7693cf1 --- /dev/null +++ b/frontend/content/projects/es/codelearn-app.md @@ -0,0 +1,8 @@ +--- +title: App de Codelearn +slug: codelearn-app +date: 2026-01-01 +description: Una aplicación full-stack de gestión de aprendizaje construida en mi tiempo en Codelearn. Autenticación de usuarios, gestión de cursos y seguimiento de progreso en tiempo real. +link: https://codelearn.cat +tech: ["Nuxt", "Express", "MongoDB", "TypeScript"] +--- diff --git a/frontend/content/projects/es/ml-pipeline.md b/frontend/content/projects/es/ml-pipeline.md new file mode 100644 index 0000000..0c86ca2 --- /dev/null +++ b/frontend/content/projects/es/ml-pipeline.md @@ -0,0 +1,7 @@ +--- +title: Herramienta Pipeline ML +slug: ml-pipeline +date: 2026-01-01 +description: Una herramienta modular de pipeline de aprendizaje automático para el máster de Aprendizaje Automático y Ciberseguridad de la UPC. Automatiza preprocesamiento, entrenamiento y evaluación de modelos. +tech: ["Python", "PyTorch", "Docker"] +--- diff --git a/frontend/content/projects/es/portfolio-website.md b/frontend/content/projects/es/portfolio-website.md new file mode 100644 index 0000000..23572e5 --- /dev/null +++ b/frontend/content/projects/es/portfolio-website.md @@ -0,0 +1,8 @@ +--- +title: Portfolio Website +slug: portfolio-website +date: 2026-01-01 +description: Esta página web, construida con Nuxt 4, Vue 3 y SCSS. Con estética pixel-art, temas oscuro/claro, personalización de colores de acento y soporte multilingue en inglés, español y catalán. +link: https://aranroig.com +tech: ["Nuxt 4", "Vue 3", "SCSS", "Node.js", "MongoDB"] +--- diff --git a/frontend/i18n/locales/ca.json b/frontend/i18n/locales/ca.json index e899c64..383e24b 100644 --- a/frontend/i18n/locales/ca.json +++ b/frontend/i18n/locales/ca.json @@ -27,6 +27,9 @@ "art": "art" } }, + "pages": { + "projects_heading": "Projectes" + }, "prefooter": "Aquesta pàgina web ha sigut construida per un humà.", "footer": "(C) 2026 Aran Roig. Tots els drets no sé que." } \ No newline at end of file diff --git a/frontend/i18n/locales/en.json b/frontend/i18n/locales/en.json index a122858..5af7e59 100644 --- a/frontend/i18n/locales/en.json +++ b/frontend/i18n/locales/en.json @@ -28,7 +28,8 @@ } }, "pages": { - "root": "" + "root": "", + "projects_heading": "Projects" }, "prefooter": "This webpage has been made by a human.", "footer": "(C) 2026 Aran Roig. All rights whatever." diff --git a/frontend/i18n/locales/es.json b/frontend/i18n/locales/es.json index 93682d5..286ff84 100644 --- a/frontend/i18n/locales/es.json +++ b/frontend/i18n/locales/es.json @@ -27,6 +27,9 @@ "art": "arte" } }, + "pages": { + "projects_heading": "Proyectos" + }, "prefooter": "Esta página web ha sido construida por un humano.", "footer": "(C) 2026 Aran Roig. Todos los derechos no se que." } \ No newline at end of file