Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - hanxiaomax/handsome: Vibe once run anytime
Nothing Special   »   [go: up one dir, main page]

Skip to content

hanxiaomax/handsome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tools2Go - Developer Tools Collection

A comprehensive collection of developer tools built with React, TypeScript, and Vite. All tools run locally in your browser for maximum privacy and security.

VIBE ONCE USE EVERYDAY

πŸš€ Live Demo

Visit the live site: https://hanxiaomax.github.io/handsome/

πŸ“¦ Features

  • Privacy First: All data processing happens locally in the browser
  • Zero Configuration: No installation required, works offline
  • Modern UI: Built with React 18, TypeScript, and Tailwind CSS
  • Responsive Design: Works on desktop, tablet, and mobile devices
  • Tool Suite: Multiple developer tools in one place
  • Comprehensive Testing: Vitest-powered testing framework with full coverage

πŸ› οΈ Available Tools

  • Programmer Calculator: Binary, hex, decimal calculations with bitwise operations
  • UUID Generator: Generate various types of UUIDs
  • World Clock: Multiple timezone clock display
  • Unit Converter: Convert between different units
  • Unix Timestamp Converter: Convert timestamps to readable dates
  • Markdown Editor: Live markdown editor with preview
  • Emoji Library: Search and copy emojis
  • Color Palette: Color picker and palette generator
  • Product Chart Generator: Create product comparison charts
  • XML Parser: Parse and view XML data in tree format

πŸš€ GitHub Pages Deployment

This project is configured for automatic deployment to GitHub Pages using GitHub Actions.

Setup Instructions

  1. Fork or clone this repository
  2. Enable GitHub Pages in your repository settings:
    • Go to Settings β†’ Pages
    • Select "GitHub Actions" as the source
  3. Push changes to the main branch to trigger deployment
  4. Access your site at https://your-username.github.io/handsome/

Deployment Configuration

  • Build Process: Automatic via GitHub Actions on push to main branch
  • Base Path: Configured for GitHub Pages subdirectory (/handsome/)
  • SPA Routing: Includes 404.html for client-side routing support
  • Asset Optimization: Vite optimizes all assets for production

Manual Deployment

To deploy manually:

cd 2base
npm install
npm run build:gh-pages
# Upload the contents of the dist folder to your hosting provider

πŸ—οΈ Development

Prerequisites

  • Node.js 18+
  • npm or pnpm

Local Development

# Navigate to the project directory
cd 2base

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Testing

The project uses Vitest for testing with comprehensive coverage of all tool functionality.

# Run all tests
npm run test

# Run tests in watch mode
npm run test:watch

# Run tests with UI interface
npm run test:ui

# Run tests with coverage report
npm run test:coverage

# Run specific tool tests
npm run test -- src/tools/programmer-calculator/tests/

# Run tests for a specific file
npm run test -- src/tools/programmer-calculator/tests/bitwise.test.ts

Test Structure

src/tools/
└── [tool-name]/
    β”œβ”€β”€ tests/
    β”‚   β”œβ”€β”€ [feature].test.ts     # Unit tests
    β”‚   └── [component].test.tsx  # Component tests
    β”œβ”€β”€ lib/                      # Core logic (tested)
    └── ui.tsx                    # Tool interface

Writing Tests

Each tool should include comprehensive tests:

// Example test file: src/tools/my-tool/tests/logic.test.ts
import { describe, it, expect } from 'vitest';
import { myFunction } from '../lib/logic';

describe('My Tool', () => {
  describe('Core Functionality', () => {
    it('should handle basic operations', () => {
      expect(myFunction(input)).toBe(expectedOutput);
    });
  });
});

Current Test Coverage

  • Programmer Calculator: 28 comprehensive tests covering all bitwise operations
  • Additional tools: Ready for test implementation

Project Structure

2base/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                 # Main application pages
β”‚   β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”œβ”€β”€ tools/              # Individual tool implementations
β”‚   β”‚   └── [tool-name]/
β”‚   β”‚       β”œβ”€β”€ tests/       # Tool-specific tests
β”‚   β”‚       β”œβ”€β”€ lib/         # Core logic
β”‚   β”‚       └── ui.tsx       # Tool interface
β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”œβ”€β”€ lib/                # Utility functions
β”‚   └── types/              # TypeScript type definitions
β”œβ”€β”€ public/                 # Static assets
β”œβ”€β”€ vitest.config.ts        # Testing configuration
└── dist/                   # Production build output

πŸ”§ Configuration

Vite Configuration

The project uses Vite with the following key configurations:

  • Base Path: Dynamically set for GitHub Pages
  • Build Output: Optimized for production deployment
  • Asset Handling: Proper asset paths for subdirectory deployment

Environment Variables

No environment variables required for basic functionality. All tools work offline.

🀝 Contributing

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

πŸ“ License

This project is open source and available under the MIT License.

🎯 Roadmap

  • Testing Framework: Comprehensive Vitest integration βœ…
  • Add more developer tools
  • Implement tool favorites system
  • Add tool usage analytics (local only)
  • Support for custom tool plugins
  • Dark/light theme improvements
  • Mobile app version
  • CI/CD pipeline with automated testing

πŸ› Issues

Found a bug or have a feature request? Please open an issue on GitHub Issues.

πŸ“ž Support

About

Vibe once run anytime

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0