Skip to content
View glrodasz's full-sized avatar
🦄
🦄

Organizations

@platzi @medellincss @cssconfco @workiaholics @PlatziMaster @undefined-academy

Block or report glrodasz

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
glrodasz/README.md
Guillermo Rodas's GitHub profile
How this card is built

dark_mode.svg and light_mode.svg above are generated by the profilecard package and refreshed daily by .github/workflows/update.yml. The runtime is stdlib-only — no dependencies to install for the daily run.

make install   # pip install -e ".[dev]"
make update    # regenerate both SVGs (uses `gh auth token`)
make test      # pytest

Editing the card's text — everything personal (role, location, languages, contact, career start) lives in profile.toml. Change it there; no code edit needed.

Layout

Path Purpose
src/profilecard/config.py .env loading, tokens, paths
src/profilecard/profile.py profile.toml → ProfileData
src/profilecard/github.py REST/GraphQL client
src/profilecard/stats.py repo, star, follower and commit counts
src/profilecard/loc.py incremental lines-of-code walk + hashed cache
src/profilecard/layout.py the text column (key/value rows, rules)
src/profilecard/art.py the glyph grid, read from art.json
src/profilecard/render.py palettes and SVG assembly
src/profilecard/cli.py python -m profilecard
tools/make_art.py one-off: portrait photo → art.json (needs pip install -e ".[art]")

Two tokens by design — the Actions GITHUB_TOKEN gives the contribution-style commit count, while a PAT (ACCESS_TOKEN) sees private repos for the repo list and LOC walk. Either falls back to the other.

CACHE_HMAC_KEY hashes repo names before they are written to the committed loc_cache.json, so private repo names never land in a public file. See .env.example — the value must match the repo secret of the same name, or the incremental cache is defeated.

tests/test_regression.py pins the rendered SVG hashes, so an accidental layout change fails CI instead of showing up on the profile.

Pinned Loading

  1. haggler-agent haggler-agent Public

    Google ADK + Gemini agents that find cheaper subscription offers across 35 countries. LLMs propose, deterministic code decides.

    Python

  2. walleto walleto Public

    Personal-finance planner: monthly plan vs. actuals, net worth and native multi-currency. Next.js, TypeScript, Firestore.

    TypeScript 7 4

  3. cero-api cero-api Public

    One backend API, rebuilt in TypeScript, Python, Go, Rust, PHP and Elixir and held to a single black-box contract test suite.

    TypeScript 3 4

  4. dotfiles dotfiles Public

    My macOS dev setup and the agent skills I use with Claude Code and Cursor, installed with one Makefile.

    Python 19 4

  5. cero-components cero-components Public

    React design system for RETO: design tokens, Atomic Design and Storybook, published to npm as @glrodasz/components.

    JavaScript 51 23

  6. timepass timepass Public

    Native Apple Silicon menu bar world clock with country flags. Pure AppKit + SwiftUI, no Electron.

    Swift