Skip to content

Advanced cross-platform JavaFX desktop application for seamless management of multiple Git credential profiles with enterprise-grade security and comprehensive audit capabilities. Built with Java 17, JavaFX 21, and modern encryption standards.

Notifications You must be signed in to change notification settings

anurag-handique/git-profile-switcher-v1

Repository files navigation

Git Profile Manager

Git Profile Manager Logo

Advanced cross-platform JavaFX desktop application for seamless management of multiple Git credential profiles with enterprise-grade security and comprehensive audit capabilities.

Java JavaFX Maven License Platform

Windows macOS Linux


📋 Table of Contents


🎯 Overview

Git Profile Manager is a sophisticated desktop application designed to streamline the management of multiple Git credential profiles across different projects and environments. Built with JavaFX and modern security practices, it provides developers with a secure, intuitive, and powerful tool for managing Git configurations.

Why Git Profile Manager?

  • 🔐 Enterprise Security: AES-256 encryption with PBKDF2 key derivation
  • 🚀 Seamless Switching: Instant profile switching without manual configuration
  • 📊 Comprehensive Auditing: Complete audit trail of all operations
  • 🌐 Cross-Platform: Native support for Windows, macOS, and Linux
  • 🛡️ Privacy First: No data collection, no telemetry, local storage only
  • ⚡ Performance Optimized: Lightweight and fast with minimal resource usage

✨ Features

🔧 Core Functionality

  • Multi-Profile Management: Create, edit, and manage unlimited Git profiles
  • Instant Profile Switching: Switch between profiles with a single click
  • Global & Local Configuration: Apply profiles globally or to specific repositories
  • Smart Profile Detection: Automatic detection of existing Git configurations
  • Profile Validation: Real-time validation of profile settings

🛡️ Security & Privacy

  • AES-256 Encryption: Military-grade encryption for all stored data
  • PBKDF2 Key Derivation: 100,000 iterations for secure key generation
  • Memory Protection: Secure memory handling to prevent credential exposure
  • Secure Deletion: Automatic cleanup of temporary files and memory
  • No Telemetry: Zero data collection or external communication

📊 Management & Monitoring

  • Comprehensive Audit Trail: Track all profile operations and changes
  • Import/Export: Backup and restore profile configurations
  • Profile Templates: Pre-configured templates for common scenarios
  • Bulk Operations: Manage multiple profiles simultaneously
  • Configuration Validation: Automatic validation of Git configurations

🎨 User Experience

  • Modern JavaFX UI: Intuitive and responsive user interface
  • Dark/Light Themes: Customizable appearance themes
  • Keyboard Shortcuts: Full keyboard navigation support
  • Context Menus: Right-click context menus for quick actions
  • Drag & Drop: Intuitive drag-and-drop profile management

🔌 Integration & Automation

  • Command Line Interface: Full CLI support for automation
  • System Tray Integration: Background operation with system tray
  • Git Integration: Native Git command integration
  • Script Generation: Generate shell scripts for profile switching
  • API Ready: Extensible architecture for future integrations

🖥️ System Requirements

Minimum Requirements

  • Operating System: Windows 10, macOS 11.0+, or Linux (Ubuntu 18.04+)
  • Java Runtime: Java 17.0.0 or higher
  • JavaFX Runtime: JavaFX 17.0.0 or higher
  • Memory: 512 MB RAM
  • Storage: 50 MB available disk space
  • Git: Git 2.20.0 or higher

Recommended Requirements

  • Memory: 1 GB RAM or higher
  • Storage: 100 MB available disk space
  • Network: Internet connection for updates and documentation

Supported Platforms

Platform Version Status Notes
Windows 10/11 (x64) ✅ Full Support Windows Credential Manager integration
Windows Server 2019/2022 ✅ Full Support Enterprise deployment ready
macOS 11.0+ (Big Sur, Monterey, Ventura, Sonoma) ✅ Full Support Keychain integration
Ubuntu 18.04 LTS / 20.04 LTS / 22.04 LTS ✅ Full Support Native package support
Debian 10/11/12 ✅ Full Support APT package support
CentOS 7/8/9 ✅ Full Support YUM/DNF package support
RHEL 7/8/9 ✅ Full Support Enterprise Linux support
Fedora 35+ ✅ Full Support DNF package support
Arch Linux Latest ✅ Full Support AUR package available
openSUSE Leap 15+ ✅ Full Support Zypper package support
Alpine Linux 3.15+ ✅ Full Support APK package support

