From fe7c149811f2e20c055ad0375aff05d29491efb4 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero <94913521+arielcostas@users.noreply.github.com> Date: Sat, 4 May 2024 01:05:04 +0200 Subject: Rebuild the site in Astro Add licence Update site name in header to match README.md Add missing metadescription, opengraph and link to RSS Update Astro configuration to include sitemap integration with priority and changefreq settings New post --- src/pages/blog.astro | 72 ++++++++++++++++++ src/pages/blog.xml.js | 19 +++++ src/pages/blog/[slug].astro | 59 +++++++++++++++ src/pages/index.astro | 64 ++++++++++++++++ src/pages/portfolio.astro | 175 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 389 insertions(+) create mode 100644 src/pages/blog.astro create mode 100644 src/pages/blog.xml.js create mode 100644 src/pages/blog/[slug].astro create mode 100644 src/pages/index.astro create mode 100644 src/pages/portfolio.astro (limited to 'src/pages') diff --git a/src/pages/blog.astro b/src/pages/blog.astro new file mode 100644 index 0000000..e533fb6 --- /dev/null +++ b/src/pages/blog.astro @@ -0,0 +1,72 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "../layouts/Layout.astro"; + +const blogCollection = (await getCollection("blog")).sort((a, b) => { + return b.data.publishedAt.getTime() - a.data.publishedAt.getTime(); +}); + +const groupedPosts = blogCollection.reduce( + (acc: Record, post) => { + const year = post.data.publishedAt.getFullYear(); + const month = post.data.publishedAt.getMonth() + 1; + const key = `${year}-${month}`; + if (!acc[key]) { + acc[key] = []; + } + acc[key].push(post); + return acc; + }, + {}, +); + +function humaniseDate(date: Date) { + const result = date.toLocaleDateString("es-ES", { + month: "long", + year: "numeric", + }); + return result.charAt(0).toUpperCase() + result.slice(1); +} + +const schema = { + "@context": "https://schema.org", + "@type": "Blog", + "headline": "Blog de Ariel Costas", + "description": "En este blog encontrarás artículos sobre desarrollo, tecnología y otras temáticas que pueda querer compartir. Disclaimer de siempre: las opiniones son mías, y no representan a ninguna empresa o institución.", + "publisher": { + "@type": "Person", + "name": "Ariel Costas", + }, + "author": { + "@type": "Person", + "name": "Ariel Costas", + } +}; +--- + + + + +

Blog de Ariel Costas

+ +

+ En este blog encontrarás artículos sobre desarrollo, tecnología y otras + temáticas que pueda querer compartir. Disclaimer de siempre: las + opiniones son mías, y no representan a ninguna empresa o institución. +

+ + { + Object.entries(groupedPosts).map(([key, posts]) => ( +
+

{humaniseDate(new Date(key))}

+ +
+ )) + } +
diff --git a/src/pages/blog.xml.js b/src/pages/blog.xml.js new file mode 100644 index 0000000..ec8d424 --- /dev/null +++ b/src/pages/blog.xml.js @@ -0,0 +1,19 @@ +import rss from '@astrojs/rss'; +import { getCollection } from 'astro:content'; + + +export async function GET(context) { + const collection = await getCollection('blog'); + + return rss({ + title: "Blog de Ariel Costas", + description: "Artículos del blog de Ariel Costas", + site: context.site, + items: collection.map((post) => ({ + title: post.data.title, + link: `${context.site}blog/${post.slug}`, + description: post.data.metaDescription, + pubDate: post.data.publishedAt + })) + }) +} \ No newline at end of file diff --git a/src/pages/blog/[slug].astro b/src/pages/blog/[slug].astro new file mode 100644 index 0000000..f9ceec1 --- /dev/null +++ b/src/pages/blog/[slug].astro @@ -0,0 +1,59 @@ +--- +import type { GetStaticPaths } from "astro"; +import Layout from "../../layouts/Layout.astro"; +import { getCollection } from "astro:content"; + +export const getStaticPaths = (async () => { + const entries = await getCollection("blog"); + return entries.map((entry) => ({ + params: { slug: entry.slug }, + props: { entry }, + })); +}) satisfies GetStaticPaths; + +const { entry } = Astro.props; +const { Content } = await entry.render(); + +const formattedDate = new Date(entry.data.publishedAt).toLocaleDateString( + "es-ES", + { + year: "numeric", + month: "long", + day: "numeric", + weekday: "long", + }, +); + +const schema = { + "@context": "https://schema.org", + "@type": "BlogPosting", + headline: entry.data.title, + datePublished: entry.data.publishedAt.toISOString(), + author: { + "@type": "Person", + name: "Ariel Costas Guerrero", + }, + publisher: { + "@type": "Person", + name: "Ariel Costas Guerrero", + logo: { + "@type": "ImageObject", + url: "https://www.costas.dev/favicon.png", + }, + }, +}; +--- + + + + +

