
Tasks
Local-first, collaborative notes and tasks—built for offline reliability.
Tasks is a local-first, collaborative notes and tasks app built for reliability, offline resilience, and open collaboration. It’s designed for users who want full control over their data while still benefiting from modern real-time collaboration.
Packaged as a lightweight Progressive Web App (PWA), Tasks works offline by default and syncs efficiently when connectivity is available.
Links:
- Live demo: https://tasks-eight-dun.vercel.app
- Source code: https://github.com/odama626/tasks
What it does
-
Local-first storage
Data is cached using IndexedDB and service workers, allowing the app to function fully offline. -
Real-time collaboration
Peer-to-peer syncing with Yjs and WebRTC enables collaborative editing without centralized servers.
-
Offline-first sync model
Changes sync efficiently between devices using PocketBase subscriptions, with future plans for ActivityPub federation. -
Open source by design
Licensed under AGPL-3.0, ensuring the project remains transparent, forkable, and user-respecting.
-
Progressive Web App
Installable on desktop and mobile—no app stores, no lock-in. -
Flexible content model
Notes and tasks are stored as blocks, supporting rich text, embedded files, and quick-action templates.
-
Dynamic theming
Customizable CSS-based themes adapt the UI without heavy frameworks.
Architecture overview
- Frontend: Vanilla TypeScript + Web Components
- Collaboration layer: Yjs (CRDT) + WebRTC + IndexedDB persistence
- Optional backend: PocketBase for presence and event subscriptions
- Deployment: Optimized for edge hosting (Vercel, Cloudflare)
Why it exists
Task and note apps often trade control and durability for convenience. Tasks takes the opposite approach: offline-first, user-owned data, and collaboration that doesn’t depend on a central service.
It’s an exploration of what practical, everyday software looks like when local-first principles are treated as a foundation rather than a feature.
This remind you of a problem you've been dealing with?
I'd be happy to discuss it with you and see if it's something we could turn into a solution.
Book a call