Skip to content

hamimmahmud0/git-config-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔑 Git Config Manager

A desktop app for managing GitHub SSH keys — generate, store, and clone with one click.

Built with Tauri v2 + SvelteKit 5 + Rust

Tauri Svelte Tailwind CSS License: GPL v3


✨ Features

  • 📖 Read existing config — Automatically reads ~/.ssh/config on launch and displays all entries.
  • 🔑 Generate SSH keys — Enter a GitHub repo URL (https:// or git@), and the app generates a new Ed25519 SSH key and adds it to your config.
  • ✏️ Edit & delete — Modify host details or remove entries (with optional key file cleanup).
  • 📋 One-click copy — Copy public keys and git clone commands with a single click.
  • 🪟 Custom title bar — Dark, draggable title bar with minimize/maximize/close controls using Heroicons.
  • 🌙 Dark theme — Modern dark UI built entirely with Tailwind CSS and Heroicons.

🚀 Quick Start

# Clone the repo
git clone https://github.com/YOUR_USER/git-config-manager.git
cd git-config-manager

# The source is in the "Git Config Manager" directory
cd "Git Config Manager"

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

Prerequisites: Node.js ≥ 18, Rust (latest stable), and system dependencies for Tauri v2.


📸 How It Works

Adding a new SSH key

Step Description
1 Click Add Entry
2 Paste a GitHub repo URL (https://github.com/user/repo.git or git@github.com:user/repo.git)
3 Click Generate Key
4 A new Ed25519 SSH key is created at ~/.ssh/<user>_<repo>
5 A Host <user>_<repo> entry is added to ~/.ssh/config
6 The public key and git clone command are shown with copy buttons

Managing entries

  • All existing entries from ~/.ssh/config are displayed on launch
  • Edit — Click the pencil icon to modify Host, HostName, User, IdentityFile, or Port
  • Delete — Click the trash icon to remove the entry (optionally deletes the key files too)

📁 Project Layout

git-config-manager/
├── AGENT.md                  # Original specification
├── LICENSE                   # GPL v3
├── README.md                 # ← You are here
└── Git Config Manager/       # Full application source
    ├── src/                  # SvelteKit frontend
    │   ├── lib/components/   # UI components (Svelte 5)
    │   ├── lib/utils/        # Helpers (clipboard, etc.)
    │   ├── lib/types.ts      # TypeScript interfaces
    │   └── routes/           # Pages & layout
    ├── src-tauri/src/        # Rust backend
    │   ├── lib.rs            # Tauri command registration
    │   ├── ssh_config.rs     # ~/.ssh/config parser
    │   └── ssh_keygen.rs     # SSH key generation
    ├── package.json
    ├── vite.config.js
    └── tauri.conf.json

Detailed documentation is available in the app README.


🛠 Tech Stack

Layer Technology
Desktop Tauri v2
Frontend SvelteKit 5 + TypeScript
Styling Tailwind CSS v4
Icons Heroicons via heroicons-svelte
Backend Rust with serde
Bundler Vite

📦 Building for Production

cd "Git Config Manager"
npm run tauri build

The compiled binary will be at src-tauri/target/release/git-config-manager.


🔧 Tauri Commands (Rust → Frontend Bridge)

Command Description
get_ssh_config Read all entries from ~/.ssh/config
add_ssh_config Add a new config entry
update_ssh_config Update an existing entry
delete_ssh_config Delete an entry (and optionally key files)
generate_ssh_key Generate Ed25519 key from a repo URL
get_public_key Read the contents of a .pub file
parse_repo Parse a GitHub URL into (user, repo)

🧪 Running Tests

# Rust unit tests (config parser, round-trip serialization)
cd "Git Config Manager/src-tauri"
cargo test

# Frontend type checking
cd "Git Config Manager"
npm run check

📄 License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

About

A simple git key manager for github

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors