# Bookmark SPA Bookmark SPA is a single-page application for organising and searching personal web links. It provides a global search launcher, bookmark management, JSON import/export, and local persistence via IndexedDB. ## Features - **Global search modal** powered by Fuse.js with fuzzy, multi-keyword, and pinyin-initial matching - **Configurable keyboard shortcut** (default `Ctrl+K`) with inline capture UI - **Bookmark CRUD UI** with Element Plus forms, tag support, and visit tracking - **Recent activity** section and full bookmark library view - **Local storage** via Dexie/IndexedDB plus JSON import/export helpers - **Responsive glassmorphism layout** built with Vue 3, Pinia, and Sass modules ## Tech Stack - Vue 3 + Vite + Element Plus UI - Pinia state management - Dexie for IndexedDB access - Fuse.js + pinyin-pro for search indexing - Playwright & Vitest for automated testing ## Getting Started ```sh npm install # install dependencies npm run dev # start Vite dev server npm run build # production build npm run preview # preview production build ``` ## Quality Tooling ```sh npm run lint # ESLint with autofix npm run test:unit # Vitest unit tests npm run test:e2e # Playwright end-to-end tests ``` > First-time Playwright users should install browsers with `npx playwright install`. ## Keyboard Shortcuts - `Ctrl+K` (default): open the global search launcher (configurable in the Settings drawer) - `Esc`: close the search modal - Arrow keys & `Enter`: navigate and open search results ## Project Structure Highlights - `src/components/` layout, search, link, and settings components - `src/stores/` Pinia stores for links and settings - `src/services/db.js` Dexie database schema - `src/views/HomeView.vue` main landing page using `AppShell` - `src/composables/useSearchEngine.js` search index and ranking logic