New season — Spring/Summer drop now live

FAQ — คำถามพบบ่อย (เจ้าของระบบ)

ทั่วไป

ใช้ source code ทำของลูกค้าคนอื่นได้ไหม?

ขึ้นกับ license — โดยทั่วไป commercial license ใช้ได้กับธุรกิจตัวเอง 1 เว็บ ไม่อนุญาตให้ขาย/แจกซ้ำ ตรวจสอบเงื่อนไขกับผู้ขายระบบที่คุณซื้อมา

ทำ multi-tenant (หลายร้าน 1 ระบบ) ได้ไหม?

ต้องแก้ schema เพิ่ม tenantId ทุก table + middleware filter — งานใหญ่ (~1-2 เดือนเต็มเวลา)

Source code มีกี่บรรทัด?

  • API: ~15,000 บรรทัด
  • Web: ~12,000 บรรทัด
  • Mobile: ~5,000 บรรทัด
  • รวม: ~32,000 บรรทัด (ไม่นับ node_modules)

ฐานข้อมูล

เปลี่ยน PostgreSQL → MySQL ได้ไหม?

ได้ — แก้ prisma/schema.prisma:

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

แล้ว migrate ใหม่ (ลบ migrations เก่า)

ใช้ MongoDB ได้ไหม?

ไม่แนะนำ — schema เป็น relational (FK ทุก table) — เขียน adapter ใหม่หมด

ดูข้อมูลตรง ๆ ยังไง?

cd ecommerce-api
npx prisma studio   # http://localhost:5555

หรือใช้ tool อื่น (DBeaver, TablePlus) connect ด้วย:

postgresql://ecommerce:<password>@localhost:5432/ecommerce

Database พังต้องทำยังไง?

  1. ตรวจ docker logs: docker compose logs postgres
  2. Restart: docker compose restart postgres
  3. ถ้าพังจริง — restore จาก backup (ดู 09 — Maintenance)

Payment

มี payment gateway แท้ ๆ ไหม?

ยังไม่มี — ปัจจุบันเป็น:

  • โอนเงิน + upload สลิป (manual verify)
  • COD

เชื่อม Omise ยังไง?

  1. สมัคร Omise (ฟรี — เสีย fee ต่อ transaction)
  2. เพิ่ม module payments/providers/omise.service.ts:
    import Omise from 'omise'
    const omise = Omise({ secretKey: process.env.OMISE_SECRET_KEY })
    await omise.charges.create({ ... })
    
  3. เพิ่ม endpoint POST /payments/charge
  4. แก้ web ให้รับ token จาก Omise.js + ส่งมา api

เชื่อม Stripe ยังไง?

คล้าย Omise — ใช้ @stripe/stripe-js ฝั่ง web + stripe npm ฝั่ง api

PromptPay QR?

ยังไม่มี built-in — เชื่อมผ่าน Omise / 2C2P / Beam (ของไทยมี) ได้

Email

ส่งอีเมลตอนไหน?

ปัจจุบันยังไม่ส่งจริง — template มีใน ecommerce-api/email-templates/

เปิด email service ยังไง?

  1. สมัคร Resend / SendGrid / Mailgun
  2. ใส่ใน .env:
    EMAIL_PROVIDER=resend
    RESEND_API_KEY=re_xxx
    EMAIL_FROM=noreply@yourshop.com
    
  3. เปิด feature flag: FEATURE_EMAIL=true
  4. ระบบจะส่งเมื่อ:
    • สมัครสมาชิก (welcome)
    • ออเดอร์สำเร็จ (confirmation)
    • สลิปได้ตรวจ (verify/reject)
    • จัดส่งแล้ว (tracking)
    • cart abandoned (24 ชม)

SEO

ขึ้น Google ยังไง?

  1. Submit sitemap ที่ Google Search Console
    • ติดตั้ง @nuxtjs/sitemap
    • URL: https://yourshop.com/sitemap.xml
  2. ใส่ Meta tag (มีให้แล้ว) — nuxt.config.ts
  3. Robot.txt — แก้ public/robots.txt
  4. Schema.org markup — เพิ่ม <script type="application/ld+json"> ในหน้า product

กี่วันถึงขึ้น Google?

  • Index ครั้งแรก: 1-7 วัน
  • Rank ในหน้าแรก: 3-6 เดือน (ขึ้นกับ competition + backlinks)

Title หน้า / Meta description ต่างกันแต่ละหน้า?

ใช้ useHead({ title: ... }) ในแต่ละ page — ดู /docs/test/api

Performance

