Real-time Collaborative Notes App

Overview

A modern web app for collaborative note-taking. Built from the ground up with real-time editing, offline support, and per-user history, it's designed to feel fast, responsive, and dependable even when multiple people are typing at once.

Why I built it

My goal was to improve my skills by tackling a technical challenge. Exploring real-time collaboration, conflict resolution, and offline-first design seemed like a suitable challenge. Rather than building a typical to-do app, I developed it using a modern stack with AWS Lambda, GraphQL, and TypeScript.

What makes it interesting

  • Real-time editing

    Enables multiple users to edit the same note simultaneously using WebSockets and operational transformation without overwriting each other's changes.

  • Per-user version history

    Each user can undo and redo their own edits independently, even after reconnecting or syncing with others. A single user's history stays consistent across multiple devices.

  • Offline support

    Works fully offline as a Progressive Web App (PWA), with notes stored in IndexedDB. Supports note creation, editing, and history without an internet connection, and syncs seamlessly when back online.

  • Seamless note navigation

    Supports infinite scroll for navigating notes, using efficient cursor-based pagination with real-time auto-refresh that ensures smooth responsive navigation even as the note list grows.

  • Local-only mode

    Includes a no-login, local-only mode for private note-taking. Also supports multi-account use when logged in.

  • Infrastructure as code

    Entire backend and infrastructure is deployed using AWS CDK, built on AWS Lambda and managed services.

Real-Time Editing Demo

Three users editing the same note in real-time, with independent cursors and no conflicts.

Notes app real-time users collaborative editing demo

Screenshots

  • Notes three users editing at the same time
  • Notes drag and drop