Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
27 changes: 27 additions & 0 deletions data/products.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[
{ "id": "prod_001", "name": "Sony WH-1000XM5 Wireless Headphones", "brand": "Sony", "category": "electronics", "description": "Industry-leading noise cancelling with dual processor control and 8 microphones.", "price": 399.99, "priceUsdc": 399.99, "image": "https://picsum.photos/seed/prod_001/300/300", "rating": 4.8, "reviewCount": 2450, "inStock": true },
{ "id": "prod_002", "name": "Bose QuietComfort Ultra", "brand": "Bose", "category": "electronics", "description": "World-class noise cancellation and spatial audio for immersive listening.", "price": 429.00, "priceUsdc": 429.00, "image": "https://picsum.photos/seed/prod_002/300/300", "rating": 4.7, "reviewCount": 1820, "inStock": true },
{ "id": "prod_003", "name": "Nike Air Zoom Pegasus 40", "brand": "Nike", "category": "footwear", "description": "Responsive cushioning for every run with a secure, breathable mesh upper.", "price": 130.00, "priceUsdc": 130.00, "image": "https://picsum.photos/seed/prod_003/300/300", "rating": 4.5, "reviewCount": 3100, "inStock": true },
{ "id": "prod_004", "name": "Adidas Ultraboost Light", "brand": "Adidas", "category": "footwear", "description": "Experience epic energy with the lightest Ultraboost ever made.", "price": 190.00, "priceUsdc": 190.00, "image": "https://picsum.photos/seed/prod_004/300/300", "rating": 4.6, "reviewCount": 2150, "inStock": true },
{ "id": "prod_005", "name": "Bellroy Classic Backpack", "brand": "Bellroy", "category": "bags", "description": "A refined modern classic with laptop protection and internal organization.", "price": 149.00, "priceUsdc": 149.00, "image": "https://picsum.photos/seed/prod_005/300/300", "rating": 4.4, "reviewCount": 890, "inStock": true },
{ "id": "prod_006", "name": "Peak Design Everyday Tote", "brand": "Peak Design", "category": "bags", "description": "Clean aesthetics with high-performance functionality for camera gear and daily carry.", "price": 179.95, "priceUsdc": 179.95, "image": "https://picsum.photos/seed/prod_006/300/300", "rating": 4.7, "reviewCount": 560, "inStock": true },
{ "id": "prod_007", "name": "Logitech MX Master 3S", "brand": "Logitech", "category": "electronics", "description": "Ultimate productivity mouse with quiet clicks and an 8K DPI track-on-glass sensor.", "price": 99.00, "priceUsdc": 99.00, "image": "https://picsum.photos/seed/prod_007/300/300", "rating": 4.9, "reviewCount": 4200, "inStock": true },
{ "id": "prod_008", "name": "Keychron Q1 Mechanical Keyboard", "brand": "Keychron", "category": "gaming", "description": "Fully customizable 75% layout mechanical keyboard with QMK/VIA support.", "price": 169.00, "priceUsdc": 169.00, "image": "https://picsum.photos/seed/prod_008/300/300", "rating": 4.8, "reviewCount": 1100, "inStock": true },
{ "id": "prod_009", "name": "Razer BlackShark V2 Pro", "brand": "Razer", "category": "gaming", "description": "The definitive esports gaming headset with advanced noise cancellation.", "price": 199.99, "priceUsdc": 199.99, "image": "https://picsum.photos/seed/prod_009/300/300", "rating": 4.6, "reviewCount": 2800, "inStock": true },
{ "id": "prod_010", "name": "Nomad Base One Max", "brand": "Nomad", "category": "accessories", "description": "Official MagSafe charging for iPhone and Apple Watch in a weighted metal chassis.", "price": 150.00, "priceUsdc": 150.00, "image": "https://picsum.photos/seed/prod_010/300/300", "rating": 4.3, "reviewCount": 450, "inStock": true },
{ "id": "prod_011", "name": "Anker 737 Power Bank", "brand": "Anker", "category": "accessories", "description": "Ultra-powerful 140W power bank with a smart digital display.", "price": 149.99, "priceUsdc": 149.99, "image": "https://picsum.photos/seed/prod_011/300/300", "rating": 4.8, "reviewCount": 3200, "inStock": true },
{ "id": "prod_012", "name": "Apple Watch Ultra 2", "brand": "Apple", "category": "electronics", "description": "The most rugged and capable Apple Watch, now with the S9 SiP.", "price": 799.00, "priceUsdc": 799.00, "image": "https://picsum.photos/seed/prod_012/300/300", "rating": 4.9, "reviewCount": 1500, "inStock": true },
{ "id": "prod_013", "name": "Sennheiser Momentum 4", "brand": "Sennheiser", "category": "electronics", "description": "Unmatched sound quality with up to 60 hours of battery life.", "price": 349.95, "priceUsdc": 349.95, "image": "https://picsum.photos/seed/prod_013/300/300", "rating": 4.7, "reviewCount": 1200, "inStock": true },
{ "id": "prod_014", "name": "New Balance 990v6", "brand": "New Balance", "category": "footwear", "description": "The peak of performance and heritage style, made with premium materials.", "price": 199.99, "priceUsdc": 199.99, "image": "https://picsum.photos/seed/prod_014/300/300", "rating": 4.8, "reviewCount": 2300, "inStock": true },
{ "id": "prod_015", "name": "Patagonia Black Hole Pack 25L", "brand": "Patagonia", "category": "bags", "description": "Burly daypack with just the right amount of space to haul your daily essentials.", "price": 129.00, "priceUsdc": 129.00, "image": "https://picsum.photos/seed/prod_015/300/300", "rating": 4.6, "reviewCount": 1400, "inStock": true },
{ "id": "prod_016", "name": "SteelSeries Apex Pro TKL", "brand": "SteelSeries", "category": "gaming", "description": "The world's fastest mechanical keyboard with adjustable actuation.", "price": 189.99, "priceUsdc": 189.99, "image": "https://picsum.photos/seed/prod_016/300/300", "rating": 4.7, "reviewCount": 1950, "inStock": true },
{ "id": "prod_017", "name": "Sony WF-1000XM5 Earbuds", "brand": "Sony", "category": "electronics", "description": "The best noise cancelling earbuds with astonishing sound quality.", "price": 299.99, "priceUsdc": 299.99, "image": "https://picsum.photos/seed/prod_017/300/300", "rating": 4.5, "reviewCount": 2100, "inStock": true },
{ "id": "prod_018", "name": "Arc'teryx Mantis 26", "brand": "Arc'teryx", "category": "bags", "description": "Versatile 26L daypack designed for hiking or daily use.", "price": 160.00, "priceUsdc": 160.00, "image": "https://picsum.photos/seed/prod_018/300/300", "rating": 4.7, "reviewCount": 780, "inStock": true },
{ "id": "prod_019", "name": "Hoka Bondi 8", "brand": "Hoka", "category": "footwear", "description": "Max cushioning for a smooth, balanced ride on every road.", "price": 165.00, "priceUsdc": 165.00, "image": "https://picsum.photos/seed/prod_019/300/300", "rating": 4.6, "reviewCount": 3400, "inStock": true },
{ "id": "prod_020", "name": "Belkin BoostCharge Pro", "brand": "Belkin", "category": "accessories", "description": "3-in-1 Wireless Charging Pad with MagSafe for Apple devices.", "price": 149.99, "priceUsdc": 149.99, "image": "https://picsum.photos/seed/prod_020/300/300", "rating": 4.4, "reviewCount": 1100, "inStock": true },
{ "id": "prod_021", "name": "Elgato Stream Deck MK.2", "brand": "Elgato", "category": "gaming", "description": "15 customizable LCD keys to control apps, tools and platforms.", "price": 149.99, "priceUsdc": 149.99, "image": "https://picsum.photos/seed/prod_021/300/300", "rating": 4.9, "reviewCount": 5600, "inStock": true },
{ "id": "prod_022", "name": "Herschel Little America", "brand": "Herschel", "category": "bags", "description": "An iconic mountaineering style with modern functionality.", "price": 120.00, "priceUsdc": 120.00, "image": "https://picsum.photos/seed/prod_022/300/300", "rating": 4.5, "reviewCount": 4200, "inStock": true },
{ "id": "prod_023", "name": "Salomon XT-6", "brand": "Salomon", "category": "footwear", "description": "The preferred footwear for world-class athletes in ultra-distance races.", "price": 200.00, "priceUsdc": 200.00, "image": "https://picsum.photos/seed/prod_023/300/300", "rating": 4.7, "reviewCount": 1600, "inStock": true },
{ "id": "prod_024", "name": "Bellroy Tech Kit", "brand": "Bellroy", "category": "accessories", "description": "Organize your tech accessories without tangles or clutter.", "price": 55.00, "priceUsdc": 55.00, "image": "https://picsum.photos/seed/prod_024/300/300", "rating": 4.6, "reviewCount": 1300, "inStock": true },
{ "id": "prod_025", "name": "ASUS ROG Swift OLED", "brand": "ASUS", "category": "gaming", "description": "27-inch 1440p OLED gaming monitor with 240Hz refresh rate.", "price": 899.00, "priceUsdc": 899.00, "image": "https://picsum.photos/seed/prod_025/300/300", "rating": 4.8, "reviewCount": 650, "inStock": true }
]
18 changes: 18 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
]),
]);

export default eslintConfig;
23 changes: 23 additions & 0 deletions lib/monad.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { defineChain } from 'viem'

export const monadTestnet = defineChain({
id: 41454,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Conflicting Monad Testnet chain ID

lib/monad.ts at the repo root defines id: 41454, whereas src/lib/monad.ts (the file actually used by the application) defines id: 10143. The checkout route and x402 server both register on "eip155:10143". The root-level file appears to be dead code with a wrong chain ID, but risks being imported accidentally.

Consider removing lib/monad.ts or aligning it with the correct chain ID.

name: 'Monad Testnet',
nativeCurrency: {
name: 'MON',
symbol: 'MON',
decimals: 18,
},
rpcUrls: {
default: {
http: [process.env.NEXT_PUBLIC_MONAD_RPC ?? 'https://testnet-rpc.monad.xyz'],
},
},
blockExplorers: {
default: {
name: 'Monad Explorer',
url: 'https://testnet.monadexplorer.com',
},
},
testnet: true,
})
14 changes: 14 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
images: {
remotePatterns: [
{
protocol: "https",
hostname: "lh3.googleusercontent.com",
},
],
},
};

export default nextConfig;
Loading