🚀 Installation

Method 1: Pre-built Executables (Recommended)

Windows

  1. Download the latest release from Releases
  2. Download GitProfileManager-Setup.exe
  3. Run the installer and follow the setup wizard
  4. Launch from Start Menu or Desktop shortcut

macOS

  1. Download the latest release from Releases
  2. Download GitProfileManager.dmg
  3. Mount the DMG and drag to Applications folder
  4. Launch from Applications or Spotlight

Linux

  1. Download the latest release from Releases
  2. Download the appropriate package for your distribution
  3. Install using your package manager:
# Ubuntu/Debian
sudo dpkg -i git-profile-manager_1.0.0_amd64.deb

# CentOS/RHEL/Fedora
sudo rpm -i git-profile-manager-1.0.0-1.x86_64.rpm

# Arch Linux (AUR)
yay -S git-profile-manager

# openSUSE
sudo zypper install git-profile-manager-1.0.0-1.x86_64.rpm

Method 2: Java JAR Distribution

  1. Download git-profile-manager-1.0.0.jar from Releases
  2. Ensure Java 17+ and JavaFX 17+ are installed
  3. Run the application:
# Windows
java --module-path /path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar git-profile-manager-1.0.0.jar

# macOS/Linux
java --module-path /path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar git-profile-manager-1.0.0.jar

Method 3: Build from Source

See Development section for detailed build instructions.


⚡ Quick Start

First Launch

  1. Launch the Application

    # Windows
    git-profile-start
    
    # macOS/Linux
    ./git-profile-start.sh
  2. Set Master Passphrase

    • Enter a strong passphrase for encrypting your profiles
    • This passphrase is required every time you launch the application
    • Choose a passphrase you can remember but others cannot guess
  3. Create Your First Profile

    • Click "Add Profile" button
    • Enter profile name, email, and username
    • Optionally add additional Git configuration
    • Save the profile

Basic Usage

  1. Switch Profiles

    • Select a profile from the list
    • Click "Apply Global" to set as global Git configuration
    • Click "Apply Local" to apply to current repository only
  2. Manage Profiles

    • Edit profiles by double-clicking or using the edit button
    • Delete profiles using the delete button
    • Export profiles for backup using File → Export
  3. View Audit History

    • Click "Audit History" to view all operations
    • Filter by date, operation type, or profile
    • Export audit logs for compliance

📖 Usage Guide

Profile Management

Creating Profiles

  1. Click the "Add Profile" button
  2. Fill in the required information:
    • Name: Display name for the profile
    • Email: Git email address
    • Username: Git username
    • Description: Optional description
  3. Configure additional settings:
    • Default Branch: Preferred default branch name
    • Editor: Preferred text editor
    • Merge Tool: Preferred merge tool
    • Signing Key: GPG signing key ID
  4. Click "Save" to create the profile

Editing Profiles

  1. Select the profile from the list
  2. Click "Edit" or double-click the profile
  3. Modify the desired fields
  4. Click "Save" to apply changes

Deleting Profiles

  1. Select the profile from the list
  2. Click "Delete" button
  3. Confirm deletion in the dialog
  4. Profile will be permanently removed

Configuration Management

Global Configuration

  • Applies to all Git repositories on the system
  • Stored in ~/.gitconfig (Linux/macOS) or %USERPROFILE%\.gitconfig (Windows)
  • Use "Apply Global" to set a profile as the global default

Local Configuration

  • Applies only to the current repository
  • Stored in .git/config within the repository
  • Use "Apply Local" to apply a profile to the current repository

Security Features

