制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Somebody asks for your passport scan, your Aufenthaltstitel or last year's Arbeitszeugnis, and it is on the other laptop, or in an email from 2023, or nowhere. This app fixes that. Open one link on any phone or computer, type your password once, and every important document is there to preview, send or download.
It also has a shared clipboard: copy a link on the laptop, tap Copy on the phone.
There is no server and no database. The app is a static page on GitHub Pages, and your files sit in a private GitHub repo that only you can open. It costs nothing to run.
| Upload from anywhere | Big upload button on phones, drag and drop on a laptop, or paste a screenshot with Ctrl+V. Exact duplicates are spotted and skipped. |
| Sorts itself | Files land in ID & Visa, Work, Education, Money, Home, Photos or Other by reading the file name in English and German (Aufenthaltstitel, Mietvertrag, Lebenslauf). |
| Finds anything | Search forgives typos (pasport) and understands file types (pdf, photo), devices (iphone), categories (visa) and dates (march, week). |
| Favourites | Heart a file and it stays at the top on every device. |
| Opens instantly | PDFs, images and text files preview at once. Files are cached on the device and start downloading as soon as your finger touches them. |
| Hands files over | Copy images and text to the clipboard, or send the real file to WhatsApp, Mail or AirDrop through the phone's share sheet. |
| Forgiving | Rename in one tap. Deleted files go to the Trash for 30 days and come back with one tap (or Undo right away). Every change is a git commit, so nothing is ever really lost. |
| Remembers where files came from | Each file shows the device it was uploaded from and when. |
| Installs like an app | Add it to your home screen and it opens full screen, even without a connection. |
| Backup in one tap | Download every document in one zip, any time. |
| Dark mode | Follows your phone or laptop, in maroon-black with the kumkum header. |
Copy something on the laptop, open the Clipboard tab and click Paste and save (or just press Ctrl+V). On the phone, tap Copy on the top clip. It works the other way round too.
New clips show up within about ten seconds, with the device they came from. Every link in a clip can be tapped, long notes fold away, and deleting has Undo. Bookmark .../#clipboard on your phone's home screen to land straight on it.
Clips live in your private vault like your documents, but they are not end-to-end encrypted, so keep bank passwords out of it.
Phone / laptop GitHub
┌─────────────────────┐ HTTPS + key ┌──────────────────────────────┐
│ this app │ ───────────────▶ │ your vault repo (PRIVATE) │
│ (GitHub Pages, │ │ files/Passport.pdf │
│ public code only) │ ◀─────────────── │ files/CV.pdf ... │
└─────────────────────┘ └──────────────────────────────┘
▲
└── your password unlocks the access key, which is stored
AES-256 encrypted in config.js
api.github.com. No trackers, no CDNs, no third-party code.More in docs/ARCHITECTURE.md. Found a problem? See SECURITY.md.
docsync-vault.https://<you>.github.io/<your-fork>/setup.html, paste the token, choose a password, and paste the result into config.js.Every step, click by click, with your own links filled in: the Make your own guide (or docs/SETUP.md in the repo). To get new versions later, press Sync fork on your repo page.
Plain HTML, CSS and JavaScript modules, no framework and no build step. Read assets/app.js top to bottom and you know the app.
index.html the app
sw.js offline start: keeps the app (never your documents) on the device
about.html public front page: what the app is, how it works
make-your-own.html click-by-click guide to making your own copy
setup.html one-time setup: encrypts your token into config.js
config.js the only file a user edits
assets/
app.js UI, in numbered sections
github.js the only code that talks to GitHub
state.js SyncedFile engine + synced favourites
clips.js shared clipboard
organize.js categories, search, sorting (pure functions)
zip.js backup zip writer (pure functions)
trash.js trash names, ages and the 30-day rule (pure functions)
version.js version number + What's new notes
meta.js where and when each file was uploaded
blobs.js file cache, prefetch, duplicate check
crypto.js token encryption
style.css all styles and colour tokens
about.css, about.js the front page
guide.js fills the reader's names into the Make your own guide
fonts/ Bricolage Grotesque for headings (SIL OFL)
scripts/
build-site.sh copies the site and cache-busts it for deploy
screenshots.mjs README screenshots from a fake vault
compose-images.mjs frames them into the README images
tests/e2e.mjs 282 browser checks against a fake GitHub
.github/workflows/ test on every push, deploy to Pages when green
npm install && npx playwright install chromium
npm run build && python3 -m http.server 8080 --directory _site &
npm test # every check must print "ok"
npm run screenshots # refresh the README images
The tests and screenshots fake the whole GitHub API, so no token is needed and no real document ever appears in this repo. See CONTRIBUTING.md, or docs/AI_HANDOFF.md to continue the work with another AI.
Bold and warm, taken from Saurashtra and Kathiyawad in Gujarat. Every screen opens with a kumkum red header (#a3201b) printed with bandhani, the tie-dye dots of Jamnagar, and hemmed with a bandhani strip. Haldi yellow (#e3a21a) marks the things you reach for: Upload, Copy, a new clip. Text is ink on warm cotton white, and headings are set in Bricolage Grotesque. The colours are tokens at the top of assets/style.css.
A "Recent" shortcut, and uploads up to 100 MB. The full list is in docs/AI_HANDOFF.md.
MIT © 2026 Mayank