Damián Vidal

← Projects

Admissions Tracker

Single-file HTML CRM for the UFV admissions workflow. File System Access API + IndexedDB. No install, no server, no cloud.

Stack: HTML, JavaScript, File System Access API, IndexedDB, SheetJS

Why

Part of what I did at UFV involved contacting prospective students at scale — Salesforce on one screen, my own notes scattered across spreadsheets. The shared CRM was slow, the spreadsheets drifted out of sync, and I needed a personal layer to keep track of who I had called, what I had said, and when to follow up.

I didn’t want to put candidate data into any cloud SaaS. So I built a single HTML file that lives on my disk and talks to a JSON file via the File System Access API.

What it does

How it works

A single static HTML file, ~3,500 lines of vanilla JS, no build step.

State lives in a JSON file on disk (admissions.json). The browser writes to it via the File System Access API (showSaveFilePicker, showOpenFilePicker), and the file handle persists across sessions in IndexedDB — so once you’ve picked the file, opening the HTML again restores everything automatically. No re-prompting, no “where’s the file” dialog every time.

User preferences (theme, KPI configuration) live in localStorage. The XLSM export is generated client-side with SheetJS, so weekly reports are a one-click download — no Excel macros, no server round-trip.

Dashboard with KPIs, search, and quick-entry form

Kanban view with follow-up columns and snapshot history

Call history table, filterable by status, with reminder badges

Status

In active use as a personal tool at the UFV admissions office. A couple of coworkers have asked for a copy.

See it