Encryption

  • All profiles are encrypted using AES-256-GCM
  • Master passphrase is required to decrypt profiles
  • Passphrase is never stored on disk
  • Encryption keys are derived using PBKDF2 with 100,000 iterations

Memory Protection

  • Sensitive data is cleared from memory after use
  • Temporary files are securely deleted
  • No sensitive data is logged or cached

Audit Trail

  • All operations are logged with timestamps
  • User actions are tracked for security auditing
  • Audit logs can be exported for compliance
  • No sensitive data is included in audit logs

🔒 Security

Encryption Details

AES-256-GCM Encryption

  • Algorithm: Advanced Encryption Standard (AES) with 256-bit keys
  • Mode: Galois/Counter Mode (GCM) for authenticated encryption
  • Key Size: 256 bits (32 bytes)
  • IV Size: 96 bits (12 bytes)
  • Tag Size: 128 bits (16 bytes)

Key Derivation

  • Algorithm: PBKDF2 (Password-Based Key Derivation Function 2)
  • Hash Function: SHA-256
  • Iterations: 100,000 (configurable)
  • Salt Size: 256 bits (32 bytes)
  • Key Length: 256 bits (32 bytes)

Security Best Practices

  • Strong Passphrases: Minimum 12 characters with mixed case, numbers, and symbols
  • Regular Backups: Encrypted backups of profile data
  • Secure Storage: Profiles stored in encrypted format only
  • Memory Protection: Sensitive data cleared from memory after use
  • Audit Logging: All operations logged for security monitoring

Threat Model

Protected Against

  • Local File Access: Encrypted storage prevents unauthorized access
  • Memory Dumps: Secure memory handling prevents credential exposure
  • Network Interception: No network communication for profile data
  • Process Inspection: Memory protection against debugging tools
  • Physical Access: Encrypted files require master passphrase

Security Considerations

  • Master Passphrase: Keep secure and never share
  • System Security: Ensure system is secure and up-to-date
  • Backup Security: Encrypt backups and store securely
  • Access Control: Use appropriate file system permissions

🛠️ Development

Prerequisites

Required Software

  • Java Development Kit (JDK): 17.0.0 or higher
  • JavaFX SDK: 17.0.0 or higher
  • Apache Maven: 3.6.0 or higher
  • Git: 2.20.0 or higher
  • IDE: IntelliJ IDEA, Eclipse, or VS Code (recommended)

Building from Source

Clone the Repository

git clone https://github.com/anurag-handique/git-profile-manager.git
cd git-profile-manager

Build the Project

# Clean and compile
mvn clean compile

# Run tests
mvn test

# Package the application
mvn clean package

# Run the application
mvn javafx:run

Build Executables

# Windows executable
mvn clean package
jpackage --input target --main-jar git-profile-manager-1.0.0.jar \
  --main-class com.gitprofilemanager.GitProfileManagerApp \
  --name "Git Profile Manager" --type exe --dest target/dist

# macOS application bundle
jpackage --input target --main-jar git-profile-manager-1.0.0.jar \
  --main-class com.gitprofilemanager.GitProfileManagerApp \
  --name "Git Profile Manager" --type dmg --dest target/dist

# Linux package
jpackage --input target --main-jar git-profile-manager-1.0.0.jar \
  --main-class com.gitprofilemanager.GitProfileManagerApp \
  --name "Git Profile Manager" --type deb --dest target/dist

Project Structure

git-profile-manager/
├── src/
│   ├── main/
│   │   ├── java/com/gitprofilemanager/
│   │   │   ├── GitProfileManagerApp.java          # Main application class
│   │   │   ├── model/
│   │   │   │   └── GitProfile.java                # Profile data model
│   │   │   ├── service/
│   │   │   │   ├── EncryptionService.java         # AES-GCM encryption
│   │   │   │   ├── GitService.java                # Git operations
│   │   │   │   ├── ProfileService.java            # Profile management
│   │   │   │   ├── PlatformService.java           # Platform-specific operations
│   │   │   │   └── NotificationService.java       # Notifications
│   │   │   └── ui/
│   │   │       ├── MainController.java            # Main UI controller
│   │   │       ├── ProfileDialogController.java   # Profile dialog
│   │   │       ├── PassphraseDialogController.java # Passphrase dialog
│   │   │       └── AuditDialogController.java     # Audit dialog
│   │   └── resources/
│   │       ├── fxml/                              # FXML UI files
│   │       ├── css/                               # Stylesheets
│   │       ├── images/                            # Application images
│   │       └── logback.xml                        # Logging configuration
│   └── test/
│       └── java/com/gitprofilemanager/            # Unit tests
├── docs/                                          # Documentation
├── scripts/                                       # Build and utility scripts
├── pom.xml                                        # Maven configuration
├── module-info.java                               # Java module configuration
└── README.md                                      # This file

