aboutsummaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2025-03-14 23:33:56 +0100
committerAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2025-03-14 23:33:56 +0100
commite3c4bb2efa513973bc26949a8be62fbe66e31a4f (patch)
tree75a46cbde3ec2d36cfd33bff63ae7c65d145c182 /src/pages
parent54dab1e00b38693e96c801d0c5a020693a35bbda (diff)
Implement new page layouts for Home, Contact, Portfolio, and Trajectory; update header and footer for multilingual support
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/blog.xml.ts (renamed from src/pages/blog.xml.js)38
-rw-r--r--src/pages/en/contact.astro5
-rw-r--r--src/pages/en/index.astro5
-rw-r--r--src/pages/en/portfolio.astro5
-rw-r--r--src/pages/en/trajectory.astro5
-rw-r--r--src/pages/index.astro68
-rw-r--r--src/pages/portfolio/index.astro145
-rw-r--r--src/pages/trajectory.astro110
8 files changed, 45 insertions, 336 deletions
diff --git a/src/pages/blog.xml.js b/src/pages/blog.xml.ts
index b4fbe38..f165475 100644
--- a/src/pages/blog.xml.js
+++ b/src/pages/blog.xml.ts
@@ -1,19 +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
- }))
- })
-}
+import rss from '@astrojs/rss';
+import { getCollection } from 'astro:content';
+
+
+export async function GET(context: any) {
+ 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: any) => ({
+ title: post.data.title,
+ link: `${context.site}blog/${post.slug}`,
+ description: post.data.metaDescription,
+ pubDate: post.data.publishedAt
+ }))
+ })
+}
diff --git a/src/pages/en/contact.astro b/src/pages/en/contact.astro
new file mode 100644
index 0000000..ef69d6e
--- /dev/null
+++ b/src/pages/en/contact.astro
@@ -0,0 +1,5 @@
+---
+import ContactPageLayout from "../../layouts/ContactPageLayout.astro";
+---
+
+<ContactPageLayout /> \ No newline at end of file
diff --git a/src/pages/en/index.astro b/src/pages/en/index.astro
new file mode 100644
index 0000000..8c5945a
--- /dev/null
+++ b/src/pages/en/index.astro
@@ -0,0 +1,5 @@
+---
+import HomePageLayout from "../../layouts/HomePageLayout.astro";
+---
+
+<HomePageLayout /> \ No newline at end of file
diff --git a/src/pages/en/portfolio.astro b/src/pages/en/portfolio.astro
new file mode 100644
index 0000000..63840f5
--- /dev/null
+++ b/src/pages/en/portfolio.astro
@@ -0,0 +1,5 @@
+---
+import PortfolioPageLayout from "../../layouts/PortfolioPageLayout.astro";
+---
+
+<PortfolioPageLayout /> \ No newline at end of file
diff --git a/src/pages/en/trajectory.astro b/src/pages/en/trajectory.astro
new file mode 100644
index 0000000..3f5ff77
--- /dev/null
+++ b/src/pages/en/trajectory.astro
@@ -0,0 +1,5 @@
+---
+import TrajectoryPageLayout from "../../layouts/TrajectoryPageLayout.astro";
+---
+
+<TrajectoryPageLayout /> \ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
index fcef172..8ac64a6 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -1,69 +1,5 @@
---
-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/",
-};
+import HomePageLayout from "../layouts/HomePageLayout.astro";
---
-<Layout title="Inicio" description="Página de inicio de mi web">
- <script
- is:inline
- type="application/ld+json"
- slot="head-jsonld"
- set:html={JSON.stringify(schema)}
- />
-
- <h1>Inicio</h1>
- <p>
- Te doy la bienvenida a mi web. Me llamo Ariel, y aquí encontrarás
- información sobre mí y mis proyectos.
- </p>
-
- <h2>¿Quién soy?</h2>
- <p>
- 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.
- </p>
- <a href="/trajectory">Más información sobre mí</a>
-
- <h2>¿Qué hago?</h2>
- <p>
- Actualmente trabajo como desarrollador de software y admistrador
- Cloud en una empresa de tecnología. Me encargo de desarrollar
- aplicaciones web en PHP y desplegarlas en la nube de forma segura y eficiente.
- </p>
- <a href="/portfolio">Mi portfolio</a>
-
- <h2>Últimas entradas del blog</h2>
- <ul>
- {
- blogCollection.slice(0, 5).map((p) => {
- const date = Intl.DateTimeFormat("es-ES", {
- day: "2-digit",
- month: "short",
- year: "numeric",
- }).format(p.data.publishedAt);
- return (
- <li>
- <time datetime={p.data.publishedAt.toISOString()}>
- {date}
- </time>
- <a href={`/blog/${p.id}`}>{p.data.title}</a>
- </li>
- );
- })
- }
- </ul>
- <a href="/blog">Ver todas las entradas</a>
-
-</Layout>
+<HomePageLayout /> \ No newline at end of file
diff --git a/src/pages/portfolio/index.astro b/src/pages/portfolio/index.astro
index 43f776b..63840f5 100644
--- a/src/pages/portfolio/index.astro
+++ b/src/pages/portfolio/index.astro
@@ -1,146 +1,5 @@
---
-import Layout from "../../layouts/Layout.astro";
-import TechnologyBadge from "../../partials/TechnologyBadge.astro";
-
-const schema = {
- "@context": "https://schema.org",
- "@type": "WebPage",
- url: "https://www.costas.dev/portfolio",
- headline: "Mi portfolio de proyectos",
-};
+import PortfolioPageLayout from "../../layouts/PortfolioPageLayout.astro";
---
-<Layout title="Portfolio" description="Un listado de los proyectos en los que he trabajado en los últimos años, con las tecnologías utilizadas.">
- <script
- is:inline
- type="application/ld+json"
- slot="head-jsonld"
- set:html={JSON.stringify(schema)}
- ></script>
-
- <h1>Mi portfolio</h1>
-
- <p>
- En esta sección encontrarás una lista de los proyectos en los que he
- trabajado, tanto para terceros como propios. Si quieres más información
- sobre alguno de ellos, no dudes en
- <a href="/contact">contactar conmigo</a>.
- </p>
-
- <h2>Proyectos para terceros (freelance)</h2>
-
- <p>
- He realizado desarrollos de proyectos para terceros por encargo, siendo los más destacados los siguientes:
- </p>
-
- <section>
- <article>
- <h3>Extractor de pedidos compra online</h3>
-
- <p>
- Aplicación de escritorio que extrae los datos sobre los pedidos
- on-line de diversas plataformas (como WooCommerce, Amazon y
- Ebay). <a href="/portfolio/order-extractor">Más información</a>.
- </p>
-
- <TechnologyBadge code="java" />
- <TechnologyBadge code="windows" />
- </article>
-
- <article>
- <h3>Punto de información turística en móviles</h3>
-
- <p>
- Aplicación web de información turística, con QR, contenido en 360º e incrustado
- de YouTube. <a href="/portfolio/dynamic-tourist-info">Más información</a>.
- </p>
-
- <TechnologyBadge code="php" />
- <TechnologyBadge code="mysql" />
- </article>
-
- <article>
- <h3>Consultoría WordPress</h3>
-
- <p>
- Trabajos de mantenimiento, optimización y migración de sitios web WordPress y tiendas online WooCommerce.
- <a href="/portfolio/wp-consulting">Más información</a>.
- <a href="/contact">Contactar</a>.
- </p>
-
- <TechnologyBadge code="php" />
- </article>
- </section>
-
- <h2>Proyectos propios</h2>
-
- <p>
- Además, tengo varios proyectos propios que he desarrollado en mi tiempo, estando algunos de ellos en activo, y como código abierto.
- </p>
-
- <section>
- <article>
- <h3>Web personal</h3>
-
- <p>
- Desarrollado con Astro, un generador de sitios web estáticos que
- permite escribir contenido en Markdown y publicar en la web con un
- rendimiento excelente. Desplegado sobre Azure Static Web Apps.
- </p>
-
- <TechnologyBadge code="astro" />
- <TechnologyBadge code="azure" />
- </article>
-
- <article>
- <h3>MiEntreno (proyecto fin de ciclo)</h3>
-
- <p>
- Aplicación web para la gestión de entrenamientos deportivos, con
- una interfaz sencilla y fácil de usar. Desarrollado con ASP.NET Core,
- Razor Pages y SQL Server. <a href="/portfolio/mientreno">Más información</a>.
- <a href="https://github.com/arielcostas/mientreno">Código fuente</a>.
- </p>
-
- <TechnologyBadge code="dotnet" />
- <TechnologyBadge code="sqlserver" />
- <TechnologyBadge code="azure" />
- <TechnologyBadge code="rabbitmq" />
- </article>
-
- <article>
- <h3>Vigo 360</h3>
-
- <p>
- Blog sobre Vigo y su entorno, orientado principalmente a hablar de
- movilidad y toponimia. Desarrollado en Go, con base de datos MySQL
- y desplegado sobre VPS administrado por mí mismo.
- <a href="/portfolio/vigo-360">Más información</a>.
- <a href="https://github.com/arielcostas/vigo360">Código fuente</a>.
- <a href="https://vigo360.es">Web</a>.
- </p>
-
- <TechnologyBadge code="go" />
- <TechnologyBadge code="mysql" />
- <TechnologyBadge code="linux" />
- </article>
- </section>
-</Layout>
-
-<style>
- section {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
- gap: 1rem;
- }
-
- article {
- padding: 1rem;
- border: 1px solid var(--accent);
- border-radius: 0.5rem;
- }
-
- article h3 {
- margin-top: 0;
- }
-</style> \ No newline at end of file
+<PortfolioPageLayout /> \ No newline at end of file
diff --git a/src/pages/trajectory.astro b/src/pages/trajectory.astro
index 87557de..b1366e6 100644
--- a/src/pages/trajectory.astro
+++ b/src/pages/trajectory.astro
@@ -1,111 +1,5 @@
---
-import Layout from "../layouts/Layout.astro";
-
-const schema = {
- "@context": "https://schema.org",
- "@type": "WebPage",
- "url": "https://www.costas.dev/trajectory",
- "headline": "Mi trayectoria como desarrollador"
-};
+import TrajectoryPageLayout from "../layouts/TrajectoryPageLayout.astro";
---
-<Layout title="Trayectoria" description="Mi trayectoria como desarrollador de software, con información sobre mi educación, experiencia laboral y proyectos en los que he trabajado.">
- <script is:inline type="application/ld+json" slot="head-jsonld" set:html={JSON.stringify(schema)}></script>
-
- <h1>Mi trayectoria como desarrollador</h1>
-
- <p>
- 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.
- </p>
-
- <h2>Tecnologías que domino</h2>
-
- <p>
- 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
- <abbr title="Hypertext Markup Language">HTML5</abbr>,
- <abbr title="Cascading Style Sheets">CSS3</abbr>, JavaScript y
- TypeScript.
- </p>
-
- <p>
- También tengo experiencia con herramientas de DevOps como Docker,
- Kubernetes, Terraform y GitHub Actions; así como el ecosistema Cloud de
- Azure.
- </p>
-
- <h2>Educación y credenciales</h2>
-
- <ul>
- <li>
- <strong>Certificado oficial EF SET C2 Proficient</strong>:
- acredita mi nivel de inglés C2, el más alto según el Marco Común
- Europeo de Referencia para las Lenguas. <a
- href="https://cert.efset.org/es/Yxzc9L"
- >Ver certificado</a>
- </li>
-
- <li>
- <strong>Microsoft Certified: Azure Developer Associate</strong>:
- acredita mis conocimientos en el desarrollo de aplicaciones en
- Azure. <a
- href="https://learn.microsoft.com/api/credentials/share/en-us/ariel-costas/E15072607CCF2DA9?sharingId=149A1CD9C13790F4"
- >Ver credencial</a
- >.
- </li>
-
- <li>
- <strong>Microsoft Certified: Azure DevOps Engineer Expert</strong>:
- acredita mis conocimientos en la implementación de metodologías de
- DevOps en Azure con Azure DevOps y GitHub. <a
- href="https://learn.microsoft.com/api/credentials/share/en-us/ariel-costas/5FB94876A1701595?sharingId=149A1CD9C13790F4"
- >Ver credencial</a
- >
- </li>
-
- <li>
- <strong
- >Técnico Superior en Desarrollo de Aplicaciones Multiplataforma</strong
- >: título de formación profesional de grado superior, obtenido en el
- <a href="https://iesteis.es/">IES de Teis</a> en Vigo.
- </li>
- </ul>
-
- <h2>Experiencia laboral</h2>
-
- <h3>Estelaria Solutions (Q3 2023 - actualidad)</h3>
-
- <p>
- 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.
- </p>
-
- <p>
- 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.
- </p>
-
- <h3>FCT en Polygon-E (Q2 2023)</h3>
-
- <p>
- 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 <i>on-premise</i> con Windows Server,
- IIS y SQL Server.
- </p>
-
- <h2>Proyectos</h2>
-
- <p>
- Puedes encontrar los proyectos (públicos) en los que he trabajado en <a href="/portfolio">mi portfolio</a>
- y en mi <a href="https://github.com/arielcostas">perfil de GitHub</a>.
- </p>
-</Layout>
+<TrajectoryPageLayout />