Tracker de Postulaciones es una aplicación que funciona completamente en el navegador. Todos los datos que ingresas (postulaciones, información personal, preferencias) se almacenan exclusivamente en tu dispositivo utilizando localStorage, una tecnología de almacenamiento web que mantiene la información en tu navegador.
Tus datos nunca salen de tu dispositivo
No hay bases de datos remotas ni APIs
Tú decides cuándo borrar tus datos
// lib/storage.ts
// Constantes para las claves de localStorage
const STORAGE_KEY = "job-applications"
const USER_INFO_KEY = "user-info"
// Obtener todas las postulaciones
export function getApplications(): Application[] {
if (typeof window === "undefined") return []
try {
const data = localStorage.getItem(STORAGE_KEY)
return data ? JSON.parse(data) : []
} catch (error) {
console.error("Error al obtener las postulaciones:", error)
return []
}
}
// Guardar una postulación
export function addApplication(application: Application): void {
try {
const applications = getApplications()
applications.push(application)
localStorage.setItem(STORAGE_KEY, JSON.stringify(applications))
window.dispatchEvent(new Event("storage"))
} catch (error) {
console.error("Error al agregar la postulación:", error)
throw error
}
}
// Obtener la información del usuario
export function getUserInfo(): UserInfo {
if (typeof window === "undefined") return getDefaultUserInfo()
try {
const data = localStorage.getItem(USER_INFO_KEY)
if (!data) {
const defaultInfo = getDefaultUserInfo()
saveUserInfo(defaultInfo)
return defaultInfo
}
return JSON.parse(data)
} catch (error) {
console.error("Error al obtener la información del usuario:", error)
return getDefaultUserInfo()
}
}
// Guardar la información del usuario
export function saveUserInfo(userInfo: UserInfo): void {
try {
localStorage.setItem(USER_INFO_KEY, JSON.stringify(userInfo))
window.dispatchEvent(new Event("user-info-updated"))
} catch (error) {
console.error("Error al guardar la información del usuario:", error)
throw error
}
}Como puedes ver en el código anterior, todas las operaciones de lectura y escritura se realizan exclusivamente con localStorage. No hay llamadas a APIs, no hay envío de datos a servidores externos, y no hay código que transmita tu información fuera de tu navegador.
fetch o axios para enviar datosSi borras los datos de navegación, incluyendo el almacenamiento local, perderás toda la información guardada en la aplicación. Te recomendamos exportar tus datos periódicamente usando la función de exportación en la sección de postulaciones.
No automáticamente. Como los datos se almacenan localmente en tu navegador, no se sincronizan entre dispositivos. Sin embargo, puedes exportar tus datos en un dispositivo e importarlos en otro.
Los datos almacenados en localStorage son tan seguros como tu dispositivo. Si otras personas tienen acceso a tu dispositivo, podrían potencialmente ver esta información. Te recomendamos no guardar información altamente sensible como contraseñas o datos financieros.
Sí, localStorage tiene un límite de aproximadamente 5-10 MB dependiendo del navegador. Esto es suficiente para cientos de postulaciones, pero si notas problemas de rendimiento con muchos datos, considera exportar y archivar postulaciones antiguas.