ทำ backend ให้แอปมือถือด้วย AI แล้วโฮสต์บน BrewInTH

ให้ AI เขียน API สำหรับแอป Flutter หรือ React Native ตั้ง Path ตรวจความพร้อม ต่อฐานข้อมูล รับมือแอปพักบนแพ็กเกจฟรี และเก็บ key ไว้ที่ backend
แอปมือถือที่ทำด้วย Flutter, React Native หรือ Expo ดูสวยในเครื่องจำลองแล้ว แต่พอจะให้คนอื่นใช้จริงก็ติดคำถามเดิม: ข้อมูลผู้ใช้เก็บที่ไหน ล็อกอินยังไง แอปจะเรียก API ที่อยู่ไหน คำตอบคือแอปต้องมี backend ที่ออนไลน์อยู่ตลอด
บทความนี้พาทำ backend ให้แอปมือถือด้วย AI แล้วโฮสต์บน BrewInTH ตั้งแต่สั่ง AI ให้เขียน API ตั้ง Path ตรวจความพร้อม ต่อฐานข้อมูล ไปจนถึงเรื่องที่แอปมือถือต้องรู้ เช่น แอปพัก ข้อจำกัดของคำขอ และเรื่อง key ที่ห้ามใส่ในแอป
สรุปสั้นก่อนอ่าน
✅ backend ของแอปมือถือคือแอปบนเซิร์ฟเวอร์ (Node, Python, PHP, Go, Java, .NET, Ruby, Bun) ที่ตอบเป็น JSON ผ่าน HTTPS
✅ API ที่ไม่มีหน้าแรก ต้องตั้ง Path ตรวจความพร้อม เช่น/healthไม่งั้นการเผยแพร่ไม่ผ่าน
✅ REST, WebSocket, server-sent events และ gRPC ใช้ได้บนที่อยู่เว็บเดียวกัน
✅ แพ็กเกจฟรีแอปจะพักเมื่อไม่มีคนใช้ แอปมือถือควรลองใหม่เมื่อได้ 503runtime_waking
✅ key ลับเก็บที่ backend เท่านั้น ห้ามฝังในแอปมือถือ
backend ของแอปมือถือคืออะไร
แอปมือถือที่อยู่ในเครื่องผู้ใช้ทำหน้าที่แสดงผลและรับการกด ส่วนงานที่ต้องเป็นของกลาง เช่น บัญชีผู้ใช้ ข้อมูลที่ทุกเครื่องเห็นตรงกัน การชำระเงิน หรือการส่งแจ้งเตือน ต้องอยู่ที่เซิร์ฟเวอร์ แอปจะส่งคำขอไปที่ backend เช่น GET /api/posts แล้วได้ JSON กลับมา
บน BrewInTH backend คือโปรเจกต์แบบแอปทั่วไป ใช้ภาษาที่ถนัดได้ทั้ง Node.js, Python, PHP, Go, Java, .NET, Ruby หรือ Bun และได้ที่อยู่ HTTPS ให้ทันที เช่น https://myapp-api.host.brewinth.net

