Extractor de pedidos compra online
- -- Aplicación de escritorio que extrae los datos sobre los pedidos - on-line de diversas plataformas (como WooCommerce, Amazon y - Ebay). Más información. -
- -From e3c4bb2efa513973bc26949a8be62fbe66e31a4f Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero <94913521+arielcostas@users.noreply.github.com> Date: Fri, 14 Mar 2025 23:33:56 +0100 Subject: Implement new page layouts for Home, Contact, Portfolio, and Trajectory; update header and footer for multilingual support --- astro.config.mjs | 22 ++++- src/data/blog/mapa-facil-protomaps.md | 78 +++++++++--------- src/i18n/en.json | 89 ++++++++++++++++++++ src/i18n/es.json | 89 ++++++++++++++++++++ src/i18n/index.ts | 34 ++++++++ src/layouts/ContactPageLayout.astro | 99 ++++++++++++++++++++++ src/layouts/HomePageLayout.astro | 62 ++++++++++++++ src/layouts/Layout.astro | 28 +++++-- src/layouts/PortfolioPageLayout.astro | 113 +++++++++++++++++++++++++ src/layouts/TrajectoryPageLayout.astro | 81 ++++++++++++++++++ src/pages/blog.xml.js | 19 ----- src/pages/blog.xml.ts | 19 +++++ src/pages/en/contact.astro | 5 ++ src/pages/en/index.astro | 5 ++ src/pages/en/portfolio.astro | 5 ++ src/pages/en/trajectory.astro | 5 ++ src/pages/index.astro | 68 +--------------- src/pages/portfolio/index.astro | 145 +-------------------------------- src/pages/trajectory.astro | 110 +------------------------ src/partials/Footer.astro | 26 +++--- src/partials/Header.astro | 17 ++-- styles/shared.scss | 3 + 22 files changed, 719 insertions(+), 403 deletions(-) create mode 100644 src/i18n/en.json create mode 100644 src/i18n/es.json create mode 100644 src/i18n/index.ts create mode 100644 src/layouts/ContactPageLayout.astro create mode 100644 src/layouts/HomePageLayout.astro create mode 100644 src/layouts/PortfolioPageLayout.astro create mode 100644 src/layouts/TrajectoryPageLayout.astro delete mode 100644 src/pages/blog.xml.js create mode 100644 src/pages/blog.xml.ts create mode 100644 src/pages/en/contact.astro create mode 100644 src/pages/en/index.astro create mode 100644 src/pages/en/portfolio.astro create mode 100644 src/pages/en/trajectory.astro diff --git a/astro.config.mjs b/astro.config.mjs index 843c997..12285a1 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -2,16 +2,30 @@ import sitemap from '@astrojs/sitemap'; import { defineConfig } from 'astro/config'; import mdx from '@astrojs/mdx'; +import { DEFAULT_LANGUAGE, LANGUAGE_CODES } from './src/i18n'; export default defineConfig({ compressHTML: true, site: "https://www.costas.dev", - integrations: [sitemap({ - priority: 0.5, - changefreq: 'weekly' - }), mdx()], + i18n: { + defaultLocale: DEFAULT_LANGUAGE, + locales: LANGUAGE_CODES, + routing: { + prefixDefaultLocale: false, + fallbackType: 'redirect', + redirectToDefaultLocale: true + } + }, + integrations: [ + sitemap({ + priority: 0.5, + changefreq: 'weekly' + }), + mdx() + ], build: { assets: 'assets', inlineStylesheets: 'never', }, + scopedStyleStrategy: 'where' }); \ No newline at end of file diff --git a/src/data/blog/mapa-facil-protomaps.md b/src/data/blog/mapa-facil-protomaps.md index 43f5309..acdc13b 100644 --- a/src/data/blog/mapa-facil-protomaps.md +++ b/src/data/blog/mapa-facil-protomaps.md @@ -46,46 +46,46 @@ Si estás usando tecnologías JavaScript (ya sea Vite con algún framework, o As ```html -
- - - - - - - - - - - - + + + + + + + + + + + + + Y luego el archivo `miestilo.json` puedes descargarlo de [maps.protomaps.com](https://maps.protomaps.com/#map=0.89/0/0&theme=light&lang=en&tiles=https://demo-bucket.protomaps.com/v4.pmtiles&local_sprites=true) clicando en "Get style JSON" y guardándolo en tu servidor. Cambias la ruta a tu pmtiles y ya. Y puedes usar cualquier otro estilo para MapLibre, como los de [OpenMapTiles](https://openmaptiles.org/styles/) mismamente, o hacer uno propio con algo como [Maputnik](https://maputnik.github.io/editor/). -Y con esto, ya tienes un mapa vectorial personalizado de Barcelona, servido desde tu servidor estático, sin tener que preocuparte de configurar un servidor de mapas ni costes adicionales. Y puedes personalizarlo todo lo que quieras, desde los colores hasta los datos que se muestran. Sin cargar pesados SDKs desde CDNs, sin depender de terceros, y sin el riesgo de una factura deorbitada porque te pasaste de peticiones. \ No newline at end of file +Y con esto, ya tienes un mapa vectorial personalizado de Barcelona, servido desde tu servidor estático, sin tener que preocuparte de configurar un servidor de mapas ni costes adicionales. Y puedes personalizarlo todo lo que quieras, desde los colores hasta los datos que se muestran. Sin cargar pesados SDKs desde CDNs, sin depender de terceros, y sin el riesgo de una factura deorbitada porque te pasaste de peticiones. diff --git a/src/i18n/en.json b/src/i18n/en.json new file mode 100644 index 0000000..1c4c1b1 --- /dev/null +++ b/src/i18n/en.json @@ -0,0 +1,89 @@ +{ + "header": { + "home": "Home", + "trajectory": "Trajectory", + "portfolio": "Portfolio", + "blog": "Blog", + "contact": "Contact" + }, + "footer": { + "copyright": "All rights reserved.", + "contentLicencedUnder": "Unless otherwise stated, the content of this site is licensed under", + "sourceCodeAvailableOn": "Source code for this site is available on", + "andIsLicencedUnder": "and is licenced under", + "eupl": "European Union Public Licence" + }, + "contactPage": { + "title": "Contact", + "description": "The ways to contact me, either by email, phone or social networks.", + "headline": "Get in touch with me!", + "enableJs": "JavaScript must be enabled to view the email address and phone number. This is done to prevent scrapers and spam.", + "intro": "The easiest way to contact me is through my email address: Enable JS. You can also use WhatsApp with the phone number Enable JS.", + "socialMedia": "You can also find me on some social networks:" + }, + "homePage": { + "title": "Home", + "description": "Homepage of my website", + "welcome": "Welcome to my website. My name is Ariel, and here you will find information about me and my projects.", + "whoAmI": "Who am I?", + "whoAmIDesc": "I am a web developer who likes to learn new things and share knowledge. I enjoy programming, web design, and creativity. I love creating new things and learning from others.", + "moreAboutMe": "More about me", + "whatIDo": "What do I do?", + "whatIDoDesc": "I currently work as a software developer and Cloud administrator at a technology company. I develop web applications in PHP and deploy them in the cloud securely and efficiently.", + "myPortfolio": "My portfolio", + "latestBlogPosts": "Latest blog posts", + "viewAllPosts": "View all posts" + }, + "trajectoryPage": { + "title": "Trajectory", + "description": "My trajectory as a software developer, with information about my education, work experience and projects I have worked on.", + "headline": "My trajectory as a developer", + "intro": "I am a software developer living in Vigo, Spain. I love technology and I enjoy learning new things. I am professionally dedicated to software development in all its aspects: from architecture design, implementation and production deployment, to other aspects such as user experience, accessibility and security.", + "techTitle": "Technologies I master", + "techDescription1": "I mainly master the Microsoft ecosystem: .NET (C#), ASP.NET Core, SQL Server, Azure and Azure DevOps. I also have experience with other languages and technologies, such as PHP, Python and Java. Additionally, I have frontend knowledge with HTML5, CSS3, JavaScript and TypeScript.", + "techDescription2": "I also have experience with DevOps tools such as Docker, Kubernetes, Terraform and GitHub Actions; as well as the Azure Cloud ecosystem.", + "educationTitle": "Education and credentials", + "efsetCert1": "Official EF SET C2 Proficient Certificate", + "efsetCert2": ": certifies my C2 English level, the highest according to the Common European Framework of Reference for Languages.", + "viewCertificate": "View certificate", + "azureDeveloperCert1": "Microsoft Certified: Azure Developer Associate", + "azureDeveloperCert2": ": certifies my knowledge in Azure application development.", + "viewCredential": "View credential", + "azureDevOpsCert1": "Microsoft Certified: Azure DevOps Engineer Expert", + "azureDevOpsCert2": ": certifies my knowledge in implementing DevOps methodologies in Azure with Azure DevOps and GitHub.", + "higherTechCert1": "Higher Technical Certificate in Multiplatform Application Development", + "higherTechCert2": ": higher vocational training degree, obtained at", + "higherTechCert3": "IES de Teis", + "higherTechCert4": "in Vigo.", + "experienceTitle": "Work experience", + "estelaria1": "Estelaria Solutions (Q3 2023 - present)", + "estelaria2": "Full-stack application development, mainly in PHP with Symfony, MongoDB and Vanilla JavaScript. In addition, I implemented a considerable number of improvements in usability, accessibility and performance.", + "estelaria3": "I am also responsible for managing the infrastructure on AWS, and implementing collaboration tools such as Jira and GitHub.", + "polygon1": "Internship at Polygon-E (Q2 2023)", + "polygon2": "I did my professional training internship at Polygon-E, where I developed several internal management applications with ASP.NET Core and Blazor, deploying on on-premise environments with Windows Server, IIS and SQL Server.", + "projectsTitle": "Projects", + "projectsDescription": "You can find the (public) projects I have worked on in my portfolio and on my GitHub profile." + }, + "portfolioPage": { + "title": "Portfolio", + "description": "A list of projects I have worked on in recent years, with the technologies used.", + "headline": "My portfolio", + "intro": "In this section, you will find a list of the projects I have worked on, both for third parties and my own. If you would like more information about any of them, please do not hesitate to contact me.", + "freelanceTitle": "Projects for third parties (freelance)", + "freelanceDesc": "I have developed projects for third parties by commission, the most notable being the following:", + "orderExtractorTitle": "Online Order Purchase Extractor", + "orderExtractorDesc": "Desktop application that extracts data about online orders from various platforms (such as WooCommerce, Amazon, and eBay). More information.", + "touristInfoTitle": "Tourist Information Point on Mobile Devices", + "touristInfoDesc": "Web application for tourist information, with QR codes, 360° content, and YouTube embedding. More information.", + "wpConsultingTitle": "WordPress Consulting", + "wpConsultingDesc": "Maintenance, optimisation, and migration work for WordPress websites and WooCommerce online shops. More information. Contact.", + "ownProjectsTitle": "My own projects", + "ownProjectsDesc": "Additionally, I have several personal projects that I have developed in my own time, some of which are active and open source.", + "personalWebTitle": "Personal Website", + "personalWebDesc": "Developed with Astro, a static site generator that lets you write content in Markdown and publish to the web with excellent performance. Deployed on Azure Static Web Apps.", + "mientrenoTitle": "MiEntreno (end-of-course project)", + "mientrenoDesc": "Web application for managing sports training, with a simple and easy-to-use interface. Developed with ASP.NET Core, Razor Pages, and SQL Server. More information. Source code.", + "vigo360Title": "Vigo 360", + "vigo360Desc": "Blog about Vigo and its surroundings, mainly focused on mobility and toponymy. Developed in Go, with a MySQL database and deployed on a VPS managed by myself. More information. Source code. Website." + } +} \ No newline at end of file diff --git a/src/i18n/es.json b/src/i18n/es.json new file mode 100644 index 0000000..0e6e8bb --- /dev/null +++ b/src/i18n/es.json @@ -0,0 +1,89 @@ +{ + "header": { + "home": "Inicio", + "trajectory": "Trayectoria", + "portfolio": "Portafolio", + "blog": "Blog", + "contact": "Contacto" + }, + "footer": { + "copyright": "Todos los derechos reservados.", + "contentLicencedUnder": "Salvo que se indique lo contrario, el contenido de este sitio está bajo licencia", + "sourceCodeAvailableOn": "El código fuente de este sitio está disponible en", + "andIsLicencedUnder": "y se ofrece bajo licencia", + "eupl": "Licencia Pública de la Unión Europea" + }, + "contactPage": { + "title": "Contacto", + "description": "Las formas de ponerte en contacto conmigo, ya sea por correo electrónico, teléfono o redes sociales.", + "headline": "¡Ponte en contacto conmigo!", + "enableJs": "Es necesario activar JavaScript para ver la dirección de correo electrónico y el número de teléfono. Esto se hace para evitar scrapers y spam.", + "intro": "La forma más sencilla de contactar conmigo es a través de mi dirección de correo electrónico: Activa JS. También puedes usar WhatsApp con el número de teléfono Activa JS.", + "socialMedia": "También puedes encontrarme en algunas redes sociales:" + }, + "homePage": { + "title": "Inicio", + "description": "Página de inicio de mi web", + "welcome": "Te doy la bienvenida a mi web. Me llamo Ariel, y aquí encontrarás información sobre mí y mis proyectos.", + "whoAmI": "¿Quién soy?", + "whoAmIDesc": "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.", + "moreAboutMe": "Más información sobre mí", + "whatIDo": "¿Qué hago?", + "whatIDoDesc": "Actualmente trabajo como desarrollador de software y administrador 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.", + "myPortfolio": "Mi portfolio", + "latestBlogPosts": "Últimas entradas del blog", + "viewAllPosts": "Ver todas las entradas" + }, + "trajectoryPage": { + "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.", + "headline": "Mi trayectoria como desarrollador", + "intro": "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.", + "techTitle": "Tecnologías que domino", + "techDescription1": "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.", + "techDescription2": "También tengo experiencia con herramientas de DevOps como Docker, Kubernetes, Terraform y GitHub Actions; así como el ecosistema Cloud de Azure.", + "educationTitle": "Educación y credenciales", + "efsetCert1": "Certificado oficial EF SET C2 Proficient", + "efsetCert2": ": acredita mi nivel de inglés C2, el más alto según el Marco Común Europeo de Referencia para las Lenguas.", + "viewCertificate": "Ver certificado", + "azureDeveloperCert1": "Microsoft Certified: Azure Developer Associate", + "azureDeveloperCert2": ": acredita mis conocimientos en el desarrollo de aplicaciones en Azure.", + "viewCredential": "Ver credencial", + "azureDevOpsCert1": "Microsoft Certified: Azure DevOps Engineer Expert", + "azureDevOpsCert2": ": acredita mis conocimientos en la implementación de metodologías de DevOps en Azure con Azure DevOps y GitHub.", + "higherTechCert1": "Técnico Superior en Desarrollo de Aplicaciones Multiplataforma", + "higherTechCert2": ": título de formación profesional de grado superior, obtenido en el", + "higherTechCert3": "IES de Teis", + "higherTechCert4": "en Vigo.", + "experienceTitle": "Experiencia laboral", + "estelaria1": "Estelaria Solutions (Q3 2023 - actualidad)", + "estelaria2": "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.", + "estelaria3": "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.", + "polygon1": "FCT en Polygon-E (Q2 2023)", + "polygon2": "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.", + "projectsTitle": "Proyectos", + "projectsDescription": "Puedes encontrar los proyectos (públicos) en los que he trabajado en mi portfolio y en mi perfil de GitHub." + }, + "portfolioPage": { + "title": "Portfolio", + "description": "Un listado de los proyectos en los que he trabajado en los últimos años, con las tecnologías utilizadas.", + "headline": "Mi portfolio", + "intro": "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 contactar conmigo.", + "freelanceTitle": "Proyectos para terceros (freelance)", + "freelanceDesc": "He realizado desarrollos de proyectos para terceros por encargo, siendo los más destacados los siguientes:", + "orderExtractorTitle": "Extractor de pedidos compra online", + "orderExtractorDesc": "Aplicación de escritorio que extrae los datos sobre los pedidos on-line de diversas plataformas (como WooCommerce, Amazon y Ebay). Más información.", + "touristInfoTitle": "Punto de información turística en móviles", + "touristInfoDesc": "Aplicación web de información turística, con QR, contenido en 360º e incrustado de YouTube. Más información.", + "wpConsultingTitle": "Consultoría WordPress", + "wpConsultingDesc": "Trabajos de mantenimiento, optimización y migración de sitios web WordPress y tiendas online WooCommerce. Más información. Contactar.", + "ownProjectsTitle": "Proyectos propios", + "ownProjectsDesc": "Además, tengo varios proyectos propios que he desarrollado en mi tiempo, estando algunos de ellos en activo, y como código abierto.", + "personalWebTitle": "Web personal", + "personalWebDesc": "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.", + "mientrenoTitle": "MiEntreno (proyecto fin de ciclo)", + "mientrenoDesc": "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. Más información. Código fuente.", + "vigo360Title": "Vigo 360", + "vigo360Desc": "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. Más información. Código fuente. Web." + } +} \ No newline at end of file diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..4ed1a52 --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,34 @@ +import Spanish from './es.json'; +import English from './en.json'; + +export const SHOW_DEFAULT_LANGUAGE = false; +export const DEFAULT_LANGUAGE = "es"; + +export type LanguageKeys = "es" | "en"; + +export const languages: Record{t.contactPage.socialMedia}
+ +{t.homePage.welcome}
+ +{t.homePage.whoAmIDesc}
+ {t.homePage.moreAboutMe} + +{t.homePage.whatIDoDesc}
+ {t.homePage.myPortfolio} + +{t.trajectoryPage.intro}
+ +{t.trajectoryPage.techDescription1}
+ +{t.trajectoryPage.techDescription2}
+ +{t.trajectoryPage.estelaria2}
+ +{t.trajectoryPage.estelaria3}
+ +{t.trajectoryPage.polygon2}
+ +- Te doy la bienvenida a mi web. Me llamo Ariel, y aquí encontrarás - información sobre mí y mis proyectos. -
- -- 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. -
- Más información sobre mí - -- 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. -
- Mi portfolio - -- 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 - contactar conmigo. -
- -- He realizado desarrollos de proyectos para terceros por encargo, siendo los más destacados los siguientes: -
- -- Aplicación de escritorio que extrae los datos sobre los pedidos - on-line de diversas plataformas (como WooCommerce, Amazon y - Ebay). Más información. -
- -- Aplicación web de información turística, con QR, contenido en 360º e incrustado - de YouTube. Más información. -
- -- Trabajos de mantenimiento, optimización y migración de sitios web WordPress y tiendas online WooCommerce. - Más información. - Contactar. -
- -- Además, tengo varios proyectos propios que he desarrollado en mi tiempo, estando algunos de ellos en activo, y como código abierto. -
- -- 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. -
- -- 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. Más información. - Código fuente. -
- -- 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. - Más información. - Código fuente. - Web. -
- -- 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. -
- -- 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. -
- -- 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. -
- -- 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. -
- -- Puedes encontrar los proyectos (públicos) en los que he trabajado en mi portfolio - y en mi perfil de GitHub. -
-