Skip to content

JacuXx/shopify-tui

Repository files navigation

Shopify CLI TUI

version license platform status

CLI interactivo tipo Vim para gestionar múltiples tiendas Shopify. Permite iniciar sesión, guardar tiendas con sus archivos de tema (via Shopify Pull o Git Clone), ejecutar servidores de desarrollo en background y ver logs en tiempo real.


Tabla de Contenidos


Demo

GIF de demo próximamente...


Instalación

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/JacuXx/shopify-tui/main/install.sh | sh

Windows (PowerShell):

iwr https://raw.githubusercontent.com/JacuXx/shopify-tui/main/install.ps1 | iex

Actualización

Ejecuta el mismo comando de instalación — siempre descarga la versión más reciente y sobreescribe el binario anterior.

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/JacuXx/shopify-tui/main/install.sh | sh

Windows (PowerShell):

iwr https://raw.githubusercontent.com/JacuXx/shopify-tui/main/install.ps1 | iex

Desinstalar

macOS / Linux:

sudo rm /usr/local/bin/sho

Windows (PowerShell):

Remove-Item "$env:USERPROFILE\.local\bin\sho.exe"

Ejecutar

sho

Requisito: Necesitas tener Shopify CLI instalado: npm install -g @shopify/cli

Verificar versión instalada

sho --version

Características

  • Login con Shopify - Autenticación OAuth vía navegador
  • Gestión de tiendas - Guarda múltiples tiendas para acceso rápido
  • Flujo ultra rápido - Selecciona tienda → servidor inicia automáticamente
  • Popup flotante - Menú flotante con space o m para acciones rápidas
  • Notificación de actualizaciones - Aviso cuando hay nueva versión disponible
  • URL simplificado - Solo escribe el nombre, .myshopify.com se agrega solo
  • Shopify Pull - Descarga temas directamente desde Shopify
  • Theme Push - Sube cambios al tema
  • Git Clone - Clona temas desde repositorios Git (SSH o HTTPS)
  • Servidores en Background - Ejecuta múltiples servidores simultáneamente
  • Logs en Tiempo Real - Visualiza logs interactivos con scroll
  • Abrir Editor - Abre VS Code en el directorio del tema
  • Terminal Integrada - Abre terminal para comandos adicionales
  • Navegación tipo Vim - j/k para navegar, l/Enter para seleccionar
  • Nerd Font Icons - Iconos bonitos con fallback ASCII automático

Atajos de Teclado

Menú Principal

Tecla Acción
a Iniciar sesión en Shopify
t Agregar tienda
d Desarrollo local
v Ver servidores activos
j / Mover abajo
k / Mover arriba
l / Enter Seleccionar opción
Ctrl+Q Salir

Formulario (Agregar Tienda)

Tecla Acción
Tab / Siguiente campo
Shift+Tab / Campo anterior
Enter Continuar/Guardar
q / Esc Cancelar

Lista de Tiendas

Tecla Acción
1-9 Selección rápida por número
j / Mover abajo
k / Mover arriba
l / Enter Iniciar servidor automáticamente
d Eliminar tienda
q Volver al menú

Servidores Activos

Tecla Acción
j / Mover abajo
k / Mover arriba
l / Enter Ver logs del servidor
s Detener servidor seleccionado
S Detener TODOS los servidores
Esc Volver al menú

Vista de Logs (Interactiva)

Tecla Acción
space / m Abrir popup de acciones
j / Scroll abajo (1 línea)
k / Scroll arriba (1 línea)
g Ir al inicio
G Ir al final
PgUp / Ctrl+U Scroll arriba (10 líneas)
PgDn / Ctrl+D Scroll abajo (10 líneas)
v Modo Selección (copiar texto)
Ctrl+Q Volver al menú
Mouse Wheel Scroll con rueda del mouse

Popup de Acciones (en Logs)

Tecla Acción
s Detener servidor
p Pull (bajar cambios)
u Push (subir cambios)
e Abrir en VS Code
t Abrir terminal
j / k Navegar opciones
l / Enter Ejecutar acción
space / Esc Cerrar popup

Modo Selección (en Logs)

Tecla Acción
v Salir del modo selección
Ctrl+Shift+C Copiar texto seleccionado

