Secure, Decentralized & Collaborative Notes App powered by GenosDB
Source: Dev.to
Decentralized identity (Mnemonic & WebAuthn Passkeys) • P2P security middleware • Live full‑text search • Light/Dark UI
The Problem
Building modern, collaborative applications is notoriously complex. A typical stack includes:
- Front‑end framework
- Backend server
- Database
- Real‑time service (WebSockets, etc.)
- Separate authentication provider
Each piece adds overhead, complexity, and potential points of failure.
The Question
What if we could eliminate the entire backend and build a secure, real‑time, multi‑user app with just front‑end code?
The Solution: NotesDev
To prove that this is not only possible but surprisingly straightforward, we built NotesDev – a fully‑featured notes application contained in a single HTML file. Its power comes from a fundamentally different approach to application architecture, enabled by GenosDB.
Core Features & How We Built Them
1. User Management – No Server Needed
GenosDB’s built‑in Security Manager (SM) gives us a complete identity system simply by initializing the sm module.
| Flow | Description |
|---|---|
| New User Onboarding | db.sm.startNewUserRegistration() creates a temporary, in‑memory Ethereum identity. The UI shows the mnemonic phrase – the user’s permanent key – and prompts them to save it securely. |
| Passwordless Login | - Mnemonic login: db.sm.loginOrRecoverUserWithMnemonic() (paste saved phrase). - Passkey login: If db.sm.hasExistingWebAuthnRegistration() is true, a “Login with Passkey” button appears, invoking db.sm.loginCurrentUserWithWebAuthn() (biometric auth). |
Takeaway: No credentials are ever stored on a server. Identity is cryptographic, user‑owned, and managed entirely on the client side.
2. Real‑Time Notes & Instant Full‑Text Search
GenosDB condenses the classic fetch‑then‑subscribe pattern into a single, elegant method: db.map().
Displaying & Syncing Notes
db.map(
{ type: 'note' }, // query
(event, note) => { // callback
// event.action = 'initial' | 'added' | 'updated' | 'removed'
// Re‑render UI based on the event
}
);
- Initial load: Streams all existing notes (
action: 'initial'). - Live updates: Streams
added,updated, andremovedevents as they happen across the P2P network.
Instant Full‑Text Search
// Called on every keystroke
function onSearch(term) {
db.map(
{ type: 'note', $text: term }, // reactive query
(event, note) => { /* update UI */ }
);
}
GenosDB’s reactive engine automatically re‑evaluates the query and streams filtered results in real time – no separate indexing server required.
3. Decentralized Access Control
How can we enforce that only authorized users edit a shared note without a central server? The answer is P2P Middleware, registered with db.use().
Sharing a Note
// Add collaborator data to the note
note.collaborators = [
{ address: '0xABC…', permission: 'write' },
// …
];
Middleware Security Check
db.use(async (op) => {
// Only allow write operations on notes
if (op.type !== 'note' || op.action !== 'update') return op;
// Retrieve current note version
const current = await db.get(op.id);
// Who signed the operation?
const signer = op.meta.signer; // Ethereum address
// Owner or authorized collaborator?
const isOwner = signer === current.owner;
const hasWrite = current.collaborators?.some(
c => c.address === signer && c.permission === 'write'
);
// Allow or discard the operation
return isOwner || hasWrite ? op : null;
});
- Every peer runs this function locally.
- Operations are cryptographically signed with the user’s private key.
- Unauthorized updates are discarded, providing a robust, server‑less access‑control layer.
Why It Matters
NotesDev shows that the tools now exist to build applications that are:
- Powerful – real‑time sync, full‑text search, granular permissions.
- Resilient – no single point of failure; everything runs in the browser.
- Private – user‑owned identities, no server‑side credential storage.
GenosDB integrates identity, real‑time data, and P2P security, letting developers skip backend development and focus on user experience.
Try It Yourself
- Live Demo: Experience NotesDev now
- Source Code: See the entire app in a single file – GitHub repository
- Star Us: Show your support – ⭐️
The future of the web is collaborative, real‑time, and decentralized. And it’s easier to build than you think.
GenosDB Documentation Overview
GenosDB aims to simplify decentralized development.
This article is part of the official documentation of GenosDB (GDB).
Author: Esteban Futer Pozzi (estebanrfp)
- 📄 Whitepaper – Overview of GenosDB design and architecture
- 🛠 Roadmap – Planned features and future updates
- 💡 Examples – Code snippets and usage demos
- 📖 Documentation – Full reference guide
- 🔍 API Reference – Detailed API methods
- 📚 Wiki – Additional notes and guides
- 💬 GitHub Discussions – Community questions and feedback
- 🗂 Repository – Minified production‑ready files
- 📦 Install via npm – Quick setup instructions
- 🌐 Website – GitHub • LinkedIn