A modern e-commerce storefront for handcrafted Japanese dolls, built with Next.js 16 and Shopify's Storefront API. Features a Tokyo-inspired minimalist design with smooth animations and progressive web app capabilities.
- Headless Shopify - Full integration with Shopify Storefront API 2025-10
- Tokyo Minimalist Design - Clean, editorial aesthetic with smooth interactions
- Full E-commerce - Cart, checkout, wishlist, and product search
- Command Palette Search - Lightning-fast product search with Ctrl+K (⌘K)
- Progressive Web App - Offline support with custom service worker
- Performance Optimized - ISR caching, lazy loading, image optimization
- SEO Ready - Dynamic OG images, structured data, and metadata
- Server Actions - Modern form handling with Next.js Server Actions
- Analytics - Vercel Analytics and Speed Insights integrated
- Framework: Next.js 16 (App Router, Turbopack)
- Styling: Tailwind CSS v4
- Animations: Framer Motion
- E-commerce: Shopify Storefront API
- Search: cmdk (Command Palette)
- Icons: Phosphor Icons
- Fonts: Geist, Geist Mono, Hachi Maru Pop
- Node.js 18+
- pnpm (recommended) or npm
- Shopify store with Storefront API access
- Clone the repository:
git clone https://github.com/theteleporter/hirachu.git
cd hirachu- Install dependencies:
pnpm install- Set up environment variables:
Create a .env.local file:
NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN=your-store.myshopify.com
NEXT_PUBLIC_SHOPIFY_STOREFRONT_ACCESS_TOKEN=your_storefront_access_tokenGetting Shopify credentials:
-
Shopify Admin → Settings → Apps and sales channels
-
"Develop apps" → "Create an app"
-
Configure Storefront API scopes (products, collections, cart)
-
Install and copy your Storefront Access Token
-
Run development server:
pnpm devpnpm build
pnpm starthirachu/
├── app/ # App directory
│ ├── api/ # API routes (OG images)
│ ├── shop/ # Product pages
│ └── ... # Static pages
├── components/ # React components
│ ├── sections/ # Page sections
│ ├── cart/ # Cart components
│ └── ...
├── lib/ # Utilities
│ ├── shopify.ts # Shopify client
│ ├── actions.ts # Server Actions
│ └── ...
├── public/ # Static assets
│ ├── images/ # Product images
│ └── sw.js # Service worker
└── ...
Add your email service in lib/actions.ts:
// Newsletter: subscribeToNewsletter()
// Contact: submitContactForm()Recommended: Resend, SendGrid, or Postmark.
- Colors:
app/globals.css - Fonts:
app/layout.tsx - Products: Import CSV from
files/to Shopify
- Press
Ctrl+K(⌘K on Mac) - Fuzzy search with instant results
- ESC to close
- Click heart icon to save products
- Persisted in localStorage
- Badge shows count
- Add from product pages
- Drawer interface
- Redirects to Shopify checkout
- Offline support for key pages
- Auto-registers in production
- Push to GitHub
- Import in Vercel
- Add environment variables
- Deploy
Works on any Next.js hosting:
- Netlify
- Railway
- Fly.io
- Self-hosted
- ISR revalidation: 1 hour
- Lighthouse scores: 95+
- Image optimization
- Route-based code splitting
- Automatic prefetching
MIT License
The Teleporter
- Website: dex.codes
- Twitter: @theteleporter_
Built for doll collectors worldwide