dayGLANCE can sync your tasks, notes, habits, and routines across devices via WebDAV. There's no proprietary cloud involved — your data goes to a server you control.
Sync is optional and off by default. The app works fully without it; everything stays in your browser's localStorage until you configure a sync target.
Any WebDAV-compatible server works. Tested providers include:
https://nextcloud.yourdomain.com)dayGLANCE will write to:
<nextcloudUrl>/remote.php/dav/files/<username>/dayglance/dayglance-sync.json
The dayglance/ directory is created automatically on first sync.
Tip: Use an app password rather than your main Nextcloud password. Generate one in Nextcloud under Settings → Security → Devices & Sessions.
https://storage.yourdomain.com/dav/)dayGLANCE will write to:
<webdavUrl>/dayglance-sync.json
| Data | Synced |
|---|---|
| Scheduled tasks | ✅ |
| Inbox tasks | ✅ |
| Recurring tasks | ✅ |
| Daily notes | ✅ |
| Habits & habit logs | ✅ |
| Routines | ✅ |
| Recycle bin | ✅ |
| UI preferences (clock format, minimized sections, etc.) | ❌ Device-local |
Sync runs automatically every 15 minutes while the app is open. You can also trigger a manual sync at any time from Settings → Cloud Sync → Sync Now.
All data is stored in a single JSON file (dayglance-sync.json) on your WebDAV server. The file is overwritten on every sync. It's human-readable and can be backed up or inspected directly.
dayGLANCE uses a thoughtful per-entity merge strategy — not a simple "last write wins" overwrite of the entire file. When two devices sync after making changes, here's how conflicts are resolved:
| Data type | Strategy |
|---|---|
| Tasks (scheduled, inbox, recycle bin, recurring) | Newer lastModified timestamp wins per task ID; local wins on a tie |
| Daily notes | Newer lastModified wins per date |
| Habits | Newer lastModified / createdAt wins per habit ID |
| Habit logs | Max count wins per habit per day — counts only ever go up |
| Routine definitions | Union by ID; deleted routines are suppressed via tombstones |
| Today's routines | Unioned if same date; newer date wins entirely if dates differ |
| Completed task IDs | Union (set merge — completions are never lost) |
| Deleted task IDs | Union, keeping the most recent deletion timestamp |
| UI preferences | Local always wins — these are device-specific |
Deletions are propagated via tombstones, so a task deleted on one device won't reappear when the other device syncs. Cross-list conflicts are also handled — for example, if Device A moved a task to the inbox and Device B deleted it, the newer lastModified vs deletedAt timestamp decides the outcome.
There is no field-level merging within a single task. If Device A edits a task's title and Device B edits the same task's time block at the same time, whichever device has the newer lastModified timestamp wins the entire task record — the other device's change is silently discarded.
This is the standard tradeoff for this type of sync engine — Obsidian, Logseq, and most similar tools handle it the same way. In practice it's rarely an issue, but it's worth knowing if you edit heavily across multiple devices simultaneously.
dayGLANCE can automatically back up your data to your WebDAV server on a configurable schedule (hourly, daily, or weekly) with retention policies. Backups are separate from the sync file and can be restored with one click from Settings → Backup & Restore.
Sync fails with an authentication error
Double-check your WebDAV URL and credentials. For Nextcloud, make sure you're using an app password, not your main account password — some Nextcloud configurations block basic auth with the primary password.
The dayglance/ directory wasn't created on my Nextcloud
dayGLANCE attempts to create the directory on first sync. If it fails, create it manually in your Nextcloud Files view and try syncing again.
I switched devices and my data didn't appear
Make sure you've configured sync on the new device with the same WebDAV credentials, then trigger a manual sync. Data lives in localStorage on each device — it populates from the sync file on the first pull.
My changes on one device were overwritten
See the merge behavior section above. If two devices edited the same task within the same sync window, the one with the newer lastModified timestamp wins. This is expected behavior.