รับ traffic ขนาดไหน?

VPS concurrent users
1 vCPU / 2GB ~500
4 vCPU / 8GB ~5,000
Scale horizontal ไม่จำกัด

ใช้ Redis cache + CDN ลด load DB

เพิ่ม instance api ได้ไหม?

ได้ — stateless ทั้งหมด
ใช้ Nginx upstream load balance:

upstream api {
  server api1.local:3000;
  server api2.local:3000;
}

ใช้ CDN รูป?

แนะนำ — Cloudflare Images / Bunny CDN / Imgix

  • ลด load จาก api
  • โหลดเร็วขึ้น 3-5x
  • มี auto resize/WebP

Mobile App

Sync กับเว็บ?

✅ — API + DB เดียวกัน ทุกอย่าง sync อัตโนมัติ

Push notification ค่าใช้จ่าย?

  • Expo Push Service: ฟรี
  • APNS / FCM: ฟรี (แต่ต้องผ่าน Apple / Google account)

ทำให้ใช้ offline ได้ไหม?

ทำได้แต่ต้องเขียนเพิ่ม:

  • ใช้ react-query + persistence
  • ใช้ SQLite local (expo-sqlite)
  • Sync เมื่อ online กลับมา

ใช้เวลา ~2-3 สัปดาห์เพิ่ม

Security

Password เก็บยังไง?

  • Hash ด้วย bcrypt (cost 10)
  • ไม่เก็บ plaintext
  • ไม่ส่งกลับใน API response

Token หมดอายุ?

  • Access: 15 นาที
  • Refresh: 7 วัน

ปรับใน .env:

JWT_ACCESS_EXPIRES=15m
JWT_REFRESH_EXPIRES=7d

ลืม password — รีเซ็ตยังไง?

⚠ ยังไม่มี UI — admin reset ให้ผ่าน script:

cd ecommerce-api
node scripts/reset-password.ts <email> <new-password>

มี 2FA ไหม?

ยังไม่มี — เพิ่มได้ผ่าน speakeasy + QR code

มี audit log ไหม?

ยังไม่มี — เพิ่มได้ผ่าน Prisma middleware logging

Customization

เพิ่มหน้าใหม่ยังไง?

สร้างไฟล์ใน ecommerce-web/app/pages/<your-page>.vue → จะมี route auto

เพิ่ม component?

สร้างใน ecommerce-web/app/components/<Folder>/<Name>.vue → import auto

เพิ่ม API endpoint?

สร้างใน ecommerce-api/src/modules/<module>/<module>.controller.ts:

@Get('my-endpoint')
async myEndpoint() {
  return { data: 'hello' }
}

Support

ติดต่อทีมผู้ขายยังไง?

ตามที่ตกลงตอนซื้อ — มักเป็น Email / LINE OA

มี SLA ไหม?

ขึ้นกับสัญญา — โดยทั่วไป:

  • Critical bug: 24 ชม
  • Normal bug: 3-5 วัน
  • Feature request: ขึ้นกับ contract

ขอ training พนักงานได้ไหม?

ขึ้นกับผู้ขาย — บางที่ให้ training 4-8 ชม ในแพคเกจ

Mobile vs Web

ลูกค้าใช้ web หรือ app เยอะกว่า?

ตามสถิติ retail e-commerce ไทย:

  • ลูกค้าใหม่: 70-80% เข้าจาก web (search / FB ads)
  • ลูกค้าเก่า: 60% ใช้ app (เร็วกว่า, notification)

→ ทำทั้งคู่จะ optimize ทั้ง 2 segment

License

ใช้ open source library ตัวไหนบ้าง?

Major dependencies:

  • NestJS — MIT
  • Nuxt — MIT
  • Vue — MIT
  • Prisma — Apache 2.0
  • Tailwind — MIT
  • Naive UI — MIT
  • React Native — MIT
  • Expo — MIT

ทั้งหมด commercial-friendly ✓

ต้องให้เครดิตไหม?

ตามแต่ละ license — ส่วนใหญ่ไม่ต้อง
แต่ โค้ดที่ผู้ขายเขียนเอง — ขึ้นกับเงื่อนไขสัญญา


ยังไม่เจอคำตอบ?

ดูเอกสารแต่ละหัวข้อเต็ม:

หรือติดต่อทีม support ของผู้ขายระบบ

Join the club

ของเด็ดส่งตรง
ถึงอินบ็อกซ์

สมัครรับข่าวสาร — รับส่วนลด 10% สำหรับสมาชิกใหม่ + อัปเดตคอลเลกชันก่อนใคร