Skip to main content

Interactive CLI Business Card

A fast, interactive CLI business card implemented in Rust.

License: MIT Rust uvx bunx

🚀 Quick Start

Cargo (direct Rust install)

cargo install carlosferreyra
carlosferreyra

uvx (wrapper entrypoint)

uvx carlosferreyra

bunx (wrapper entrypoint)

bunx carlosferreyra

Features

  • ⚡ Fast Rust CLI
  • 📧 Direct email contact
  • 🌐 Portfolio and social links
  • 🖥️ Interactive menu
  • 🔧 Non-interactive mode via --open
  • 🎯 Resume-driven behavior from resume.json with runtime refresh from GitHub

Project Structure

business-card/
├── src/                  # Rust source code
│   └── main.rs
├── Cargo.toml            # Rust package manifest
├── Cargo.lock
├── resume.json           # Embedded fallback resume snapshot
└── README.md

Configuration

The CLI fetches resume metadata at startup from:

https://raw.githubusercontent.com/carlosferreyra/carlosferreyra/main/resume.json

If the fetch fails, times out, or returns invalid data, the CLI falls back to the embedded root resume.json in this repository.

  • Personal information (name, title, company, location, skills)
  • Links (email, portfolio, GitHub, LinkedIn, Twitter, LeetCode)
  • Business-card-labeled portfolio projects

The CLI renders the profiles.business-card profile plus links, skills, and projects whose labels include business-card.

To refresh the embedded fallback snapshot before a future release, run:

uv run scripts/sync_resume.py

Distribution Model

  • Source code in this repo: Rust only
  • uvx carlosferreyra: Python ecosystem entrypoint wrapper (generated/published in release pipeline)
  • bunx carlosferreyra: Node ecosystem entrypoint wrapper (generated/published in release pipeline)

The uvx and bunx packages are distribution entrypoints, not source implementations in this repository.

Release Pipeline

  • Before cutting any patch/minor/major release, refresh the embedded offline fallback:

    uv run scripts/sync_resume.py
    
  • Release workflow (.github/workflows/release.yml) is the source of truth.

  • It runs on version-tag pushes and pull requests; pull requests run distribution planning only.

  • Version-tag pushes build binaries and installers with dist, then publish a GitHub release.

  • Version bumps, tag creation, and crates.io publication are separate maintainer steps.

  • After a successful release push, release_pypi.yml and release_npm.yml verify that the matching GitHub release and installer exist and that its tag points to the checked-out commit, then publish the wrappers.

  • Those workflows generate Python/npm wrapper package metadata from Cargo.toml on the fly (no dedicated python/ or typescript/ source folders).

Development

cargo run
cargo run -- --open portfolio
cargo check
cargo build --release
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
uv run --with httpx python -m unittest discover -s tests -v
node --test tests/npm_wrapper.test.cjs

Connect with Carlos

License

MIT


Appendix: Package Index Wrappers

The packages published to PyPI and npm are entrypoint wrappers around the Rust CLI binary.

  • pipx/uvx package: invokes the Rust carlosferreyra executable.
  • npx/bunx package: invokes the Rust carlosferreyra executable.

If the binary is not available, wrappers attempt to bootstrap it from release artifacts generated by cargo dist; if that fails, install directly with:

cargo install carlosferreyra

Automatic wrapper installation supports macOS and Linux. Windows users must provide a separately built Rust executable; published releases currently contain no Windows binaries.

Metadata

Release files for carlosferreyra 1.2.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carlosferreyra 1.2.16
File Size Uploaded
carlosferreyra-1.2.16.tar.gz 3.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for carlosferreyra 1.2.16
File Interpreter ABI Platform
carlosferreyra-1.2.16-py3-none-any.whl Python 3 none any Details

Total release size: 7.6 kB

Release files / carlosferreyra-1.2.16.tar.gz

Download URL carlosferreyra-1.2.16.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
683f925965f7d781cdb9bf4ecfc23cf8c34d1533de706b0102447dd62033e7f8
BLAKE2b-256 checksum
How to use checksums
cfb489da1e1842d2df1b58217b48aad4a10854bf59e914422c10214654338318
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / carlosferreyra-1.2.16-py3-none-any.whl

Download URL carlosferreyra-1.2.16-py3-none-any.whl
Size 4.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4eabd87b76257d5d3f9d77b6ae893db529a7c468057406595bce30edc6dd0ca
BLAKE2b-256 checksum
How to use checksums
c2d722414794f930c745c13be1c67ae0aacf84044add98d33bd76c6b2f23ef9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.2.16 This release

2 release files

1.2.15

2 release files

1.2.14

2 release files

1.2.13

2 release files

1.2.11

2 release files

1.2.10

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.1.2

2 release files

1.0.1

2 release files

0.1.0

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page