Desktop server that lets an Android phone pull and push files over a hotspot.
Wayer is two repos:
- This repo — PC app (Go backend + Wails frameless UI, SQLite catalog)
- ojilon/Wayer — Android client
The project is under active development. Protocol basics stay stable; the UI and import catalog are the current focus.
cmd /c "pnpm.cmd --dir frontend install"
cmd /c "pnpm.cmd --dir frontend build"
wails dev # full app with the .data/ stub; or: wails build -platform windows/amd64 -o WayerPC.exeThe window starts the TCP server on 0.0.0.0:5000. Connect the phone to the same hotspot and use the Android client. Full instructions: BUILD.md.
powershell -ExecutionPolicy Bypass -File scripts/build-installer.ps1Pick any drive/folder during setup (e.g. D:\projects\ → D:\projects\WayerPC\).
You get bin\WayerPC.exe on the user PATH (terminal + Windows search) and
data in data\ (shared/, received/, SQLite catalog).
- Stack — pure-Go backend (
internal/), Wails + Vite + TypeScript frameless frontend (frontend/). No Python, no C++/DLLs. - Console — server status, traffic stats, filterable/pausable live log.
- Import — search user storage (system paths skipped), tick results, or browse via OS dialogs. Paths are registered, never copied.
- Files — Received ⇄ Imported catalog ⇄ Shared segments, sorting, reveal-in-Explorer, missing-on-disk badges.
- Settings — choose/relocate the data folder, server address, version. First run shows onboarding when no data folder exists yet.
- SQLite catalog —
Data/wayerpc.db(migrates the oldimports.dbautomatically)./askand query-style/uploaduse the 20%-similarity rule. - Versioning — edit
version.jsonbefore building; Go, frontend, and the installer all derive from it (node scripts/sync-version.mjs). .data/— committed dev stub so clones build and test without touching real drives.
Phone wants a file from the PC.
- Query the import catalog (exact name, then ≥ 20% similar names).
- If one clear hit, respond
FOUND <bytes>and stream the file. - If several related names:
MATCHES <n>then onenameper line. - Fallback: exact-name search over
shared/andreceived/.
Phone sends a file. Saved under received/. Cataloged so later /ask can find it.
No integer size → catalog search only (related imported names, same 20% rule).
| Folder | Purpose |
|---|---|
shared/ |
Optional drop folder still searched by /ask |
received/ |
Files the phone uploaded |
Data/wayerpc.db |
SQLite catalog of imported paths + settings |
| Doc | Contents |
|---|---|
| BUILD.md | Dev, build, installer, release checklist |
| doc/00-overview.md | Rewrite goals + step order |
| doc/01-frontend-backend-split.md | Legacy → new module mapping |
| doc/02-backend-go.md | Go packages in depth |
| doc/03-frontend-wails.md | Frameless UI structure |
| doc/04-versioning.md | Change-the-version flow |
| doc/05-installer.md | NSIS behavior |
| doc/06-data-sqlite.md | Data layout + schema |
| doc/07-build-test-release.md | Commands reference |
| legacy/ | Previous Python/C++ implementation (reference only) |
MIT — see LICENSE.