{entry.data.title}

+ + Publicado el + + + + +
diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..abf3acd --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,64 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "../layouts/Layout.astro"; + +const blogCollection = (await getCollection("blog")).sort((a, b) => { + return b.data.publishedAt.getTime() - a.data.publishedAt.getTime(); +}); + +const schema = { + "@context": "http://schema.org", + "@type": "WebSite", + id: "https://www.costas.dev/", + url: "https://www.costas.dev/", +}; +--- + + + + +

Inicio

+

+ Te doy la bienvenida a mi web. Aquí encontrarás información sobre mí, + mis proyectos y mis intereses. Esta web está creada con el generador + Hugo y un tema creado por mí desde cero. +

+

¿Quién soy?

+

+ Soy un desarrollador web que le gusta aprender cosas nuevas y compartir + su conocimiento. Me gusta la programación, el diseño web y la + creatividad. Me encanta crear cosas nuevas y aprender de los demás. +

+ +

¿Qué hago?

+

+ Actualmente trabajo como desarrollador de software y admistrador de + Cloud en una empresa de tecnología. Me encargo de desarrollar + aplicaciones web y desplegarlas en la nube de forma segura y eficiente. +

+ + Mi portafolio + +

Últimas entradas del blog

+ + + Ver todas las entradas +
diff --git a/src/pages/portfolio.astro b/src/pages/portfolio.astro new file mode 100644 index 0000000..c0eb7bc --- /dev/null +++ b/src/pages/portfolio.astro @@ -0,0 +1,175 @@ +--- +import Layout from "../layouts/Layout.astro"; + +const schema = { + "@context": "https://schema.org", + "@type": "WebPage", + "url": "https://www.costas.dev/portfolio", + "headline": "Mi trayectoria como desarrollador" +}; +--- + + + + +

Mi trayectoria como desarrollador

+ +

+ Soy un desarrollador de software que vive en Vigo, España. Me gusta + mucho la tecnología, y me gusta aprender cosas nuevas. Me dedico + profesionalmente al desarrollo de software en todos sus ámbitos: desde + el diseño de la arquitectura, la implementación y el despliegue en + producción, pasando por otros aspectos como la experiencia de usuario, + la accesibilidad y la seguridad. +

+ +

Tecnologías que domino

+ +

+ Domino principalmente el ecosistema de Microsoft: .NET (C#), ASP.NET + Core, SQL Server, Azure y Azure DevOps. También tengo experiencia con + otros lenguajes y tecnologías, como PHP, Python y Java. Además, tengo + conocimientos de frontend con + HTML5, + CSS3, JavaScript y + TypeScript. +

+ +

+ También tengo experiencia con herramientas de DevOps como Docker, + Kubernetes, Terraform y GitHub Actions; así como el ecosistema Cloud de + Azure. +

+ +

Educación y credenciales

+ + + +

Experiencia laboral

+ +

Estelaria Solutions (Q3 2023 - actualidad)

+ +

+ Desarrollo de aplicaciones full-stack, principalmente en PHP con + Symfony, MongoDB y JavaScript Vanilla. Además, implementé una cantidad + considerable de mejoras en usabilidad, accesibilidad y rendimiento. +

+ +

+ También me encargo de la gestión de la infraestructura en AWS, y de la + implementación de herramientas de colaboración como Jira y GitHub. +

+ +

FCT en Polygon-E (Q2 2023)

+ +

+ Realicé mis prácticas de formación profesional en la empresa Polygon-E, + donde desarrollé varias aplicaciones de gestión interna con ASP.NET Core + y Blazor, desplegando sobre entornos on-premise con Windows Server, + IIS y SQL Server. +

+ +

Proyectos para terceros (freelance)

+ +

+ En contadas ocasiones, he realizado proyectos para terceros por encargo: +

+ + + +

Proyectos propios

+ +

+ Además, tengo varios proyectos propios que he desarrollado en mi tiempo + libre: +

+ + +
-- cgit v1.3