diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml
index 59415d7..82f8224 100644
--- a/.github/workflows/playwright.yml
+++ b/.github/workflows/playwright.yml
@@ -10,13 +10,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: oven-sh/setup-bun@v2
+ - uses: pnpm/action-setup@v4
- name: Install dependencies
- run: bun install
+ run: pnpm install
- name: Install Playwright Browsers
- run: bun x playwright install --with-deps
+ run: pnpm exec playwright install --with-deps
- name: Run Playwright tests
- run: bun run test
+ run: pnpm run test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
diff --git a/Dockerfile b/Dockerfile
index c2a0e3c..3afd2bb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,21 +1,24 @@
-FROM oven/bun:1-alpine AS deps
+FROM node:20-alpine AS deps
+RUN corepack enable && corepack prepare pnpm@9 --activate
WORKDIR /app
-COPY package.json bun.lock ./
+COPY package.json pnpm-lock.yaml ./
-RUN bun install --frozen-lockfile
+RUN pnpm install --frozen-lockfile
-FROM oven/bun:1-alpine AS builder
+FROM node:20-alpine AS builder
+RUN corepack enable && corepack prepare pnpm@9 --activate
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
+
ENV NEXT_TELEMETRY_DISABLED=1
ENV DOCKER_BUILD=true
-RUN bun run build:docker
+RUN pnpm build
-FROM oven/bun:1-alpine AS runner
+FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
@@ -35,4 +38,4 @@ EXPOSE 3000
ENV PORT=3000
ENV HOSTNAME=0.0.0.0
-CMD ["bun", "server.js"]
+CMD ["node", "server.js"]
diff --git a/README.md b/README.md
index f631f22..340be0a 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ Modern e-commerce storefront built with Next.js 15, React 19, and Tailwind CSS v
## Prerequisites
-- Bun v1.3+
+- Pnpm
## Quick Start
@@ -43,10 +43,10 @@ Docker Hub: [bitbybitb3/rogue-store](https://hub.docker.com/r/bitbybitb3/rogue-s
# Clone and install
git clone https://github.com/CROW-B3/rogue-store.git
cd rogue-store
-bun install
+pnpm install
# Run dev server
-bun run dev
+pnpm run dev
```
Open [http://localhost:3000](http://localhost:3000) to view the app.
@@ -70,17 +70,17 @@ rogue-store/
```bash
# Development
-bun run dev # Start dev server
-bun run build # Build for production
-bun run lint # Run ESLint
-bun run format # Format with Prettier
+pnpm run dev # Start dev server
+pnpm run build # Build for production
+pnpm run lint # Run ESLint
+pnpm run format # Format with Prettier
# Testing
-bun run test # Run Playwright tests
-bun run test:ui # Run tests in UI mode
+pnpm run test # Run Playwright tests
+pnpm run test:ui # Run tests in UI mode
# Deployment
-bun run deploy # Deploy to Cloudflare Pages
+pnpm run deploy # Deploy to Cloudflare Pages
```
## Deployment
@@ -89,7 +89,7 @@ bun run deploy # Deploy to Cloudflare Pages
```bash
wrangler login
-bun run deploy
+pnpm run deploy
```
### Vercel
diff --git a/app/layout.tsx b/app/layout.tsx
index 6020557..9984a41 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -6,6 +6,7 @@ import { Footer } from "@/components/layout/footer";
import { CartDrawer } from "@/components/cart/cart-drawer";
import { ToastProvider } from "@/components/ui/toast-provider";
import { WebVitals } from "@/_components/web-vitals";
+import { InteractionTracker } from "@/components/interaction-tracker";
const inter = Inter({ subsets: ["latin"] });
@@ -37,6 +38,7 @@ export default function RootLayout({
{process.env.NODE_ENV === "production" ? null : }
+