🎯 Gestiona tu proxy de Git de forma sencilla y elegante
- ✨ Descripción
- 🎯 Características
- 🏗️ Arquitectura
- 🧩 Patrón MVVM
- 📦 Estructura del Proyecto
- 🔧 Clases Principales
- 🚀 Instalación
- 📦 Instalador MSI
- 💻 Uso
- ⚙️ Configuración
- 🎨 Diseño UI/UX
- 🛠️ Tecnologías
- 📸 Capturas
- Roadmap
- 🐛 Known Issues
- 📝 License
Git Proxy Manager es una aplicación de escritorio para Windows que te permite gestionar la configuración de proxy de Git de forma visual e intuitiva.
¿Cansado de escribir comandos cada vez que cambias de red? ¿Olvidas si el proxy está activado o desactivado?
¡Esta app es para ti! 🎉
| Sin Git Proxy Manager | Con Git Proxy Manager |
|---|---|
| 😫 Escribir comandos manualmente | 🎯 Un solo clic |
| 🤔 Recordar IPs y puertos | 💾 Configuración guardada |
| 😰 Olvidar activar/desactivar | 🔄 Toggle instantáneo |
| 🚫 Sin indicador visual | 📊 System tray informativo |
- 🔘 Toggle Button - Activa/desactiva el proxy con un solo clic
- 📝 Configuración de Proxy - Host y puerto personalizables
- 🖥️ System Tray - Icono en la bandeja del sistema con estado actual
- 💾 Persistencia - La configuración se guarda automáticamente
- 🎨 UI Moderna - Tema dark con MahApps.Metro
- ⚡ Rendimiento - Ligero y rápido
El icono en la bandeja del sistema muestra:
| Estado | Color | Significado |
|---|---|---|
| 🟢 | Verde | Proxy activo |
| ⚪ | Gris | Proxy inactivo |
Menú contextual:
- 📂 Abrir ventana principal
- 🔀 Habilitar/Desactivar proxy
- ❌ Salir
┌─────────────────────────────────────────────────────────┐
│ 🖼️ Presentation Layer │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ MainWindow.xaml │ │ App.xaml.cs │ │
│ │ (Vista Principal)│ │ (System Tray) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────┐ │
│ │ 📦 ViewModels │ │
│ │ (MainViewModel.cs) │ │
│ └─────────────────┬───────────────────┘ │
│ │ │
└────────────────────┼─────────────────────────────────────┘
│
┌────────────────────┼─────────────────────────────────────┐
│ ▼ 🔧 Service Layer │
│ ┌─────────────────────────────────────┐ │
│ │ 📋 Services │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │GitProxy │ │ Config │ │ │
│ │ │Service │ │ Service │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └─────────────────┬───────────────────┘ │
│ │ │
└────────────────────┼─────────────────────────────────────┘
│
┌────────────────────┼─────────────────────────────────────┐
│ ▼ 📁 Data Layer │
│ ┌─────────────────────────────────────┐ │
│ │ 💾 Models │ │
│ │ (ProxyConfig.cs) │ │
│ └─────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ 📄 Config File │ │
│ │ %AppData%\GitProxyManager\ │ │
│ │ config.json │ │
│ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ User │───▶│ View │───▶│ ViewModel│───▶│ Service │
│ Action │ │ (XAML) │ │ (C#) │ │ (C#) │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │
│ ┌──────────┐ │
└──────────────│ Model │◀───────────────────┘
│(ProxyConfig)│
└──────────┘
│
▼
┌──────────┐
│ File │
│(JSON) │
└──────────┘
MVVM (Model-View-ViewModel) es un patrón de arquitectura de software que separa la lógica de negocio de la interfaz de usuario.
| Componente | Archivo | Responsabilidad |
|---|---|---|
| Model 📦 | ProxyConfig.cs |
Datos de configuración |
| View 🖼️ | MainWindow.xaml |
Interfaz de usuario |
| ViewModel 🧠 | MainViewModel.cs |
Lógica de presentación |
┌─────────────────────────────────────────────────────────┐
│ MVVM │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ │otify │ │ │
│ │ VIEW │◀────────│ VIEWMODEL │ │
│ │ (XAML/C#) │ Binding │ (C#) │ │
│ │ │────────▶│ │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ User │ │ MODEL │ │
│ │ Interface │ │ (Data) │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
- ✅ Separación de responsabilidades - Cada componente tiene un rol claro
- ✅ Testabilidad - Podemos probar el ViewModel sin la UI
- ✅ Mantenibilidad - Fácil de modificar y extender
- ✅ Reutilización - El ViewModel puede usarse en diferentes Vistas
GitProxyManager/
│
├── 📁 Models/
│ └── 📄 ProxyConfig.cs # Modelo de datos
│
├── 📁 Services/
│ ├── 📄 GitProxyService.cs # Servicio de git
│ └── 📄 ConfigService.cs # Servicio de configuración
│
├── 📁 ViewModels/
│ └── 📄 MainViewModel.cs # ViewModel principal
│
├── 📁 Resources/
│ └── 📁 Icons/ # Iconos de la app
│
├── 📁 Converters.cs # Convertidores de datos
├── 📄 App.xaml # Recursos de la aplicación
├── 📄 App.xaml.cs # Lógica de inicio
├── 📄 MainWindow.xaml # Ventana principal
├── 📄 MainWindow.xaml.cs # Code-behind de ventana
└── 📄 GitProxyManager.csproj # Archivo de proyecto
namespace GitProxyManager.Models;
public class ProxyConfig
{
public bool IsEnabled { get; set; }
public string Host { get; set; } = string.Empty;
public int Port { get; set; } = 3128;
}Descripción: Modelo que representa la configuración del proxy.
| Propiedad | Tipo | Descripción |
|---|---|---|
IsEnabled |
bool |
Estado del proxy (activado/desactivado) |
Host |
string |
Dirección del servidor proxy |
Port |
int |
Puerto del proxy (default: 3128) |
namespace GitProxyManager.Services;
public static class GitProxyService
{
public static void ApplyProxy(ProxyConfig config);
public static void RemoveProxy();
public static ProxyConfig ReadCurrentConfig();
}Descripción: Servicio estático que interactúa con git para gestionar el proxy.
| Método | Descripción |
|---|---|
ApplyProxy() |
Aplica la configuración de proxy a git |
RemoveProxy() |
Elimina la configuración de proxy de git |
ReadCurrentConfig() |
Lee la configuración actual de git |
namespace GitProxyManager.Services;
public static class ConfigService
{
public static ProxyConfig Load();
public static void Save(ProxyConfig config);
}Descripción: Servicio para persistir la configuración en disco.
| Método | Descripción |
|---|---|
Load() |
Carga la configuración desde el archivo JSON |
Save() |
Guarda la configuración en el archivo JSON |
Ubicación del archivo: %AppData%\GitProxyManager\config.json
namespace GitProxyManager.ViewModels;
public partial class MainViewModel : ObservableObject
{
[ObservableProperty]
private bool _isEnabled;
[ObservableProperty]
private string _host = string.Empty;
[ObservableProperty]
private int _port = 3128;
[ObservableProperty]
private string _statusMessage = string.Empty;
[RelayCommand]
private void Apply();
[RelayCommand]
private void Reset();
[RelayCommand]
private void ShowWindow();
}Descripción: ViewModel principal que maneja la lógica de presentación.
| Propiedad/Método | Descripción |
|---|---|
IsEnabled |
Estado del toggle de proxy |
Host |
Texto del host del proxy |
Port |
Puerto del proxy |
StatusMessage |
Mensaje de estado para el usuario |
Apply |
Comando para aplicar configuración |
Reset |
Comando para restablecer configuración |
ShowWindow |
Comando para mostrar la ventana |
- Windows 10/11 (64-bit)
- .NET 10.0 Runtime o superior
- Git instalado y configurado
- Ve a la sección Releases
- Descarga
GitProxyManager-v1.0.0-setup.exe - Ejecuta el instalador
- Sigue las instrucciones
# 📂 Clona el repositorio
git clone https://github.com/tu-usuario/GitProxyManager.git
# 📂 Navega al directorio
cd GitProxyManager
# 🔨 Compila el proyecto
dotnet build -c Release
# 🚀 Ejecuta la aplicación
dotnet run| Propiedad | Valor |
|---|---|
| 📦 Archivo | GitProxyManager-v1.0.0-Setup.msi |
| 📏 Tamaño | 0.98 MB |
| 🏗️ Plataforma | x64 |
| 🔧 Herramienta | WiX Toolset v5 |
| Componente | Descripción |
|---|---|
| 📦 App | Ejecutable + DLLs en Program Files\GitProxyManager |
| 🔗 Start Menu | Acceso directo + Desinstalar en Menú Inicio |
| 📋 Registry | Entradas de desinstalación en Windows |
# 🔨 Compilar app en Release
dotnet build "C:\dev\GitProxyManager\GitProxyManager.csproj" -c Release
# 📦 Compilar MSI
dotnet build "C:\dev\GitProxyManager\installer\GitProxyManager.Installer.wixproj" -c ReleaseC:\dev\GitProxyManager\installer\bin\Release\GitProxyManager-v1.0.0-Setup.msi
- ✅ Instalación silenciosa -
msiexec /i GitProxyManager-v1.0.0-Setup.msi /quiet - ✅ Desinstalación limpia - Desde Panel de Control o Menú Inicio
- ✅ Actualización automática - Detecta versiones previas
- ✅ PerUser - No requiere permisos de administrador
- ✅ Icono personalizado - Icono representativo de proxy/red
La aplicación incluye un icono personalizado que representa:
- 🔵 Círculo azul - Representa la conexión de red
- 🟢 Líneas verdes - Simbolizan el flujo de datos
- 🟡 Flecha amarilla - Indica dirección del proxy
┌─────────────────┐
│ ╭─────────╮ │
│ │ ═══════ │ │
│ │ ═══════ │ │
│ │ ──▶ │ │
│ ╰─────────╯ │
└─────────────────┘
-
Inicia la aplicación
- El ícono aparecerá en la bandeja del sistema
- El ícono será gris (proxy desactivado)
-
Configura tu proxy
- Haz clic derecho en el ícono de la bandeja
- Selecciona "Abrir"
- Ingresa el host y puerto del proxy
- Haz clic en "Aplicar"
-
Activa/Desactiva el proxy
- Usa el toggle button en la ventana principal
- O usa el menú contextual del system tray
| Estado | Acción |
|---|---|
| 🟢 Verde | Proxy activo - Las operaciones de git pasan por el proxy |
| ⚪ Gris | Proxy inactivo - Git usa conexión directa |
| Tecla | Acción |
|---|---|
Doble clic |
Abrir ventana principal |
Clic derecho |
Menú contextual |
Ubicación: %AppData%\GitProxyManager\config.json
{
"IsEnabled": true,
"Host": "172.16.65.62",
"Port": 3128
}La aplicación modifica la configuración global de git:
# ~/.gitconfig
[http]
proxy = http://172.16.65.62:3128
[https]
proxy = http://172.16.65.62:3128| Parámetro | Valor por Defecto | Descripción |
|---|---|---|
IsEnabled |
false |
Proxy desactivado |
Host |
"" |
Sin host configurado |
Port |
3128 |
Puerto estándar de Squid |
| Color | Hex | Uso |
|---|---|---|
| 🔵 Azul | #89B4FA |
Acentos principales |
| 🟣 Morado | #CBA6F7 |
Elementos secundarios |
| 🟢 Verde | #A6E3A1 |
Estados exitosos |
| 🟠 Naranja | #FAB387 |
Advertencias |
| ⚫ Background | #1E1E2E |
Fondo principal |
| ⬜ Texto | #CDD6F4 |
Texto principal |
┌─────────────────────────────────────────────────────────┐
│ Git Proxy Manager ─ □ X │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 🔘 Proxy habilitado [=====○] ON │ │
│ │ 🟢 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Proxy: [172.16.65.62 ] Puerto: [3128 ] │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Aplicar │ │ Restablecer │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 🟢 Proxy activo: 172.16.65.62:3128 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
| Tecnología | Versión | Propósito |
|---|---|---|
| 10.0 | Framework runtime | |
| - | UI Framework | |
| 2.4.11 | UI Controls | |
| 2.0.1 | System Tray | |
| 8.4.2 | MVVM Helpers |
| Herramienta | Propósito |
|---|---|
| Visual Studio 2022 | IDE de desarrollo |
| Git | Control de versiones |
| PowerShell | Scripts de automatización |
┌─────────────────────────────────────────────────────────┐
│ Git Proxy Manager │
│ │
│ ╔═══════════════════════════════════════════════════╗ │
│ ║ 🔘 Proxy habilitado [=====○] ON ║ │
│ ╚═══════════════════════════════════════════════════╝ │
│ │
│ ╔═══════════════════════════════════════════════════╗ │
│ ║ Proxy: [172.16.65.62 ] Puerto: [3128 ] ║ │
│ ╚═══════════════════════════════════════════════════╝ │
│ │
│ ╔══════════════╗ ╔══════════════╗ │
│ ║ Aplicar ║ ║ Restablecer ║ │
│ ╚══════════════╝ ╚══════════════╝ │
│ │
│ 🟢 Proxy activo: 172.16.65.62:3128 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────┐
│ 📂 Abrir │
│─────────────────────│
│ ☑ Habilitar Proxy │
│─────────────────────│
│ ❌ Salir │
└─────────────────────┘
- Toggle button para proxy
- Configuración de host y puerto
- System tray con menú contextual
- Persistencia de configuración
- Tema dark moderno
- Múltiples perfiles de proxy
- Detección automática de red
- Notificaciones de cambio de estado
- Inicio automático con Windows
- Soporte multiplataforma (Linux/macOS)
- Configuración por repositorio
- Integración con VPN
- Logs de actividad
- Temas personalizables
| Issue | Estado | Solución |
|---|---|---|
| #1 - No detecta proxy en WSL | 🔄 En progreso | Usar proxy local |
| #2 - Ícono no aparece en VM | 📝 Documentado | Agregar excepción en antivirus |
Problema: El proxy no se aplica correctamente
# Solución: Verificar configuración de git
git config --global --get http.proxy
git config --global --get https.proxyProblema: La app no inicia con Windows
Solución: Agregar a Inicio automático
1. Win + R → shell:startup
2. Crear acceso directo a GitProxyManager.exe
¡Las contribuciones son bienvenidas! 🎉
- Fork el repositorio
- Crea una branch para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la branch (
git push origin feature/AmazingFeature) - Abre un Pull Request
- Commits: Usar Conventional Commits
- Código: Seguir .NET Coding Conventions
- PRs: Incluir descripción clara y testing
- Toggle button para activar/desactivar proxy
- Configuración de host y puerto
- System tray con menú contextual
- Persistencia de configuración en JSON
- Tema dark con MahApps.Metro
- Primera versión estable
- N/A (primera versión)
MIT License
Copyright (c) 2026 Git Proxy Manager
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.
- MahApps.Metro - UI Controls increíbles
- Hardcodet.NotifyIcon - System Tray para WPF
- CommunityToolkit.Mvvm - Helpers MVVM
- Catppuccin - Tema de colores hermoso
Tu Nombre - @tu_usuario - tu@email.com
🔗 Repo: https://github.com/tu-usuario/GitProxyManager
⭐ Si te gusta este proyecto, ¡dale una estrella! ⭐
Hecho con ❤️ y ☕