ทำ backend ด้วย AI ทีละขั้น
1. ออกแบบ API ก่อนให้ AI เขียน
บอก AI ว่าแอปทำอะไร มีหน้าจออะไรบ้าง แล้วให้ AI สรุปรายการ endpoint ก่อนเขียนโค้ด เช่น แอปจดรายการออมเงิน
ฉันทำแอปมือถือ Flutter ชื่อ "ออมทุกวัน" ให้ผู้ใช้จดเงินออมรายวัน
ช่วยออกแบบ backend เป็น REST API ที่ตอบ JSON:
- สมัคร / ล็อกอินด้วยอีเมลและรหัสผ่าน ได้ token กลับไป (JWT)
- เพิ่ม / แก้ / ลบ / ดูรายการออมของตัวเอง
- สรุปยอดรายเดือน
- GET /health ตอบ {"ok":true} ใช้ตรวจว่าเซิร์ฟเวอร์พร้อม
ใช้ Node.js + Express + PostgreSQL
สรุปรายการ endpoint และโครงสร้างตารางให้ฉันดูก่อน แล้วค่อยเขียนโค้ด
2. ให้ AI เขียนโค้ดแบบพร้อมขึ้นเซิร์ฟเวอร์
สั่งเพิ่มอีกนิดให้โค้ดขึ้น BrewInTH ได้ในรอบเดียว
เขียน backend ตามที่ออกแบบไว้ โดย:
- ฟังที่ 0.0.0.0 และพอร์ตจาก process.env.PORT
- อ่านที่อยู่ฐานข้อมูลจาก process.env.DATABASE_URL และ JWT_SECRET จาก environment variable
- สร้างตารางด้วย migration ไม่ใช่สร้างมือ
- ทุก error ตอบเป็น JSON พร้อม status code ที่ถูกต้อง (400, 401, 404, 500)
- ห้ามเขียนรหัสผ่านหรือ key ลงในโค้ด
จากนั้น deploy ขึ้น BrewInTH ด้วยลิงก์และ token ที่ฉันจะให้ ตั้ง healthPath เป็น /health
และตรวจด้วย site_check ว่า /health ตอบ 200
AI ที่เชื่อมกับ BrewInTH ด้วยลิงก์และ token จะสร้างฐานข้อมูล ตั้ง secrets และเผยแพร่ให้เอง ค่าเชื่อมต่อฐานข้อมูลอย่าง DATABASE_URL ระบบเขียนให้อัตโนมัติ
3. ตั้ง Path ตรวจความพร้อม
ก่อนเปิดให้คนใช้ BrewInTH จะเรียก GET ที่ path หนึ่งของแอป ต้องได้คำตอบ 2xx หรือ 3xx ภายใน 5 นาที ค่าเริ่มต้นคือ / ซึ่งเว็บทั่วไปมีอยู่แล้ว แต่ API ของแอปมือถือมักไม่มีหน้าแรกและตอบ 404 ที่ / การเผยแพร่จึงไม่ผ่าน
แก้ได้สองทาง
- บอก AI ให้ตั้ง healthPath เป็น
/health(ใน prompt ข้างบนสั่งไว้แล้ว) - หรือตั้งเองในแท็บ การเผยแพร่ กด ตัวเลือกขั้นสูง (build / start / port) แล้วกรอกช่อง Path ตรวจความพร้อม (GET ต้องตอบ 2xx/3xx)
ถ้าไม่ผ่าน ดูบรรทัด [readiness] ใน log ของการเผยแพร่ จะบอกว่าตรวจแล้วเจออะไร เช่น 404 แปลว่า path ผิด 500 แปลว่าแอปยังขาดค่าตั้งหรือตาราง
4. ใส่ที่อยู่ API ในแอปมือถือ
ให้ AI ฝั่งแอปตั้งที่อยู่ API เป็นค่าคงที่ที่เดียว เช่น API_BASE = "https://myapp-api.host.brewinth.net" เพื่อให้เปลี่ยนเป็นโดเมนของตัวเองได้ภายหลังโดยแก้จุดเดียว
สิ่งที่ใช้ได้ และข้อจำกัดที่ควรรู้

- REST / JSON ใช้ได้ทันที
- WebSocket และ server-sent events สำหรับแชตหรืออัปเดตสด ใช้ที่อยู่เดียวกัน แพ็กเกจฟรีเปิดพร้อมกันได้ 32 การเชื่อมต่อต่อโปรเจกต์ แพ็กเกจจ่ายเงิน 500 ต่อ 0.5 CPU ของแพ็กเกจ การเชื่อมต่อที่เงียบเกิน 10 นาทีถูกปิด แอปควรต่อใหม่เองเมื่อหลุด
- gRPC คำขอที่มี
Content-Type: application/grpcวิ่งเป็น HTTP/2 ตลอดทาง (รวม trailers) - เรียกบริการภายนอก เช่น ระบบแจ้งเตือน ระบบชำระเงิน หรือ AI อีกตัว ออกได้ทุกพอร์ตยกเว้นพอร์ต 25 (ส่งอีเมลใช้ 465/587 หรือ API ของผู้ให้บริการ)
- ขนาดคำขอ แพ็กเกจฟรี 20 MB แพ็กเกจจ่ายเงิน 400 MB เหมาะกับการอัปโหลดรูปจากมือถือ
- เวลารอคำตอบ ถ้าแอปไม่ส่งอะไรกลับเลย คำขอถูกตัดที่ 2 นาที (ฟรี) หรือ 10 นาที (จ่ายเงิน) งานนาน ๆ ควรตอบรับทันทีแล้วให้แอปมาถามผลทีหลัง
- จำกัดความถี่ เฉลี่ย 60 คำขอต่อวินาทีต่อ IP (กระชากได้ถึง 300) ใช้งานปกติไม่ชนแน่นอน
แพ็กเกจฟรีกับการพักแอป: แอปมือถือต้องลองใหม่
แอปบนแพ็กเกจฟรีจะพักเมื่อไม่มีใครเรียกสักพัก คำขอแรกหลังจากนั้นจะปลุกแอป และระหว่างที่แอปกำลังตื่น (ประมาณ 10-40 วินาที) API จะตอบ 503 พร้อม JSON แบบนี้
{ "error": "runtime_waking", "retryAfterSeconds": 5 }
บอก AI ฝั่งแอปมือถือให้รับมือ
ถ้า API ตอบ 503 และ error เป็น "runtime_waking" ให้รอตามค่า retryAfterSeconds แล้วลองใหม่
ลองได้สูงสุด 8 ครั้ง ระหว่างนั้นแสดงข้อความ "กำลังเชื่อมต่อเซิร์ฟเวอร์…" แทนข้อความ error
ถ้าแอปมีผู้ใช้จริงแล้ว แพ็กเกจจ่ายเงินเลือกเวลาพักเองหรือไม่พักเลยได้ที่ส่วน พักอัตโนมัติ (autosleep) ส่วนฐานข้อมูลไม่พักไปด้วย ข้อมูลไม่หาย
ความปลอดภัย: อะไรห้ามใส่ในแอปมือถือ

