- Your Next Store เป็นเทมเพลตอีคอมเมิร์ซ Next.js แบบโอเพนซอร์สที่เป็น AI-native และใช้ Stripe เป็นฐาน รองรับการโฮสต์เองและการดีพลอยขึ้น Vercel แบบคลิกเดียว
- มาพร้อม AGENTS.md, แพตเทิร์น Next.js App Router ที่เป็นแนวทางปฏิบัติทั่วไป และเมธอด Commerce Kit SDK ที่กำหนด type ไว้ เพื่อให้เครื่องมือเขียนโค้ด AI จัดการได้ง่าย
- ฟีเจอร์หลักคือ checkout, billing และ subscriptions ผ่านการผสานกับ Stripe API โดยตรง พร้อมจัดระเบียบ domain model ของสินค้า ตัวเลือก ตะกร้า และการชำระเงินด้วย type
- สแต็กเทคโนโลยีประกอบด้วย Next.js 16, Bun, Commerce Kit SDK, Tailwind CSS v4, Shadcn UI, TypeScript และ Biome
- มี 149 theme branches ตั้งแต่
theme-001 ถึง theme-149 โดย theme จะเปลี่ยนเฉพาะคอมโพเนนต์ด้านภาพและ static assets ส่วนสินค้า ตะกร้า และการชำระเงินยังคงเดิม
ภาพรวมโปรเจกต์
- Your Next Store เป็น เทมเพลตอีคอมเมิร์ซ Next.js แบบโอเพนซอร์สที่เป็น AI-native
- ขับเคลื่อนด้วย Stripe และสร้างขึ้นโดยคำนึงถึงเครื่องมือเขียนโค้ด AI
- มี ไลฟ์เดโม
- จุดเด่นที่ repository เน้นมีดังนี้
- AI-Friendly Codebase: มี AGENTS.md, แพตเทิร์นที่เป็นแนวทางปฏิบัติทั่วไป และ Commerce Kit SDK ที่มีเมธอดพร้อม type
- Stripe-Native: ผสาน Stripe API โดยตรงเพื่อจัดการ checkout, billing และ subscriptions
- Next.js 16: ใช้ App Router, React Server Components และ React Compiler
- Open Source: โฮสต์เองได้ทุกที่ และดีพลอยขึ้น Vercel ได้ในคลิกเดียว
การออกแบบที่เป็นมิตรกับเครื่องมือเขียนโค้ด AI
- ใช้ แพตเทิร์น Next.js ที่คุ้นเคย เพื่อให้เครื่องมือ AI ทำงานได้ดีขึ้น
- ใช้องค์ประกอบตามแนวทางปฏิบัติทั่วไป เช่น App Router, Server Components, Server Actions และ
"use cache"
- Commerce Kit SDK มีการกำหนดรูปแบบ input/output สำหรับเมธอดอย่าง
productBrowse() และ cartUpsert()
- README อธิบายว่าเมื่อ LLM รู้สัญญา/API contract ก็จะเขียนโค้ดที่ถูกต้องได้
- มี domain model เช่น products, variants, cart และ checkout อยู่แล้ว พร้อม type ที่ชัดเจน
- LLM จึงไม่จำเป็นต้องสร้าง model เหล่านี้ขึ้นมาใหม่
- AGENTS.md มีบริบทของโปรเจกต์ ตัวอย่าง SDK กฎของ Biome และ checklist สำหรับการตรวจสอบ
- ใช้เพื่อช่วยให้ AI agent เข้าใจ codebase ก่อนเขียนโค้ด
สแต็กเทคโนโลยี
-
Next.js 16
- ใช้ App Router, React Server Components และ React Compiler
-
Bun
- ใช้เป็น JavaScript runtime และ package manager ที่รวดเร็ว
-
Commerce Kit SDK
- รับผิดชอบการผสาน headless commerce API
-
Tailwind CSS v4
- ใช้สำหรับการจัดสไตล์แบบ utility-first
-
Shadcn UI
- มีคอมโพเนนต์ด้าน accessibility ที่ใช้ Radix UI เป็นฐานมากกว่า 50 รายการ
-
TypeScript
- ใช้สำหรับการพัฒนาที่มีความปลอดภัยด้าน type อย่างเข้มงวด
-
Biome
- ใช้เป็น linter และ formatter ที่รวดเร็ว
Quick Start และเงื่อนไขการรัน
- คำสั่ง Quick Start เป็นขั้นตอนการ clone repository, ติดตั้ง dependencies ด้วย Bun แล้วสร้างไฟล์ environment variables
git clone https://github.com/yournextstore/yournextstore.git
cd yournextstore && bun install
cp .env.example .env.local # Add your YNS_API_KEY from https://yns.store/manage/settings/api
bun dev
- หลังรันแล้ว store จะทำงานที่ localhost:3000
- ข้อกำหนดมีดังนี้
- ต้องคัดลอก
.env.example เป็น .env.local และตั้งค่า YNS_API_KEY
YNS_API_KEY คือ API token ที่ออกจากแผงผู้ดูแลระบบ
Theme และการขยาย
- Your Next Store มี 149 ready-made themes สำหรับหมวดหมู่ร้านค้าที่แตกต่างกัน
- แต่ละ theme เป็นการออกแบบหน้า homepage, hero, ชุดสี และ layout ของ section ใหม่ทั้งหมด
- ทุก theme สร้างอยู่บน core codebase เดียวกัน
- theme อยู่ใน branch ตั้งแต่
theme-001 ถึง theme-149
- สามารถสลับ theme ได้ด้วยคำสั่งเดียว
git checkout theme-016
- แต่ละ theme branch เป็น commit เดียวที่อยู่บน
main และ commit message จะอธิบาย mood ของ theme
- ตรวจสอบรายการ theme ทั้งหมดได้ด้วยคำสั่งต่อไปนี้
git for-each-ref --sort=refname --format='%(refname:short) %(subject)' 'refs/remotes/origin/theme-*'
- ทุก theme branch ใช้ ID 3 หลักที่เติมศูนย์นำหน้า เช่น
theme-001 … theme-149
- theme แก้ไขเฉพาะคอมโพเนนต์ด้านภาพและ static assets เท่านั้น
- สินค้า ตะกร้า และ checkout ไม่เปลี่ยนแปลง
เอกสารและการมีส่วนร่วม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
คิดว่าคงไม่มีทางสร้างอะไรที่พึ่งพา Stripe เด็ดขาด
ยอมรับว่าการชำระเงินเป็นเรื่องยากเพราะปัญหาฉ้อโกงและ chargeback แต่ Stripe มีประวัติแย่มากเรื่องการอายัดบัญชีปกติและแทบไม่ตอบการติดต่อ แถมยังบังคับใช้อนุญาโตตุลาการ โดยอนุญาโตตุลาการนั้นพึ่งพารายได้จาก Stripe และตามเงื่อนไขยังเปิดทางให้ Stripe นำเงินที่อายัดไว้ไปลงทุนได้ด้วย ยังห้ามการฟ้องแบบกลุ่มอีก ซึ่งไม่แน่ใจว่าข้อนี้จะบังคับใช้ได้จริงหรือไม่
ตอนนี้แก้โพสต์ไม่ได้แล้ว แต่เดโมการทำงานของ YNS อยู่ที่นี่: https://demo.yournextstore.com
ถ้าต้องการดู Stripe Link ให้ใช้อีเมล
test@test.comแล้วเมื่อเปิดใช้งานให้กรอก000000เคยอยากทำของแบบนี้เป๊ะ ๆ หลายครั้งมานานแล้ว ทำออกมาได้ดีมาก
ยังไม่ได้ดูละเอียด แต่สงสัยว่ารองรับ การดาวน์โหลดดิจิทัล ไหม การดาวน์โหลดสินค้าดิจิทัลและดาวน์โหลด “lead magnet” น่าจะช่วยร้านจำนวนมากได้มาก
ถ้ามีแนวทางที่คิดว่าเหมาะที่สุด หรืออยากอธิบายว่าในสถานการณ์สมบูรณ์แบบควรทำงานอย่างไร ก็อยากฟัง ต้องการโมเดลอ้างอิงทั้งสำหรับการดาวน์โหลดดิจิทัลและการดาวน์โหลด lead magnet
ฟีเจอร์ที่ชอบที่สุดในเดโมคือ การชำระเงินหน้าเดียว
ใกล้เคียงกับ flow การชำระเงินที่ยอดเยี่ยมของ Shopify มาก WooCommerce ควรเป็นทางเลือกแบบ self-hosted ที่แท้จริงของ Shopify แต่ยังไม่ถึงขั้นนั้น และแม้จะมี ecosystem ปลั๊กอิน การทำตะกร้าสินค้าและหน้าชำระเงินที่ดีก็ยังยากกว่ามาก ยินดีด้วยกับการเปิดตัว
ยังมีจุดเล็ก ๆ ให้ปรับปรุงอยู่ แต่ตอนนี้พอใจกับประสบการณ์ชำระเงินที่ค่อนข้างลื่นไหลแล้ว อยากรู้ว่าได้ลองใช้กับ Stripe Link ด้วยหรือยัง ถ้าข้อมูลการซื้อก่อนหน้าถูกเก็บไว้ที่ไหนสักแห่งบนอินเทอร์เน็ต การชำระเงินทั้งหมดจะลดเหลือแค่ 4 คลิกโดยไม่ต้องกรอกฟอร์ม
รวมถึงธีมพื้นฐานและธีมฟรี เลย์เอาต์ดูไม่สวย หนักโดยไม่จำเป็น และหน้าชำระเงินก็ดูสมัครเล่นเกินไปจนหลายคนอาจรู้สึกเหมือนเป็นเว็บหลอกลวง ธีมดี ๆ ก็มี แต่ต้องจ่ายค่อนข้างแพง
อยากรู้ว่าจัดการ การคำนวณค่าจัดส่ง อย่างไร
นี่รวมอยู่ในฟีเจอร์แค็ตตาล็อกสินค้าของ Stripe ด้วยหรือเปล่า?
ถ้าต้องการฟีเจอร์จัดส่งทันที ก็ให้ third-party จัดการได้ และพาร์ตเนอร์บางรายกำลังพัฒนาฟีเจอร์ด้วยวิธีนั้นอยู่ ระยะยาวอยากผสานกับ Stripe ให้ลึกขึ้น เพื่อให้ Stripe กลายเป็นโครงสร้างพื้นฐานหลักของอีคอมเมิร์ซ
ส่วนตัวชอบ Shippo และรู้จักผู้ก่อตั้งด้วย เคยผสานเข้าไปใน Weebly ซึ่งปัจจุบันคือภายใน Square
ถ้าไม่ต้องมีฐานข้อมูล อยากรู้ว่า การจัดการสต็อก ทำอย่างไร
เช่น ถ้าหลายคนพยายามซื้อสินค้าชิ้นเดียวกันพร้อมกัน แต่สต็อกไม่พอ จะเกิดอะไรขึ้น?
กำลังพัฒนาเลเยอร์บาง ๆ เพื่อจัดการการซิงก์ระหว่างแต่ละร้านกับ Stripe เช่นเรื่อง atomicity ด้วย ยังไม่ใช่ทางออกในอุดมคติ แต่ทำงานได้ดีสำหรับร้านเล็ก ๆ ส่วนใหญ่ และมีไอเดียจะปรับปรุงต่อ ในสถานการณ์แบบนี้ สถาปัตยกรรมแบบ composable/headless อาจกลายเป็นภาระมากกว่า
ลองใช้เดโมแล้ว อย่างที่คนอื่นพูดกัน มันทำมาดีและเร็วมากจริง ๆ
แต่เจอ บั๊ก ตอนพยายามเอาสินค้าออกจากตะกร้าโดยปรับจำนวนเป็น 0 จากนั้นเริ่มรีเฟรชและอินเทอร์เฟซค้าง ไม่แน่ใจว่าเป็นเพราะพฤติกรรมนี้หรือเพราะทราฟฟิกตอนนี้ แต่แจ้งไว้เผื่อช่วยได้
ช่วงนี้ปรับปรุงส่วนนั้นซ้ำไปมาหลายรอบ ดูเหมือนมีอะไรหลุดไป
ค่อนข้างลื่นไหล และชอบที่รองรับ Umami
ถ้าห่อทั้งหมดเป็น Dockerfile เดียวได้ก็คงดี แต่สำหรับใช้งานส่วนตัวน่าจะทำเองได้ไม่ยาก ไม่ได้ใช้ Stripe นอกจากฟีเจอร์ subscription มาพักหนึ่งแล้ว สงสัยว่าการรองรับโค้ดคูปองหรือโปรโมชันลดราคาจะยากแค่ไหน มีแผนรองรับไหม?
คูปองอยู่ใน roadmap และน่าจะเพิ่มได้ค่อนข้างง่าย อยากรู้ด้วยว่าสนใจช่วย beta test ไหม Dockerfile มีคนในชุมชนเสนอมา และจะลองตรวจดูวันนี้: https://github.com/yournextstore/yournextstore/pull/22/files
เดโมเร็วเพราะมีการ prefetch รายการเมื่อเอาเคอร์เซอร์เมาส์ไปวางหรือแตะ
เป็นวิธีที่ทำได้ในอีคอมเมิร์ซแบบดั้งเดิมอยู่แล้ว และประสบการณ์ผู้ใช้แบบนี้ที่เปลืองข้อมูลผู้ใช้ไม่ค่อยดี มีตัวเลือกปิด prefetch ไหม?
แต่ถ้าคิดถึงประสบการณ์ผู้ใช้ ผมไม่คิดว่านั่นเป็นทางเลือกที่ดีที่สุด
แต่เพิ่งรู้ว่าไม่มีวิธีปิด prefetch แบบ global[0] ต้องปิดทีละลิงก์ หรือสร้างคอมโพเนนต์ลิงก์แบบ custom มาใช้
[0] https://github.com/vercel/next.js/discussions/24437
ดีเลย กำลังมองหาอะไรแบบนี้พอดี
แต่ตอนติดตั้งเจอข้อผิดพลาด แฮชของ pnpm@9.9.0 ไม่ตรงกัน ที่
corepack installแฮชที่คาดหวังกับแฮชที่ได้รับต่างกัน จึงเกิดInternal Error: Mismatch hashespnpmเป็น 9.10.0 แล้ว ตอนนี้น่าจะโอเคลองลบ
packageManagerออกจากpackage.jsonให้หมดก่อนแล้วลองใหม่ได้ไหม? ถ้าเป็นไปได้ อยากวิดีโอคอลสั้น ๆ เพื่อดูสภาพแวดล้อมที่ทำให้เกิดปัญหาโดยตรง ตอนนี้ฝั่งนี้ยัง reproduce ไม่ได้