Documentation
Build from source
Prefer launching through Electron so the API cookie and encryption secret are provisioned for a secure local session.
Prerequisites
- Node.js 20+
- npm
Run locally
git clone https://github.com/nipunyatawara-dev/Omnisync.git
cd Omnisync
npm install
npm run electron # starts Electron + Next.js with a secure local API tokenEnvironment variables
Optional OAuth overrides: copy .env.example to .env.local.
| Variable | Purpose |
|---|---|
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET | Custom GitHub OAuth app credentials |
OMNISYNC_REQUIRE_GITHUB_OAUTH_CONFIG | Disable the bundled client ID |
OMNISYNC_API_TOKEN | Set by Electron for the local API session |
OMNISYNC_ENCRYPTION_SECRET | Set by Electron for credential encryption |
OMNISYNC_USER_DATA_DIR | Override the user data directory |
A bundled OAuth device-flow client ID exists for default GitHub sign-in. Profile data, encrypted secrets, and workspace configuration are stored under User data/ (or OMNISYNC_USER_DATA_DIR), with credential files at mode 0600.
Build
npm run build
npm startPackage for distribution
npm run build:electron
npm run electron:pack # unpacked app in dist/
npm run electron:build # current-platform installermacOS
npm run electron:build:mac-arm64
npm run electron:build:mac-x64
# or both:
npm run electron:build:macmacOS builds ship unsigned by default (identity: null). Distributing signed/notarized builds requires an Apple Developer identity configured in electron-builder. Unsigned apps may need right-click → Open on first launch · see Install.
Windows
npm run electron:pack:win # unpacked app for smoke testing
npm run electron:build:win # NSIS installer (.exe)Windows builds are unsigned by default. SmartScreen may warn on first launch until the binary is Authenticode-signed. Publish artifacts to GitHub Releases, then bump RELEASE_TAG in the website lib/downloads.ts so the download page points at the new files.
Tests
npm test # Vitest
npm run test:e2e # PlaywrightNext
- Architecture · how the Electron shell, Next.js UI, and API layers fit together
- Contributing · pull requests, style, and issue reports