ไฟล์แอปที่คนดาวน์โหลดไปถูกแกะดูได้เสมอ อะไรที่ฝังในแอปถือว่าเปิดเผย
- ใส่ในแอปได้: ที่อยู่ API และ token ของผู้ใช้ที่ได้หลังล็อกอิน
- ต้องอยู่ที่ backend: รหัสฐานข้อมูล
JWT_SECRETkey ของระบบชำระเงิน key ของบริการ AI ทั้งหมดเก็บใน secrets ของโปรเจกต์ (แท็บ ตั้งค่าแอป) แล้วให้แอปมือถือเรียกผ่าน API ของคุณ - ตรวจสิทธิ์ที่ backend ทุกครั้ง อย่าเชื่อว่าแอปส่งเลขผู้ใช้มาถูก ให้ backend อ่านจาก token เสมอ
รูปที่ผู้ใช้อัปโหลด ให้เปิด พื้นที่เก็บไฟล์ถาวร (/data) ในแท็บ ตั้งค่าแอป แล้วให้แอปเขียนรูปลงโฟลเดอร์นั้น ไฟล์ที่เขียนที่อื่นหายเมื่อเผยแพร่เวอร์ชันใหม่
ดูวิดีโอประกอบ
▶ ตัวอย่างตั้งแต่สร้างโปรเจกต์จนเปิดเว็บ (1:30 นาที)
ดูบน YouTube
คำถามที่พบบ่อย
ต้องเปิด CORS ไหม
แอปมือถือแบบ native (Flutter, React Native) ไม่ติด CORS เพราะไม่ได้รันในเบราว์เซอร์ ต้องเปิด CORS เฉพาะเมื่อมีหน้าเว็บอีกโดเมนเรียก API เดียวกัน (รวม Expo แบบเว็บ) ให้ AI เปิดเฉพาะโดเมนของคุณ ไม่ใช่ *
ใช้ Firebase อยู่แล้ว ยังต้องมี backend ไหม
ถ้า Firebase ทำได้ครบก็ไม่จำเป็น แต่เมื่อต้องเก็บ key ของบริการที่เสียเงินได้ ต่อระบบชำระเงิน หรือเขียนกฎซับซ้อน backend ของตัวเองช่วยได้ และเรียก Firebase จาก backend ได้เพราะออกอินเทอร์เน็ตได้
ส่ง push notification ได้ไหม
backend เรียกบริการแจ้งเตือนภายนอกผ่าน HTTPS ได้ เพราะออกได้ทุกพอร์ตยกเว้น 25 ส่วนการตั้งค่าฝั่งผู้ให้บริการแจ้งเตือนและ key ให้เก็บใน secrets
ใช้โดเมนของตัวเองเป็นที่อยู่ API ได้ไหม
ได้ในแพ็กเกจจ่ายเงิน เช่น api.yourapp.com แล้วแก้ API_BASE ในแอปจุดเดียว ที่อยู่เดิมของ BrewInTH ยังใช้ได้ แอปเวอร์ชันเก่าที่ผู้ใช้ยังไม่อัปเดตจึงไม่พัง
สร้าง backend จากมือถืออย่างเดียวได้ไหม
ขั้นที่ให้ AI เขียนโค้ดและนำขึ้น ต้องใช้ coding agent บนคอมพิวเตอร์ เช่น Claude Code, Codex, Cursor หรือ Windsurf ส่วนการดูสถานะทำจากมือถือได้
สรุป
backend ของแอปมือถือบน BrewInTH คือโปรเจกต์แบบแอปที่ตอบ JSON ให้ AI ออกแบบ endpoint ก่อน เขียนโค้ดให้อ่านพอร์ตและค่าลับจาก environment variable ตั้ง Path ตรวจความพร้อมเป็น /health แล้วให้แอปมือถือรับมือกับ 503 ตอนแอปตื่น เท่านี้แอปของคุณก็มีเซิร์ฟเวอร์จริงให้ผู้ใช้ทุกเครื่องใช้ร่วมกัน
