mirror of
https://github.com/dergigi/boris.git
synced 2025-12-17 06:34:24 +01:00
- Add web app manifest with proper metadata and icon support - Configure vite-plugin-pwa with injectManifest strategy - Migrate service worker to Workbox with precaching and runtime caching - Add runtime caching for cross-origin images (preserves existing behavior) - Add runtime caching for cross-origin article HTML for offline reading - Create PWA install hook and UI component in settings - Add online/offline status monitoring and toast notifications - Add service worker update notifications - Add placeholder PWA icons (192x192, 512x512, maskable variants) - Update HTML with manifest link and theme-color meta tag - Preserve existing relay/airplane mode functionality (WebSockets not intercepted) The app now passes PWA installability criteria while maintaining all existing offline functionality. Icons should be replaced with proper branded designs.
87 lines
2.2 KiB
JSON
87 lines
2.2 KiB
JSON
{
|
|
"name": "boris",
|
|
"version": "0.4.3",
|
|
"description": "A minimal nostr client for bookmark management",
|
|
"homepage": "https://read.withboris.com/",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
|
|
},
|
|
"dependencies": {
|
|
"@fortawesome/fontawesome-svg-core": "^7.1.0",
|
|
"@fortawesome/free-solid-svg-icons": "^7.1.0",
|
|
"@fortawesome/react-fontawesome": "^3.0.2",
|
|
"applesauce-accounts": "^4.0.0",
|
|
"applesauce-content": "^4.0.0",
|
|
"applesauce-core": "^4.0.0",
|
|
"applesauce-factory": "^4.0.0",
|
|
"applesauce-loaders": "^4.0.0",
|
|
"applesauce-react": "^4.0.0",
|
|
"applesauce-relay": "^4.0.0",
|
|
"date-fns": "^4.1.0",
|
|
"nostr-tools": "^2.4.0",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router-dom": "^7.9.3",
|
|
"reading-time-estimator": "^1.14.0",
|
|
"remark-gfm": "^4.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^18.2.43",
|
|
"@types/react-dom": "^18.2.17",
|
|
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
|
"@typescript-eslint/parser": "^6.14.0",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"eslint": "^8.55.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
"typescript": "^5.2.2",
|
|
"vite": "^5.0.8",
|
|
"vite-plugin-pwa": "^1.0.3",
|
|
"workbox-window": "^7.3.0"
|
|
},
|
|
"eslintConfig": {
|
|
"root": true,
|
|
"env": {
|
|
"browser": true,
|
|
"es2020": true
|
|
},
|
|
"extends": [
|
|
"eslint:recommended"
|
|
],
|
|
"ignorePatterns": [
|
|
"dist",
|
|
".eslintrc.cjs",
|
|
"applesauce"
|
|
],
|
|
"parser": "@typescript-eslint/parser",
|
|
"plugins": [
|
|
"@typescript-eslint",
|
|
"react-refresh",
|
|
"react-hooks"
|
|
],
|
|
"rules": {
|
|
"react-refresh/only-export-components": [
|
|
"warn",
|
|
{
|
|
"allowConstantExport": true
|
|
}
|
|
],
|
|
"react-hooks/exhaustive-deps": "warn",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{
|
|
"argsIgnorePattern": "^_"
|
|
}
|
|
],
|
|
"@typescript-eslint/no-explicit-any": "warn",
|
|
"prefer-const": "error",
|
|
"no-var": "error"
|
|
}
|
|
}
|
|
}
|