PROJECT

Eduport

Track university applications, programs, labs, and the documents and emails between them, all stored as plain Markdown on your disk.
STATUSV1 · ACTIVE
PLATFORMmacOS · Windows · Linux
Tauri 2SvelteKitSvelte 5Tailwind v4FastAPIPydantic v2SQLite FTS5RustPython 3.12+
01

WHAT IT IS

Eduport is a desktop app for the messy middle of grad school applications, the part where you're juggling twenty programs, a dozen labs, half a hundred professors, and a paper trail of recommendation requests, transcripts, and emails. It gives that mess a structure without locking you out of it.

Every entity (university, lab, person, program, application, document, email, note) is one Markdown file on your disk with YAML frontmatter. The app indexes those files and gives you a fast UI on top: list views, a kanban board for applications, a three-pane layout, ⌘K full-text search. The data stays yours and stays portable. Sync the folder with Dropbox, iCloud, or Syncthing. Open it in Obsidian alongside the app. Edit a file by hand if you want, and Eduport notices and re-indexes.

02

WHY I BUILT IT

Spreadsheets felt brittle, Notion felt like a vendor cage, and a folder of disorganized PDFs lost the relationships between things. I wanted the relationships to be first-class ("this lab is at this university," "this email is about this application," "this professor wrote this letter") without inventing a database I'd have to migrate later.

The compromise that made it work: your files are the database. SQLite lives outside the data folder (in the OS cache dir) and rebuilds itself if missing or stale. So the app can disappear and your data is still just a folder of Markdown files. That trade, slower indexing for total durability, is the whole point.

03

HOW IT WORKS

Markdown is the database

Eight entity types, each as <slug>-<id>.md with YAML frontmatter. Renames in Obsidian don't break links because [[wikilinks]] resolve by id-suffix.

Tauri shell + Python sidecar

A Rust shell hosts a WebView pointed at a local FastAPI process. The Python side parses Markdown, watches the file system, and indexes into SQLite with FTS5.

Three-pane UI

Sidebar nav with counts and tag chips, list/kanban toggle, detail panel with structured fields and rendered body. Drag application cards across status columns.

Soft delete, never lose data

Items move to .eduport-trash/ inside the data folder, restorable from the in-app trash view. The source of truth is always your filesystem.
04

GET IT

Installers for macOS, Windows, and Linux are on the GitHub releases page. They're unsigned for now; the release notes walk through the dismissable warnings on each OS.

# Or build from source
git clone https://github.com/rusenbb/eduport.git
cd eduport
python3 scripts/build_desktop.py