{"id":16935748,"url":"https://github.com/alextmjugador/home","last_synced_at":"2025-04-11T19:02:32.920Z","repository":{"id":148759701,"uuid":"596296518","full_name":"AlexTMjugador/Home","owner":"AlexTMjugador","description":"🌐 My own space on the web, featuring blog posts and personal highlights.","archived":false,"fork":false,"pushed_at":"2024-10-29T11:56:31.000Z","size":7924,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T13:35:05.596Z","etag":null,"topics":["astro","blog","giscus","jamstack","jamstack-site","personal-website","static-site"],"latest_commit_sha":null,"homepage":"https://alegon.dev","language":"Astro","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexTMjugador.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-01T21:55:34.000Z","updated_at":"2024-10-29T11:56:35.000Z","dependencies_parsed_at":"2023-09-29T00:05:58.708Z","dependency_job_id":"f6d0e740-ab1b-4468-bbf8-2890af83f3c9","html_url":"https://github.com/AlexTMjugador/Home","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexTMjugador%2FHome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexTMjugador%2FHome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexTMjugador%2FHome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexTMjugador%2FHome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexTMjugador","download_url":"https://codeload.github.com/AlexTMjugador/Home/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232037320,"owners_count":18463714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astro","blog","giscus","jamstack","jamstack-site","personal-website","static-site"],"created_at":"2024-10-13T20:55:16.533Z","updated_at":"2024-12-31T23:42:25.109Z","avatar_url":"https://github.com/AlexTMjugador.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003e🌐 Alejandro's personal space\u003c/h1\u003e\n\n\u003ca href=\"https://astro.build\"\u003e\u003cimg\nsrc=\"https://astro.badg.es/v1/built-with-astro.svg\" alt=\"Built with Astro\"\nwidth=\"150\" height=\"27.5\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://github.com/AlexTMjugador/Home/actions/workflows/ci.yml\"\u003e\u003cimg\nsrc=\"https://github.com/AlexTMjugador/Home/actions/workflows/ci.yml/badge.svg\"\nalt=\"CI \u0026 CD workflow status\"\u003e\u003c/a\u003e\n\n\u003ci\u003eMy own space on the web, featuring blog posts and personal highlights.\u003c/i\u003e\n\n\u003c/div\u003e\n\nThis repository contains the source code for my personal website. Its design\nfollows the [Jamstack architecture](https://jamstack.org/), which can be easily\ndeployed to any web server requiring next to no server configuration.\n\nAt the heart of this architecture is [Astro](https://astro.build), a modern,\ncomponent-based static site generator built with extensibility and performance\nin mind: Astro does not send any runtime JavaScript to web browsers by default,\nand runs entirely at build-time.\n\nEach commit triggers a continuous integration and deployment process powered by\nGitHub Actions workflows, which statically analyzes the source, builds the site,\nruns [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) on it, and\ndeploys the result to [Cloudflare Pages](https://pages.cloudflare.com/) edge\nservers.\n\n[Giscus](https://giscus.app/en/) is used as a database-less comments system\nbacked up by the GitHub Discussions of this repository.\n\n```mermaid\ngraph\n    subgraph Developer\n        Change[New post, site or source change] --\u003e Commit[\u003cpre\u003egit commit\u003c/pre\u003e \u0026 \u003cpre\u003egit push\u003c/pre\u003e]\n    end\n\n    Commit --\u003e GHRepo[\"GitHub repository\u003cbr\u003e(with Giscus GitHub Discussions integration)\"]\n    GHRepo --\u003e Checkout\n\n    subgraph GitHub Actions CI \u0026 CD workflow\n        Checkout --\u003e\n        Install[Install dependencies: \u003cpre\u003enpm ci\u003c/pre\u003e] --\u003e\n        Format[Run Prettier: \u003cpre\u003enpm run format\u003c/pre\u003e]-- No formatting issues are found --\u003e\n        Lint[Run ESLint: \u003cpre\u003enpm run lint\u003c/pre\u003e]-- No lints are found --\u003e\n        Build[Build: \u003cpre\u003enpm run build\u003c/pre\u003e]-- Astro and its integrations run in SSG mode\u003cbr/\u003eto build a static site bundle --\u003e\n        LighthouseCI[Run Lighthouse CI]-- Quality assertions pass --\u003e\n        Deploy[Deploy to Cloudflare Pages]\n    end\n\n    Deploy --\u003e CFPages[Cloudflare edge servers]\n\n    subgraph End user\n        Client[Web browser]\n    end\n\n    Client-- Visits deployed website at --\u003e CFPages\n    Client-- Retrieves blog post comments from --\u003e GHRepo\n```\n\n# ✨ Highlights\n\n- Automatic [RSS feed](https://en.wikipedia.org/wiki/RSS) generation on build\n  time, allowing people and computers to consume blog posts from news reader\n  applications.\n- Written entirely in TypeScript, improving developer experience and code\n  safety.\n- Strict CI workflow to ensure code quality and end-user website performance,\n  using Prettier, ESLint with additional accessibility lints, and Lighthouse\n  CI.\n- Follows good SEO practices: automatically generates a `robots.txt` file,\n  sitemap and web manifest. Each page contains `\u003cmeta\u003e` tags that describe it\n  in a machine-parsable way.\n- Observes the [Open Graph](https://ogp.me/) protocol, which enables beautiful\n  link previews with custom images.\n- Each blog post is associated an Open Graph image that is procedurally\n  generated from its title and description.\n- Images may be encoded in multiple formats and resized to fit different client\n  viewport sizes, minimizing the bandwidth required to display them while allowing\n  fallbacks to less efficient arrangements.\n- Critical CSS styles are automatically inlined for better loading times with\n  [Critters](https://github.com/GoogleChromeLabs/critters).\n- Custom, refreshing analogous color scheme that defies the usual light-dark\n  dichotomy, implemented with [Tailwind CSS](https://tailwindcss.com/).\n- Client-side blog post search powered by [Pagefind](https://pagefind.app/).\n\n# 📥 Getting started\n\nThe development workflow should be unsurprising to anyone acquaintanced with the\n`npm` ecosystem. After cloning the repository, run the following commands to get\nthis website up and running in a local development server:\n\n```\nnpm install\nnpm run dev\n```\n\nI recommend using editors like Visual Studio Code for modifying the source\nbecause they provide a better experience: this repository contains settings\nfiles for VS Code that will prompt you to set it up as intended. However, you\nare free to use any other editor you like.\n\nAfter making some changes you can run `npm run format:fix` and `npm run\nlint:fix` to correct formatting and static analysis lints, respectively. When\nready, you can also execute `npm run build` to generate a production site bundle\nat the `dist` directory.\n\n## 📁 Project structure\n\nThis project distributes its source artifacts across folders as follows:\n\n```\n/\n├── public\n│   ├── giscus: styles for the Giscus widget used for post comments.\n│   └── rss: XSLT stylesheet to beautifully display the site RSS feed on user agents with no RSS feed functionality.\n└── src\n    ├── components: miscellaneous components used in the site pages.\n    ├── content\n    │   └── blog: blog posts, in Markdown (.md) or MDX (.mdx).\n    ├── images\n    │   └── landscape-parallax: images for the animated landscape parallax component.\n    ├── layouts: the layouts used for the generated pages.\n    └── pages\n        ├── blog\n        │   └── post: route for rendering blog posts.\n        ├── rss: page to generate the site blog posts RSS feed.\n        └── thumbs: page to procedurally generated Open Graph thumbnail images for each blog post.\n```\n\n## ⚖️ License\n\n[GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) © Alejandro González\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextmjugador%2Fhome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falextmjugador%2Fhome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextmjugador%2Fhome/lists"}