An offline note-taking PWA built with React.js with persisted data via the browser's IndexedDB
- idb-keyval — an abstraction for Indexed DB that uses promises. All saving/persistence goes through here
- slate.js — a robust content-editable editor that allows for rich-text editing. This is used as the main editor for the web app. I began the project using Facebook's draft.js, however, it is has many flaws and seems to be a dying project
- use-dark-mode — a React hook for persisting a setting for dark mode that is initially based on
prefers-color-scheme
media query - redux — used as state management for React. Originally, I had attempted to use React's Context API to handle state management, and it worked, but it began to cause performance issues
- relative-time-format — a polyfill for
Intl.RelativeTimeFormat
that is loaded dynamically whenIntl.RelativeTimeFormat
is missing. This was used to render a readable form of the time passed since the last edit