SoftVet (también documentado como VetSoft) es un sistema de gestión para clínicas veterinarias orientado a agendar citas, administrar clientes y mascotas, y automatizar la comunicación mediante Google Calendar y Gmail. Funciona como app web o como aplicación de escritorio Electron para Windows.
Qué hace
La app le da al personal de la clínica un solo espacio de trabajo para las operaciones del día a día:
- Dashboard — Estadísticas generales: citas de hoy, total de clientes, total de mascotas y conteo mensual de citas.
- Appointments — CRUD completo para agendar con tipos (consultation, vaccination, surgery, grooming, emergency, follow-up) y estados (scheduled, confirmed, in-progress, completed, cancelled, no-show).
- Calendar — Integración con FullCalendar con vistas de día, semana y mes para programación visual.
- Clients — Registros de dueños con datos de contacto, dirección y notas.
- Pets — Perfiles de pacientes vinculados a clientes: especie, raza, género, peso, microchip y notas médicas.
- Settings — Preferencias de la clínica y configuración de integración con Google.
- Authentication — Login con Google OAuth 2.0, rutas protegidas y manejo de refresh de tokens.
Cuando se crea o actualiza una cita, el sistema puede sincronizarla con Google Calendar y enviar notificaciones por correo vía la Gmail API — manteniendo calendarios del personal y comunicación con clientes al día sin copiar y pegar manualmente.
Stack técnico
| Capa | Elección |
|---|---|
| Frontend | React 18 + TypeScript |
| Build | Vite 5 |
| Desktop | Electron 28 (bandeja del sistema, notificaciones nativas, instalador Windows) |
| Estado | Zustand |
| Routing | React Router 6 |
| DB local | Dexie.js (IndexedDB) |
| UI de calendario | FullCalendar 6 |
| Google APIs | OAuth 2.0, Calendar API, Gmail API |
| Estilos | Tailwind CSS 3 + Headless UI / Radix UI |
| HTTP | Axios |
Arquitectura
El proyecto sigue una arquitectura en capas del lado del cliente documentada en SPEC.md:
Electron Shell (window, tray, IPC, notifications)
↓
Vite + React (pages, components, hooks)
↓
Business Logic (Zustand stores, Google services)
↓
Data Layer (IndexedDB via Dexie + Google APIs)
Los stores de Zustand gestionan citas, clientes, mascotas, auth y estado de UI. Dexie persiste todos los registros localmente para operación con capacidad offline. La capa de servicios de Google (src/services/google/) centraliza OAuth, sincronización de eventos de Calendar, envío por Gmail, refresh de tokens y manejo de errores.
El shell de Electron (electron/main.ts) agrega gestión nativa de ventanas, bandeja del sistema con acciones mostrar/salir, notificaciones de escritorio vía IPC e instalador NSIS para Windows mediante electron-builder.
Funcionalidades clave en detalle
Sincronización Cita ↔ Google Calendar
Cada cita puede almacenar un googleCalendarEventId. Al crear o actualizar una cita, los cambios se envían al Google Calendar conectado, para que los veterinarios vean los horarios de la clínica junto con sus calendarios personales.
Notificaciones Gmail
El servicio Gmail compone y envía correos automatizados para confirmaciones y recordatorios de citas, con banderas (emailSent, reminderSent) registradas en cada cita.
Modelo de datos completo
Interfaces tipadas en src/db/types.ts definen Users (roles admin, veterinarian, receptionist), Clients, Pets (8 tipos de especies), Appointments (6 tipos, 6 estados) y Settings — todo almacenado en IndexedDB con hooks de Dexie para actualizaciones reactivas de UI.
Despliegue de escritorio
npm run electron:dev ejecuta Vite + Electron en paralelo. electron:build:win produce un instalador NSIS para Windows con directorio de instalación configurable.
Proceso de desarrollo
Scaffold inicial
“Initial commit - Vet Soft application” — ~17,000 líneas en 58 archivos, incluyendo:
- App React completa con 7 páginas (Dashboard, Appointments, Calendar, Clients, Pets, Settings, Login)
- Biblioteca completa de componentes UI (Button, Card, Modal, DatePicker, TimePicker, Select, etc.)
- Layout con navegación lateral y header
- Esquema de base de datos Dexie con modelos tipados y hooks de React
- Stores Zustand para todas las entidades
- Módulos de servicios Google OAuth, Calendar y Gmail con manejo centralizado de errores y refresh de tokens
- Calendario de citas FullCalendar con renderizado personalizado de eventos
- Formularios para crear/editar clientes, mascotas y citas
- Proceso principal de Electron con bandeja, notificaciones y handlers IPC
SPEC.md— especificación técnica completa (~1,200 líneas)- Configuración de build Vite + Electron e instalador Windows
.env.examplepara credenciales de Google API
Toda la plataforma de gestión clínica se arquitectó e implementó como un release cohesivo v1.0 en lugar de commits incrementales.


Construyendo Smartclic Demo