Advanced cross-platform JavaFX desktop application for seamless management of multiple Git credential profiles with enterprise-grade security and comprehensive audit capabilities.
- Overview
- Features
- System Requirements
- Installation
- Quick Start
- Usage Guide
- Security
- Development
- Contributing
- Support
- License
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.
- 🔐 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
- 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
- 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
- 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
- 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
- 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
- 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
- Memory: 1 GB RAM or higher
- Storage: 100 MB available disk space
- Network: Internet connection for updates and documentation
| 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 |
- Download the latest release from Releases
- Download
GitProfileManager-Setup.exe - Run the installer and follow the setup wizard
- Launch from Start Menu or Desktop shortcut
- Download the latest release from Releases
- Download
GitProfileManager.dmg - Mount the DMG and drag to Applications folder
- Launch from Applications or Spotlight
- Download the latest release from Releases
- Download the appropriate package for your distribution
- 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- Download
git-profile-manager-1.0.0.jarfrom Releases - Ensure Java 17+ and JavaFX 17+ are installed
- 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.jarSee Development section for detailed build instructions.
-
Launch the Application
# Windows git-profile-start # macOS/Linux ./git-profile-start.sh
-
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
-
Create Your First Profile
- Click "Add Profile" button
- Enter profile name, email, and username
- Optionally add additional Git configuration
- Save the profile
-
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
-
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
-
View Audit History
- Click "Audit History" to view all operations
- Filter by date, operation type, or profile
- Export audit logs for compliance
- Click the "Add Profile" button
- Fill in the required information:
- Name: Display name for the profile
- Email: Git email address
- Username: Git username
- Description: Optional description
- Configure additional settings:
- Default Branch: Preferred default branch name
- Editor: Preferred text editor
- Merge Tool: Preferred merge tool
- Signing Key: GPG signing key ID
- Click "Save" to create the profile
- Select the profile from the list
- Click "Edit" or double-click the profile
- Modify the desired fields
- Click "Save" to apply changes
- Select the profile from the list
- Click "Delete" button
- Confirm deletion in the dialog
- Profile will be permanently removed
- 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
- Applies only to the current repository
- Stored in
.git/configwithin the repository - Use "Apply Local" to apply a profile to the current repository
- 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
- Sensitive data is cleared from memory after use
- Temporary files are securely deleted
- No sensitive data is logged or cached
- 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
- 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)
- 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)
- 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
- 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
- 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
- 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)
git clone https://github.com/anurag-handique/git-profile-manager.git
cd git-profile-manager# Clean and compile
mvn clean compile
# Run tests
mvn test
# Package the application
mvn clean package
# Run the application
mvn javafx:run# 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/distgit-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
We welcome contributions from the community! Here's how you can help:
- Bug Fixes: Fix reported issues
- New Features: Implement requested features
- Performance: Optimize existing code
- Refactoring: Improve code quality
- Tests: Add or improve test coverage
- 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
-
Fork and Clone
git clone https://github.com/your-username/git-profile-manager.git cd git-profile-manager -
Install Dependencies
# Install Java 17+ # Install JavaFX 17+ # Install Maven 3.6+
-
Build and Test
mvn clean compile test
-
Create Feature Branch
git checkout -b feature/your-feature-name
-
Make Changes
- Write code following project conventions
- Add tests for new functionality
- Update documentation
-
Test Changes
mvn clean test mvn javafx:run -
Commit Changes
git add . git commit -m "Add feature: brief description"
-
Push and Create PR
git push origin feature/your-feature-name # Create pull request on GitHub
- User Guide: Comprehensive usage documentation
- API Reference: Complete JavaDoc documentation
- FAQ: Frequently asked questions
- Tutorials: Step-by-step guides
- GitHub Discussions: Community forum for questions and discussions
- GitHub Issues: Bug reports and feature requests
- Stack Overflow: Tag questions with
git-profile-manager
When reporting bugs, please include:
-
System Information
- Operating System and version
- Java version
- JavaFX version
- Application version
-
Reproduction Steps
- Detailed steps to reproduce the issue
- Expected behavior
- Actual behavior
- Screenshots or screen recordings
-
Log Files
- Application logs
- System logs
- Error messages
- Stack traces
- Developer: Anurag Handique
- Email: Contact via GitHub
- GitHub: @anurag-handique
- GitHub Discussions: Project Discussions
- GitHub Issues: Issue Tracker
This project is licensed under the MIT License - see the LICENSE file for details.
- ✅ Commercial use
- ✅ Modification
- ✅ Distribution
- ✅ Private use
- ✅ Patent use
- 📋 License and copyright notice must be included
- ❌ No liability
- ❌ No warranty
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.
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 |