JobTrackr es una herramienta sencilla y eficiente para gestionar tus candidaturas de empleo. Organiza tus procesos de selección en un tablero Kanban intuitivo, mantén un registro de tus entrevistas y visualiza tu progreso de un vistazo.
Esta versión inicial (MVP) se centra en la experiencia core de gestión local:
- Tablero Kanban: Visualiza tus candidaturas por estado (Pendiente, Entrevista, Oferta, Rechazada).
- Gestión de Candidaturas (CRUD): Crea, edita y elimina registros de empleo.
- Movimiento de Estados:
- Desktop: Soporte para Drag & Drop.
- Mobile: Selector de estado simplificado para pantallas táctiles.
- Validación de Datos: Modal con validación para asegurar que la información sea correcta.
- Persistencia: Todos los datos se guardan automáticamente en el
localStoragede tu navegador. - Empty State: Interfaz optimizada para cuando aún no tienes candidaturas.
- Framework: Vue 3 (Composition API +
<script setup>) - Build Tool: Vite
- Lenguaje: TypeScript
- Estilos: Tailwind CSS
- Testing: Vitest + Vue Test Utils
Sigue estos pasos para levantar el proyecto localmente:
-
Clona el repositorio:
git clone <url-del-repositorio> cd job-trackr
-
Instala las dependencias:
pnpm install
-
Inicia el servidor de desarrollo:
pnpm dev
Se incluye autenticación con InsForge:
- Signup: crea una cuenta nueva con email y contraseña.
- Login: inicia sesión con email y contraseña.
- Reset de contraseña: solicita un enlace para recuperar acceso.
- Sync remoto: al iniciar sesión, la app puede unificar candidaturas locales y remotas.
- Modo anónimo: si no activas auth, la app sigue funcionando con
localStorage.
-
Copiar el fichero de ejemplo de variables de entorno:
cp .env.example .env
-
Completa las variables públicas del cliente:
VITE_INSFORGE_URL=https://<appkey>.<region>.insforge.app VITE_INSFORGE_ANON_KEY=<public-anon-key> VITE_INSFORGE_AUTH_ENABLED=true
-
Si quieres mantener auth apagada temporalmente:
VITE_INSFORGE_AUTH_ENABLED=false
- El bootstrap detecta sesión y define estado global:
anonymous,authenticated,conflict_required,reconciling,error.
- Si hay datos locales y remotos al hacer login:
- se muestra una modal bloqueante con opciones
merge,keep_account,keep_local.
- se muestra una modal bloqueante con opciones
pnpm dev: Inicia el entorno de desarrollo.pnpm build: Genera la versión de producción en la carpetadist.pnpm test: Ejecuta la suite de pruebas con Vitest.pnpm preview: Previsualiza localmente la build de producción.pnpm test -- --run: Ejecuta suite completa en modo CI.
Cuando se modifique la lógica de sincronización o resolución de conflictos, desplegar la función de InsForge manualmente:
npx @insforge/cli functions deploy reconcile-applicationsSi ya estás autenticada en el CLI y el proyecto está vinculado, este comando actualiza la function reconcile-applications en InsForge.
src/
├── components/ # Componentes de la interfaz (Kanban, Form, Cards)
├── composables/ # Lógica de estado y persistencia (useApplications)
├── types/ # Definiciones de tipos TypeScript
├── constants/ # Constantes del dominio (Estados)
├── __tests__/ # Pruebas unitarias e integración
└── tailwind.css # Configuración global de estilos
¡Las contribuciones son bienvenidas! Para mantener el proyecto organizado, seguimos este flujo:
-
Flujo de Ramas:
- Crea una rama para tu cambio:
git checkout -b feat/nombre-de-la-mejoraofix/descripcion-del-error. - Asegúrate de que las pruebas pasen antes de enviar.
- Crea una rama para tu cambio:
-
Commits Convencionales: Usamos el formato de commits convencionales para mantener un historial claro:
feat(scope): mensajepara nuevas funcionalidades.fix(scope): mensajepara correcciones.docs(scope): mensajepara cambios en documentación.
Ejemplo:
feat(kanban): añadir animación al mover tarjetas -
Abrir PR: Abre un Pull Request detallando los cambios realizados y su propósito.