Nota: En modo selección, toda la interactividad se pausa. Solo puedes seleccionar texto con el mouse y copiarlo.


Configuración

Las tiendas y sus archivos se guardan en:

~/.config/shopify-tui/
├── stores.json           # Configuración de tiendas
└── stores/               # Archivos de los temas
    ├── mi-tienda/        # Tema de "Mi Tienda"
    └── tienda-pruebas/   # Tema de "Tienda Pruebas"

Ejemplo del archivo stores.json:

{
  "tiendas": [
    {
      "nombre": "Mi Tienda Principal",
      "url": "mi-tienda.myshopify.com",
      "ruta": "/home/usuario/.config/shopify-tui/stores/mi-tienda-principal",
      "metodo": 0
    },
    {
      "nombre": "Tienda Git",
      "url": "tienda-git.myshopify.com",
      "ruta": "/home/usuario/.config/shopify-tui/stores/tienda-git",
      "metodo": 1,
      "git_url": "git@github.com:usuario/tema.git"
    }
  ]
}

Nota: metodo: 0 = Shopify Pull, metodo: 1 = Git Clone


Arquitectura (Elm Architecture)

Este proyecto usa Bubbletea que implementa el patrón Elm Architecture:

┌─────────┐
│  MODEL  │ ← Estado de la app (tiendas, vista actual, servidores, etc.)
└────┬────┘
     │
     ▼
┌─────────┐
│  VIEW   │ ← Convierte el Model en UI (strings formateados)
└────┬────┘
     │
     ▼ Usuario presiona tecla
┌─────────┐
│ UPDATE  │ ← Procesa eventos, retorna nuevo Model
└────┬────┘
     │
     └──────► vuelve a MODEL (ciclo infinito)

Archivos clave:

Archivo Descripción
model.go Define struct Model con todo el estado
view.go Función View() que renderiza la UI
update.go Función Update() que maneja eventos
commands.go Funciones para ejecutar comandos de Shopify CLI
server.go Gestor de servidores en background
icons.go Sistema de iconos Nerd Font con fallback

Dependencias


Desarrollo Local

Requisito: Necesitas tener Go instalado.

# Clonar el repositorio
git clone https://github.com/JacuXx/shopify-tui.git
cd shopify-tui

# Compilar
go build -o sho .

# Ejecutar
./sho

Changelog

v2.1.11

  • Distribución vía scripts install.sh / install.ps1 (binarios desde GitHub Releases)
  • sho --version / sho -v para verificar versión instalada
  • Notificación de actualización muestra comando curl directamente en el TUI

v1.4.0

  • URL simplificado - Solo escribe el nombre de la tienda, .myshopify.com se agrega automáticamente
  • Notificación de actualizaciones - Aviso en el menú principal cuando hay nueva versión
  • Sufijo .myshopify.com se muestra fijo en color cyan al agregar tienda

v1.3.0

  • Flujo ultra rápido - Seleccionar tienda inicia servidor automáticamente
  • Popup flotante - Presiona space o m para menú de acciones rápidas
  • Después de Pull/Push/Editor/Terminal regresa a los logs
  • Atajos directos: A/T/D/V en menú, 1-9 para tiendas

v1.2.0

  • Modo selección mejorado - bloquea toda interactividad excepto v para salir
  • Eliminado Ctrl+C como atajo de cierre (ahora solo Ctrl+Q)
  • Permite copiar texto con Ctrl+Shift+C en modo selección

v1.1.0

  • Sistema de iconos Nerd Font con fallback ASCII
  • Scroll mejorado en vista de logs (j/k, flechas, PgUp/PgDn, mouse wheel, g/G)
  • Modo selección con tecla v para copiar texto

v1.0.0

  • Servidores en background con logs en tiempo real
  • Soporte para Shopify Pull y Git Clone
  • Theme Push para subir cambios
  • Abrir editor (VS Code) y terminal integrada
  • Navegación tipo Vim

Autor

Alan Reynoso (JacuXx)


Licencia

MIT © JacuXx


Hecho con Bubbletea

About

shopify-tui es una herramienta de línea de comandos con interfaz interactiva (TUI) diseñada para simplificar el flujo de trabajo de desarrollo en Shopify. Proporciona una experiencia centralizada en la terminal para gestionar tiendas, temas y procesos de desarrollo.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors