Skip to content

Corefinder89/corefinder

Repository files navigation

Corefinder - Interactive Digital Business Card 🎨

Python Version License: MIT PyPI Version

A sophisticated Python CLI application that generates a beautiful ASCII art digital business card with interactive URL shortening and clickable hyperlinks.

Digital Business Card Preview

🌟 Key Features

✨ Interactive Elements

  • Smart URL Shortening: Automatically converts long URLs to cf.link branded short links
  • Terminal Hyperlinks: URLs are clickable in modern terminals while showing branded domains
  • Progress Bar Interface: Professional countdown display with real-time server status
  • Background HTTP Server: Seamless redirect handling for shortened URLs

πŸ”§ Technical Excellence

  • Zero External Dependencies: Uses only Python standard library
  • Cross-Platform: Works on Windows, macOS, and Linux
  • Thread-Safe: Concurrent URL shortening with SQLite backend
  • Production Ready: Professional error handling and graceful degradation

πŸš€ Quick Start

Install from PyPI (Recommended)

pip install --user corefinder
corefinder

Development Installation

git clone https://github.com/Corefinder89/corefinder.git
cd corefinder
pip install --use-feature=in-tree-build .
corefinder

Direct Execution

python -m app

πŸ’» CLI Commands

corefinder                    # Display interactive business card
corefinder --daemon          # Run with persistent server
corefinder --version         # Show version information  
corefinder --help           # Display help

πŸ—οΈ Architecture Overview

Core Components

corefinder/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ main.py              # CLI & application orchestration
β”‚   β”œβ”€β”€ card.py              # ASCII art generator
β”‚   └── url_shortener.py     # HTTP server & URL management
β”œβ”€β”€ tests/                   # Test suite
β”‚   β”œβ”€β”€ debug_shortener.py   # URL shortener debugging
β”‚   β”œβ”€β”€ test_redirect.py     # HTTP redirect testing
β”‚   └── test_main.py         # Main application tests
└── documentation/           # Technical documentation

URL Shortening System Architecture

The URL shortener creates professional branded links while maintaining full functionality through three core components:

  1. SQLite Database Storage (url_shortener.db)
  2. HTTP Redirect Server (runs on localhost:8888+)
  3. Terminal Hyperlink Generation

πŸ”§ How URL Shortening Works

Smart URL Mapping Process

# 1. Original URL
original_url = "https://www.linkedin.com/in/soumyajit-basu/"

# 2. Generate unique short code
short_code = "a3Kx9P"  # 6-character alphanumeric (62^6 combinations)

# 3. Store in SQLite database
CREATE TABLE urls (
    id INTEGER PRIMARY KEY,
    original_url TEXT NOT NULL,
    short_code TEXT NOT NULL UNIQUE
)

# 4. Create terminal hyperlink
display_url = "http://cf.link/a3Kx9P"        # What user sees
working_url = "http://localhost:8888/a3Kx9P"  # Actual redirect URL

Terminal Hyperlinks with ANSI Escape Sequences

Creates clickable links using ANSI escape sequences:

f"\033]8;;{working_url}\033\\{display_url}\033]8;;\033\\"

Result: User sees branded cf.link/a3Kx9P but clicks open the original LinkedIn URL.

HTTP Redirect Flow

  1. User clicks: Terminal displays cf.link/a3Kx9P
  2. Terminal opens: localhost:8888/a3Kx9P
  3. Server extracts: Short code a3Kx9P
  4. Database lookup: Returns original LinkedIn URL
  5. HTTP 302 redirect: Browser opens original destination
  6. Final result: User reaches LinkedIn profile

Automatic Port Management

  • Primary port: 8888
  • Fallback ports: 8889, 8890, 9000-9002
  • Intelligent selection: Automatically finds available port

πŸ› οΈ Development Setup

Prerequisites

  • Python 3.6+
  • pip package manager

Local Development

git clone https://github.com/Corefinder89/corefinder.git
cd corefinder

# Set up virtual environment
python -m venv .venv
source .venv/bin/activate  # macOS/Linux
# .venv\Scripts\activate   # Windows

