WillFetch
A lightweight, aesthetically driven CLI tool that serves as a digital identity card, combining custom ASCII art with a stylized data presentation layer using the Rust programming language.
Overview
This project is a terminal-based 'Business Card' designed to showcase professional identity in a way that resonates with the developer community. Built in Rust, it renders a side-by-side view of complex ASCII art and structured professional data, providing a high-performance, color-coded alternative to traditional static resumes or web-only portfolios.
Problem
Traditional resumes and LinkedIn profiles are often 'flat' and lack the personality or technical flair that appeals to engineering-centric environments. I wanted a way to present my professional bio, tech stack, and socials directly in the environment where I spend most of my time: the terminal.
Constraints
- Must maintain a clean visual alignment between irregular ASCII art and text blocks
- Requires zero-cost abstractions to ensure the render is instantaneous
- Needs to support ANSI color codes for high-readability UI/UX within a CLI
- Must be easily portable as a single binary
Approach
I utilized a structural layout approach where the CLI is treated as a 2D grid. By implementing a custom `CardRenderer` in Rust, I decoupled the data (the `Bio` and `Socials` structs) from the presentation logic. This allowed for independent scaling of the ASCII art and the information lines, ensuring that the layout doesn't break regardless of which side contains more data.
Key Decisions
Rust Structs for Static Data
Using Rust's type system to define the `Bio` and `Socials` ensures that all necessary contact information is present at compile time. It turns personal data into a 'schema' that is easy to update and maintain.
- Hard-coded print statements (Messy and difficult to maintain/format)
- External JSON config (Adds unnecessary file I/O overhead for a simple ID card)
Side-by-Side Buffer Rendering
To achieve a professional 'Card' look, I implemented a line-by-line iterator that merges the ASCII art buffer with the text buffer. This ensures the text starts exactly where the art ends, creating a consistent vertical alignment.
- Sequential printing (Art above text, which lacks the 'Business Card' feel)
- Using a TUI library like Ratatui (Overkill for a static display tool)
Tech Stack
- Rust
- Colored (ANSI Terminal Coloring)
- Cargo (Build System)
Result & Impact
- Sub-1ms (Instantaneous)Execution Time
- Minimal footprintBinary Size
- High-contrast CLI ReadabilityUX
The tool transforms a simple 'About Me' section into a technical statement. It demonstrates proficiency in Rust, an eye for terminal aesthetics (DX), and a commitment to building tools that are both functional and visually polished.
Learnings
- Alignment in CLI tools requires careful string padding and width management, especially when dealing with escape characters for color.
- Static lifetimes (`&'static str`) in Rust are perfect for this use case, keeping the binary fast and memory-efficient.
- ASCII art provides a 'low-tech' but high-impact way to personalize software.
Additional Context
The Rust Digital Business Card is built on the philosophy that code is a form of self-expression. By moving my professional bio into a compiled binary, I treat my career data with the same rigor as a production system.
The most significant aspect of this project is the CardRenderer logic. It uses a sophisticated padding mechanism to ensure that the ASCII art (which acts as a visual ‘logo’) remains separated from the data by a consistent gap. Because Rust handles strings and iterators so efficiently, the rendering happens without any flickering or delay.
This project serves as a “first handshake” for developers visiting my GitHub, providing a modern, terminal-centric introduction that proves I value both performance and UI/UX.
[ repository ]