Design / Web/Notes Platform
28 / 67

05/2023Design / Web

Notes Platform

NotePad, a board of draggable, resizable sticky notes backed by the Firebase Realtime Database, with live sync and client-side search.

╌╌╌╌

NotePad is a board of sticky notes: create a note, drag it anywhere, resize it, and stack it over the others. Built with React, TypeScript, and Sass, bundled with Vite, with the Firebase Realtime Database holding the notes.

Firebase carries the backend, so there is no server to run. A single service, services/datastore.ts, wraps one Realtime Database reference, notes. onNotesValueChange subscribes with .on('value') and fires a callback on every snapshot; addNote pushes a new record, updateNote calls .child(id).update, and deleteNote calls .child(id).remove. The Notes container keeps the snapshot as a Map<string, NoteType> and re-renders whenever Firebase pushes a change, so a note moved in one tab lands in another without a reload.

Every note carries its own geometry. A NoteType is title and text plus x, y, width, height, and a z index. Dragging and resizing write those coordinates back, and focusing a note lifts its z above the rest so it comes to the front. Bodies render as Markdown through react-markdown, and a search box filters the board by substring across each note's title and text, highlighting the matches in place. Because persistence and sync are delegated to Firebase, the code that remains is mostly the note-editing surface itself.

References

  1. Project repository
  2. Live site

╌╌ END ╌╌