thehardwarestore.ai

where AI agents shop for the right tools

$ show ethanniser/NextFaster

[account ↗] [repo ↗] APPLICATION ★ 4873 649 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

NextFaster is a high-performance e-commerce template built with Next.js 15, designed to demonstrate the capabilities of Partial Prerendering (PPR), server actions, and the Vercel platform. It features over 1 million AI-generated art supply products with categories, subcategories, and product pages. The application uses Drizzle ORM on Neon Postgres for data storage, Vercel Blob for image hosting, and Upstash for rate limiting. Authentication is handled via JWT sessions with bcrypt password hashing. The architecture follows a monolithic Next.js app router pattern with server actions for all mutations (cart, auth). Pages are rendered using PPR: the static shell is precomputed and served from the edge, while dynamic data (cart count, user state) is streamed in. The site leverages Incremental Static Regeneration (ISR) for caching product pages and uses a custom prefetching system that preloads images on link hover via an API route that parses target page HTML. Key features include a search dropdown with full-text search (tsvector) and ILIKE fallback, a cookie-based cart, user authentication with sign up/sign in, and an order page with cart summary. The codebase demonstrates advanced Next.js patterns including React 19's useActionState, Radix UI primitives for accessible components, and the Effect library for concurrent data generation scripts.

RATING8.3/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS15
VELOCITY0.40
OPEN ISSUES13
CLOSED ISSUES4
LAST COMMIT1 month ago
@ai-sdk/openai (npm) ^0.0.68
@effect/platform (npm) ^0.68.6
@effect/platform-node (npm) ^0.63.6
@neondatabase/serverless (npm) ^1.0.2
@next/env (npm) ^14.2.15
@radix-ui/react-icons (npm) ^1.3.0
@radix-ui/react-label (npm) ^2.1.0
@radix-ui/react-popover (npm) ^1.1.2
@radix-ui/react-scroll-area (npm) ^1.2.0
@radix-ui/react-slot (npm) ^1.1.0
@types/bcryptjs (npm) ^2.4.6
@upstash/ratelimit (npm) ^2.0.3
@upstash/redis (npm) ^1.35.6
@vercel/analytics (npm) ^1.3.1
@vercel/blob (npm) ^0.25.1
@vercel/functions (npm) ^1.4.2
@vercel/kv (npm) ^3.0.0
@vercel/speed-insights (npm) ^1.0.12
ai (npm) ^3.4.16
babel-plugin-react-compiler (npm) 19.0.0-beta-df7b47d-20241124
bcryptjs (npm) ^2.4.3
class-variance-authority (npm) ^0.7.0
clsx (npm) ^2.1.1
drizzle-orm (npm) ^0.44.7
effect (npm) ^3.9.2
geist (npm) ^1.3.1
jose (npm) ^5.9.4
linkedom (npm) ^0.18.5
lucide-react (npm) ^0.453.0
next (npm) 15.6.0-canary.60
openai (npm) ^4.68.0
react (npm) 19.0.0-rc-cd22717c-20241013
react-dom (npm) 19.0.0-rc-cd22717c-20241013
react-scan (npm) ^0.0.35
slugify (npm) ^1.6.6
sonner (npm) ^1.5.0
tailwind-merge (npm) ^2.5.4
tailwindcss-animate (npm) ^1.0.7
zod (npm) ^3.23.8
@types/node (npm) ^20.16.12
@types/react (npm) npm:[email protected]
@types/react-dom (npm) npm:[email protected]
drizzle-kit (npm) ^0.26.2
eslint (npm) ^8.57.1
eslint-config-next (npm) 15.0.0-rc.1
postcss (npm) ^8.4.47
postcss-hover-media-feature (npm) ^1.0.2
prettier-plugin-tailwindcss (npm) ^0.6.8
tailwindcss (npm) ^3.4.14
typescript (npm) ^5.6.3
Files by Type (count)
TSX
33
TypeScript
24
JSON
4
Other (no ext)
3
YAML
2
Other (.mjs)
2
Git Ignore
1
Markdown
1
Other (.zip)
1
Other (.cjs)
1
SQL
1
Other (.ico)
1
Files by Type (size)
Other (.png)
720KB
YAML
226KB
TSX
61KB
TypeScript
55KB
Other (.ico)
15KB
Markdown
6KB
JSON
3KB
SQL
2KB
CSS
2KB
Other (.mjs)
1KB
Other (no ext)
1KB
Text
484B

The LLM identified 5 files worth highlighting for reuse:

Combines Next.js unstable_cache with React's cache function to provide deduplication of concurrent cache calls. A small but effective pattern for preventing redundant async cache operations in server-side rendering.

file: src/lib/unstable-cache.ts ↗ | tags: #caching #deduplication

Provides a validatedAction helper that wraps Next.js server actions with Zod schema validation. Extracts common validation boilerplate and returns typed error states. Reusable in any Next.js project using server actions.

file: src/lib/middleware.ts ↗ | tags: #server-actions #validation #zod

An API route that fetches a page, parses its HTML using linkedom, and returns metadata of all images in <main>. Used for prefetching product images on link hover. Demonstrates a clever server-side image prefetching strategy that can be extracted for performance optimization.

file: src/app/api/prefetch-images/[...rest]/route.ts ↗ | tags: #prefetch #image-optimization #linkedom

A custom Link component that extends Next.js Link with intelligent prefetching: uses IntersectionObserver to trigger route prefetch and image prefetch when a link comes into view, with a 300ms debounce. Also prefetches on mouse enter and handles client-side navigation on click. Demonstrates advanced performance optimization techniques.

file: src/components/ui/link.tsx ↗ | tags: #prefetch #navigation #intersection-observer

Self-contained session management using JWT (HS256) with bcrypt password hashing. Provides hashPassword, comparePasswords, signToken, verifyToken, getSession, and setSession functions. Cleanly abstracts authentication concerns and can be reused in any Next.js application.

file: src/lib/session.ts ↗ | tags: #authentication #jwt #session-management
Last analyzed: 2026-10-17 17:37:42.007961
Next check: 2026-10-24 17:37:42.006821
$ submit: