Rápido, nativo, ligero, offline-first y con sincronización bidireccional continua en la nube.
Descargas de Release • Características • Configuración Supabase • Desarrollo • Solución macOS Gatekeeper
ReqTracker es una aplicación de escritorio moderna de alto rendimiento diseñada para desarrolladores, gestores de producto y profesionales que necesitan organizar proyectos, dar seguimiento riguroso a entregables y fechas límite, y registrar notas rápidas sin distracciones.
Construida con Tauri v2 y React, aprovecha la velocidad y seguridad de Rust en el backend para consumir una fracción mínima de memoria RAM (a diferencia de las aplicaciones basadas en Electron), ofreciendo una interfaz de usuario fluida, reactiva y elegante.
Su arquitectura Offline-First te permite trabajar sin interrupciones sin importar la calidad de tu conexión, mientras que su motor de Sincronización Bidireccional Continua se integra de manera directa con tu base de datos en Supabase mediante credenciales API privadas, sin intermediarios ni cuentas de usuario obligatorias.
- Crea, renombra, organiza y elimina proyectos con facilidad.
- Visualiza métricas instantáneas de requerimientos asociados, estados de avance y fechas críticas.
- Selector de proyecto activo con navegación rápida y diseño ergonómico.
- Clasificación de tareas en tres estados dinámicos: Pendiente (
To-Do), En Progreso (In-Progress) y Completado (Done). - Asignación de fechas de creación y estimadas de entrega.
- Cálculo automático de proximidad de entrega con alertas visuales de urgencia.
- Monitor en segundo plano que inspecciona periódicamente tus compromisos.
- Detección preventiva de requerimientos a 3 días o menos de su fecha límite.
- Disparo de notificaciones nativas del sistema operativo (macOS Notification Center, Windows Toast y Linux Desktop Notifications) con conmutador individual por requerimiento.
- Espacio dedicado para capturar lluvia de ideas, reflexiones técnicas o requerimientos preliminares.
- Tarjetas interactivas con edición en tiempo real, conteo de caracteres y eliminación directa.
- Tiempo Real & Polling Inteligente: Sincroniza cambios automáticamente mediante canales WebSocket (Supabase Realtime) y comprobación periódica configurable (15s, 30s recomendados, 1 min, 5 min o solo manual).
- Control de Concurrencia (Mutex): Bloqueo anti-colisiones que garantiza que múltiples peticiones de sincronización no interfieran entre sí ni corrompan el almacenamiento.
- Merge Seguro (Safe Merge): Fusión inteligente que protege tus modificaciones locales aún no enviadas a la nube, previniendo sobreescrituras accidentales.
- Zero-Flicker Experience: Comparación estructural por hash/digest para actualizar la interfaz únicamente cuando existen cambios reales en los datos, evitando molestos parpadeos.
- Sincronización Bidireccional de Bajas: Respeta eliminaciones en ambos extremos; lo que borres en Supabase se remueve del cliente local, y viceversa.
- Indicador de Estado en Vivo: Visualiza en la barra lateral el tiempo transcurrido desde la última sincronización ("hace instantes", "hace 20s", etc.).
- Abre el buscador global instantáneo desde cualquier pantalla con el atajo de teclado estándar.
- Busca por nombre de proyecto, título de requerimiento, descripción o contenido de ideas.
- Acciones directas y salto inmediato al elemento seleccionado.
- Soporte nativo para temas Claro y Oscuro con persistencia automática.
- Integración de tipografía de vanguardia Geist Font para máxima legibilidad y confort visual.
- Paleta de colores refinada, bordes sutiles y micro-interacciones pulidas con Tailwind CSS v4.
- Comprobación nativa de nuevas versiones al iniciar o bajo demanda.
- Descarga e instalación asistida en un clic con verificación de firmas criptográficas Minisign.
graph TD
A[UI React 19 + Tailwind v4] -->|Acciones del Usuario| B[DatabaseService Local]
B -->|Persistencia Instantánea| C[(LocalStorage / Caché Local)]
B -->|Encolado de Cambios| D[Sync Queue Offline]
subgraph "Motor de Sincronización Segura"
E[Mutex Concurrency Lock]
F[Push Cola Local]
G[Fetch Remoto Supabase]
H[Safe Merge Engine]
I[Zero-Flicker Diff Check]
end
D --> E
E --> F
F --> G
G --> H
H --> I
I -->|Si hubo cambios reales| C
I -->|Trigger Reactive Update| A
G <-->|WebSockets & REST API| J[(Supabase Cloud PostgreSQL)]
Puedes descargar el instalador oficial más reciente para tu plataforma desde GitHub Releases:
| Plataforma | Arquitectura | Formato de Instalador |
|---|---|---|
| 🍎 macOS | Apple Silicon (M1/M2/M3/M4) | .dmg, .app.tar.gz |
| 🍎 macOS | Intel (x86_64) | .dmg, .app.tar.gz |
| 🖥️ Windows | 64-bit (x64) | .msi, .exe |
| 🐧 Linux | 64-bit (x64) | .deb, .AppImage |
Al descargar la aplicación en macOS directamente desde el navegador o GitHub, el mecanismo de seguridad de Apple (Gatekeeper) puede desplegar el aviso:
⚠️ "ReqTracker está dañado y no puede abrirse. Deberías moverlo al basurero."
Esto es completamente normal en aplicaciones open-source sin firma notariada de pago de Apple Developer. El binario es 100% seguro y limpio.
- Mueve
ReqTracker.appa tu carpeta/Applications(Aplicaciones). - Abre la Terminal y ejecuta:
xattr -cr /Applications/ReqTracker.app
- ¡Listo! Abre ReqTracker con total normalidad desde tu Launchpad o Spotlight.
Vía interfaz gráfica: Puedes ir a Ajustes del Sistema > Privacidad y Seguridad y en el apartado Seguridad hacer clic en "Abrir de todos modos".
ReqTracker no requiere ningún servidor backend propio. Para habilitar la sincronización entre dispositivos:
- Crea una cuenta gratuita en Supabase y crea un nuevo proyecto.
- Dirígete a Project Settings > API y copia tu Project URL y tu Anon Key (pública).
- En ReqTracker, ve al menú Ajustes & Sync, ingresa las credenciales y pulsa Guardar y Probar Conexión.
- En el SQL Editor de tu panel de Supabase, ejecuta el siguiente script para crear las tablas con soporte para borrado en cascada:
-- 1. Tabla de Proyectos
create table if not exists projects (
id uuid primary key,
name text not null,
description text default '',
created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- 2. Tabla de Requerimientos
create table if not exists requirements (
id uuid primary key,
project_id uuid references projects(id) on delete cascade not null,
title text not null,
description text default '',
status text not null check (status in ('todo', 'in-progress', 'done')),
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
estimated_date text not null,
alarm_enabled boolean default true not null,
notified boolean default false not null
);
-- 3. Tabla de Ideas Rápidas
create table if not exists ideas (
id uuid primary key,
title text not null,
content text default '',
created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- Índices recomendados para optimizar el rendimiento
create index if not exists idx_requirements_project_id on requirements(project_id);
create index if not exists idx_requirements_status on requirements(status);
create index if not exists idx_requirements_estimated_date on requirements(estimated_date);
-- Habilitar Realtime en las tablas (opcional pero recomendado)
alter publication supabase_realtime add table projects;
alter publication supabase_realtime add table requirements;
alter publication supabase_realtime add table ideas;Si deseas compilar la aplicación por tu cuenta o contribuir al código:
- Node.js: v18.0 o superior (nodejs.org)
- Rust & Cargo: Versión estable más reciente (rustup.rs)
- Herramientas del sistema:
- macOS: Xcode Command Line Tools (
xcode-select --install). - Windows: C++ Build Tools (Visual Studio Installer).
- Linux:
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils.
- macOS: Xcode Command Line Tools (
-
Clonar el repositorio:
git clone https://github.com/CarlosGaubert/ReqTracker.git cd ReqTracker -
Instalar dependencias de Node:
npm install
-
Ejecutar en entorno de desarrollo con Hot-Reload:
npm run tauri dev
-
Ejecutar la suite de validación de release:
npm run verify
-
Compilar los instaladores de producción locales:
npm run tauri build
| Área | Tecnología | Propósito |
|---|---|---|
| Core & Runtime | Tauri v2 | Empaquetador nativo multiplataforma ultraligero y seguro. |
| Sistemas | Rust | Gestión de bandeja del sistema, ciclo de vida de ventana y notificaciones. |
| Frontend Framework | React 19 + TypeScript | Interfaz declarativa, tipada y reactiva. |
| Bundler | Vite 7 | Compilación ultrarrápida y Hot Module Replacement (HMR). |
| Estilos & UI | Tailwind CSS v4 | Motor de estilos atómicos de nueva generación. |
| Iconografía | Lucide React | Conjunto de iconos limpio y consistente. |
| Tipografía | Geist Variable | Tipografía geométrica de alta definición. |
| Nube & Base de Datos | Supabase | Almacenamiento PostgreSQL distribuido y WebSockets en tiempo real. |
| Seguridad & Firma | Minisign | Verificación de firmas criptográficas para actualizaciones remotas. |
El proyecto cuenta con un workflow en GitHub Actions (.github/workflows/release.yml) que automatiza por completo la distribución de binarios:
- Se genera un commit y se etiqueta con una versión
v*(ejemplo:v1.2.7). - Se envía el tag a GitHub (
git push origin v1.2.7). - GitHub Actions inicia 4 compilaciones paralelas en runners nativos de macOS, Windows y Linux.
- Se firman digitalmente los artefactos con la clave privada de Minisign.
- Se publica automáticamente un nuevo Release en GitHub con todos los instaladores listos para los usuarios.
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.