# Install in development mode
pip install -e .

# Run application
python -m app

Building for Distribution

Using Makefile (Unix/Linux/macOS)

make clean      # Clean previous builds
make build      # Build package
make publish    # Publish to PyPI

Manual Build (All Platforms)

# Clean previous builds
rm -rf build/ dist/ *.egg-info/

# Build package
python -m pip install --upgrade build
python -m build

# Publish to PyPI
python -m twine upload dist/*

Development Workflow

# 1. Make changes to code
# 2. Test quickly
python -m app

# 3. Rebuild package
pip install -e . --force-reinstall

# 4. Test CLI
corefinder

🌟 Advanced Features

Terminal Compatibility

βœ… Supported Terminals:

  • Windows Terminal
  • VS Code Terminal
  • iTerm2 (macOS)
  • GNOME Terminal

❌ Unsupported Terminals:

  • Old Windows Command Prompt
  • Basic terminal emulators

Fallback: Shows display text as regular text in unsupported terminals.

Server Operation Modes

  • Standard Mode: 60-second runtime with progress visualization
  • Daemon Mode: Persistent server for continuous operation

Database Features

  • Thread-safe: SQLite with concurrent access handling
  • Collision prevention: Automatic uniqueness checking for short codes
  • Scalability: Handles millions of URL records efficiently

πŸ“Š Performance Characteristics

  • Memory: ~5-10MB typical usage
  • CPU: Minimal (I/O bound operations)
  • Storage: SQLite database scales with URL count
  • Network: Single port HTTP server with fallback
  • Thread Safety: Full thread-safe implementation

πŸ§ͺ Testing

# Run all tests
python -m pytest tests/

# Debug URL shortener specifically
python tests/debug_shortener.py

# Test HTTP redirects
python tests/test_redirect.py

# Test main application
python tests/test_main.py

πŸ› Troubleshooting

Common Issues

Module not found errors:

pip install --use-feature=in-tree-build . --force-reinstall

Server port conflicts:

  • URL shortener automatically tries alternative ports (8888-9002)

Changes not reflected:

pip install --use-feature=in-tree-build . --force-reinstall
corefinder

Unicode/encoding errors during installation:

# Ensure setup.py reads files with UTF-8 encoding
with open('README.md', encoding='utf-8') as f:
    long_description = f.read()

🀝 Contributing

Development Process

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open Pull Request

Code Standards

  • Follow PEP 8 style guidelines
  • Add tests for new functionality
  • Update documentation for API changes
  • Use type hints where appropriate

Testing Requirements

  • All tests must pass
  • New features require corresponding tests
  • Maintain or improve code coverage

πŸš€ Future Enhancements

Planned Features

  • Custom domain configuration
  • URL analytics and click tracking
  • RESTful API for programmatic access
  • Web interface for URL management
  • Theme customization for ASCII art

Technical Improvements

  • Async HTTP server for better performance
  • Configuration file support
  • Plugin system for extensibility
  • Docker containerization

πŸ“ž Contact & Support

Support Channels

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ Changelog

Version 1.2.7 (2025-10-02)

  • ✨ Added Smart URL Shortening with cf.link branding
  • πŸ”— Terminal Hyperlinks for clickable URLs in modern terminals
  • πŸ“Š Progress Bar Interface with real-time countdown
  • πŸ”„ Daemon Mode for persistent server operation
  • 🌐 HTTP Server with automatic port fallback
  • πŸ“š Enhanced Documentation with architecture overview

Version 1.1.7

  • 🎨 Initial ASCII art business card display
  • πŸ’» Basic CLI interface with help and version flags
  • πŸ“‹ Personal and professional information display

🌟 Show Your Support

If you find this project useful:

  • ⭐ Star the repository
  • πŸ› Report bugs or issues
  • πŸ’‘ Suggest new features
  • 🀝 Contribute to the codebase
  • πŸ“’ Share with others

Made with ❀️ by Soumyajit Basu

About

Create a pip based business card for my digital profile

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors