A Google Keep-inspired note-taking application built with React, featuring persistent local storage via IndexedDB.
- React 19 — UI framework
- Vite 8 — Build tool and dev server
- Material UI (MUI) v9 — Component library (icons,
Fab,Zoom) - Dexie.js — IndexedDB wrapper for persistent note storage
- ESLint — Code linting
- Create notes — Expandable input form with title and content fields
- Persistent storage — Notes survive page reloads via IndexedDB (Dexie)
- Delete notes — Remove individual notes with a single click
- Responsive design — Clean, card-based layout that works across devices
- Smooth animations — Zoom-in transition on the add button
- Node.js >= 18
npm installStart the Vite dev server with hot module replacement:
npm run devCreate a production-ready build:
npm run buildPreview the production build locally:
npm run previewnpm run lintkeeperV2/
├── public/
│ ├── index.html # HTML entry point (legacy)
│ └── styles.css # Global styles
├── src/
│ ├── main.jsx # App entry point
│ ├── App.jsx # Main app component (Dexie-backed)
│ ├── db.js # Dexie database config
│ ├── components/
│ │ ├── Header.jsx # App header / branding
│ │ ├── Footer.jsx # Copyright footer
│ │ ├── CreateArea.jsx # Note creation form
│ │ └── Note.jsx # Individual note card
│ └── assets/ # Static assets (images, icons)
├── index.html # Vite HTML entry point
├── vite.config.js # Vite configuration
├── eslint.config.js # ESLint flat config
└── package.json
- Adding a note — Click the text area to expand the form, enter a title (optional) and content, then click the + button. The note is saved to IndexedDB via Dexie and rendered immediately.
- Persistence —
src/db.jsdefines anotesDBdatabase with anotestable.src/App.jsxusesuseLiveQueryfrom Dexie to reactively fetch notes. - Deleting a note — Click the delete icon on any note card to remove it from IndexedDB.
| Package | Purpose |
|---|---|
react / react-dom |
UI rendering |
@mui/material |
Material UI components (Fab, Zoom) |
@mui/icons-material |
Material icons (Add, Delete, Highlight) |
dexie / dexie-react-hooks |
IndexedDB abstraction + React hooks |
@emotion/react / @emotion/styled |
MUI styling engine |