Skip to content

Commit 837493e

Browse files
authored
Merge pull request #112 from acarlson33/feat/notifications
Merge feat/notifications to add notification system & minor codebase improvements
2 parents acc32e1 + 86e08e2 commit 837493e

File tree

25 files changed

+3335
-595
lines changed

25 files changed

+3335
-595
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Setup Appwrite
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
jobs:
8+
setup-appwrite:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
contents: read
12+
13+
steps:
14+
- name: Checkout repository
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Bun
18+
uses: oven-sh/setup-bun@v2
19+
with:
20+
bun-version: '1.2.22'
21+
22+
- name: Install dependencies
23+
run: bun install
24+
25+
- name: Run Appwrite setup script
26+
run: bun scripts/setup-appwrite.ts
27+
env:
28+
APPWRITE_ENDPOINT: ${{ secrets.APPWRITE_ENDPOINT }}
29+
APPWRITE_PROJECT_ID: ${{ secrets.APPWRITE_PROJECT_ID }}
30+
APPWRITE_API_KEY: ${{ secrets.APPWRITE_API_KEY }}

bun.lock

Lines changed: 38 additions & 42 deletions
Large diffs are not rendered by default.

docs/PERFORMANCE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ bun build:webpack # Production build with Webpack
175175
**Problem:** No offline capabilities, assets refetch every visit, emoji images loaded from network every time
176176
**Solution:**
177177

178-
- Converted service worker to TypeScript (`src/sw.ts`) with full type safety
178+
- Plain JavaScript service worker (`public/sw.js`) for maximum browser compatibility
179179
- Added dedicated emoji cache (`EMOJI_CACHE_NAME`) for custom emoji images
180180
- Cache-first strategy for emoji requests from Appwrite storage:
181181
- Returns cached emojis instantly (no network delay)
@@ -187,7 +187,7 @@ bun build:webpack # Production build with Webpack
187187
- Background sync for offline message queue
188188
- Created `ServiceWorkerRegistration` component
189189
- Automatic updates check every hour
190-
- Build script (`build:sw`) compiles TypeScript service worker to `public/sw.js`
190+
- Push notification support with action buttons
191191
- **Impact:** ~100ms load time for repeat visits, instant emoji rendering, offline functionality, 90%+ bandwidth reduction
192192

193193
### 14. Debounced Batch Updates ✅

next.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const nextConfig = {
1010
reactStrictMode: true,
1111
poweredByHeader: false,
1212
compress: true,
13+
reactCompiler: true,
1314

1415
// Optimize production build
1516
output: process.env.NODE_ENV === 'production' ? 'standalone' : undefined,

package.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
{
22
"name": "firepit",
3-
"version": "1.1.0",
3+
"version": "1.1.2",
44
"private": true,
55
"type": "module",
66
"scripts": {
77
"dev": "next dev ",
88
"dev:webpack": "next dev --webpack",
9-
"build": "bun run generate-version && bun run build:sw && next build",
10-
"build:webpack": "bun run generate-version && bun run build:sw && next build --webpack",
11-
"build:sw": "tsc --project src/sw.tsconfig.json",
9+
"build": "bun run generate-version && next build",
10+
"build:webpack": "bun run generate-version && next build --webpack",
1211
"build:analyze": "ANALYZE=true next build --webpack",
1312
"generate-version": "bun scripts/generate-version.ts",
1413
"start": "next start",
@@ -29,7 +28,7 @@
2928
"@radix-ui/react-slot": "^1.2.4",
3029
"@radix-ui/react-switch": "^1.2.6",
3130
"@radix-ui/react-tabs": "^1.1.13",
32-
"@tanstack/react-form": "^1.27.2",
31+
"@tanstack/react-form": "^1.27.4",
3332
"@tanstack/react-query": "^5.90.12",
3433
"@testing-library/dom": "^10.4.1",
3534
"@types/next": "^9.0.0",
@@ -40,7 +39,7 @@
4039
"emoji-picker-react": "^4.16.1",
4140
"lucide-react": "^0.554.0",
4241
"nanoid": "^5.1.6",
43-
"newrelic": "^13.7.0",
42+
"newrelic": "^13.8.1",
4443
"next": "^16.0.10",
4544
"next-themes": "^0.4.6",
4645
"node-appwrite": "^20.3.0",
@@ -53,26 +52,27 @@
5352
"tailwind-merge": "^3.4.0",
5453
"ts-node": "^10.9.2",
5554
"tw-animate-css": "^1.4.0",
56-
"zod": "^4.1.13"
55+
"zod": "^4.2.0"
5756
},
5857
"devDependencies": {
59-
"@eslint/js": "^9.39.1",
58+
"babel-plugin-react-compiler": "^1.0.0",
59+
"@eslint/js": "^9.39.2",
6060
"@next/bundle-analyzer": "16.0.3",
61-
"@tailwindcss/postcss": "^4.1.17",
61+
"@tailwindcss/postcss": "^4.1.18",
6262
"@tanstack/react-query-devtools": "^5.91.1",
6363
"@testing-library/jest-dom": "^6.9.1",
64-
"@testing-library/react": "^16.3.0",
64+
"@testing-library/react": "^16.3.1",
6565
"@testing-library/user-event": "^14.6.1",
6666
"@types/jsdom": "^27.0.0",
67-
"@types/node": "^20.19.26",
67+
"@types/node": "^20.19.27",
6868
"@types/react": "19.2.5",
6969
"@types/react-dom": "19.2.3",
7070
"@typescript-eslint/eslint-plugin": "^7.18.0",
7171
"@typescript-eslint/parser": "^7.18.0",
7272
"@vitejs/plugin-react": "^5.1.2",
7373
"@vitest/coverage-v8": "^3.2.4",
7474
"dotenv": "^17.2.3",
75-
"eslint": "^9.39.1",
75+
"eslint": "^9.39.2",
7676
"eslint-config-next": "16.0.3",
7777
"eslint-plugin-import": "^2.32.0",
7878
"eslint-plugin-jsx-a11y": "^6.10.2",
@@ -83,7 +83,7 @@
8383
"happy-dom": "^20.0.11",
8484
"husky": "^9.1.7",
8585
"jsdom": "^27.3.0",
86-
"tailwindcss": "^4.1.17",
86+
"tailwindcss": "^4.1.18",
8787
"typescript": "^5.9.3",
8888
"vitest": "^3.2.4"
8989
},

0 commit comments

Comments
 (0)