🤝 Contributing

We welcome contributions from the community! Here's how you can help:

Ways to Contribute

Code Contributions

  • Bug Fixes: Fix reported issues
  • New Features: Implement requested features
  • Performance: Optimize existing code
  • Refactoring: Improve code quality
  • Tests: Add or improve test coverage

Documentation

  • User Guides: Improve user documentation
  • API Documentation: Enhance JavaDoc comments
  • Tutorials: Create step-by-step tutorials
  • Translations: Translate to other languages
  • Examples: Add usage examples

Development Process

Setting Up Development Environment

  1. Fork and Clone

    git clone https://github.com/your-username/git-profile-manager.git
    cd git-profile-manager
  2. Install Dependencies

    # Install Java 17+
    # Install JavaFX 17+
    # Install Maven 3.6+
  3. Build and Test

    mvn clean compile test

Making Changes

  1. Create Feature Branch

    git checkout -b feature/your-feature-name
  2. Make Changes

    • Write code following project conventions
    • Add tests for new functionality
    • Update documentation
  3. Test Changes

    mvn clean test
    mvn javafx:run
  4. Commit Changes

    git add .
    git commit -m "Add feature: brief description"
  5. Push and Create PR

    git push origin feature/your-feature-name
    # Create pull request on GitHub

📞 Support

Getting Help

Documentation

  • User Guide: Comprehensive usage documentation
  • API Reference: Complete JavaDoc documentation
  • FAQ: Frequently asked questions
  • Tutorials: Step-by-step guides

Community Support

  • GitHub Discussions: Community forum for questions and discussions
  • GitHub Issues: Bug reports and feature requests
  • Stack Overflow: Tag questions with git-profile-manager

Reporting Issues

Bug Reports

When reporting bugs, please include:

  1. System Information

    • Operating System and version
    • Java version
    • JavaFX version
    • Application version
  2. Reproduction Steps

    • Detailed steps to reproduce the issue
    • Expected behavior
    • Actual behavior
    • Screenshots or screen recordings
  3. Log Files

    • Application logs
    • System logs
    • Error messages
    • Stack traces

Contact Information

Primary Contact

Community Channels


📄 License

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

MIT License Summary

Permissions

  • ✅ Commercial use
  • ✅ Modification
  • ✅ Distribution
  • ✅ Private use
  • ✅ Patent use

Conditions

  • 📋 License and copyright notice must be included

Limitations

  • ❌ No liability
  • ❌ No warranty

Full License Text

MIT License

Copyright (c) 2025 Anurag Handique

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Third-Party Licenses

This project uses the following third-party libraries:

Library Version License Purpose
JavaFX 21.0.1 GPL v2 + Classpath Exception UI Framework
JGit 6.7.0 EPL-1.0 Git Integration
Jackson 2.15.2 Apache-2.0 JSON Processing
SLF4J 2.0.9 MIT Logging API
Logback 1.4.11 EPL-1.0 Logging Implementation
JUnit 5.10.0 EPL-2.0 Testing Framework

Made with ❤️ by Anurag Handique

GitHub LinkedIn Twitter

⭐ Star this repository if you find it helpful!

About

Advanced cross-platform JavaFX desktop application for seamless management of multiple Git credential profiles with enterprise-grade security and comprehensive audit capabilities. Built with Java 17, JavaFX 21, and modern encryption standards.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published