- PocketBase เป็น แบ็กเอนด์โอเพ่นซอร์สแบบไฟล์เดียว ที่รวมฐานข้อมูล ระบบยืนยันตัวตน ที่เก็บไฟล์ และแดชบอร์ดผู้ดูแลระบบในตัว
- มีโครงสร้างฐานข้อมูลฝังตัวที่มีประสิทธิภาพสูง พร้อม ตัวสร้างสคีมา, การตรวจสอบข้อมูล, การสมัครรับข้อมูลแบบเรียลไทม์, และ REST API
- รองรับการเข้าสู่ระบบด้วยอีเมล/รหัสผ่าน และ OAuth2 (Google, Facebook, GitHub, GitLab) เพื่อการจัดการผู้ใช้ที่ง่ายขึ้น
- รองรับการจัดเก็บไฟล์อย่างปลอดภัยบนพื้นที่จัดเก็บแบบ local หรือ S3 และเชื่อมต่อไฟล์สื่อเข้ากับเรกคอร์ดฐานข้อมูลเพื่อสร้าง thumbnail อัตโนมัติ ได้
- ใช้งานได้ทั้งเป็นแอปพลิเคชันสแตนด์อโลนหรือเป็น เฟรมเวิร์กที่ขยายได้ด้วย Go และ JavaScript เหมาะกับการสร้างแบ็กเอนด์เฉพาะกิจที่น้ำหนักเบา
ภาพรวม PocketBase
- PocketBase คือแพลตฟอร์มแบ็กเอนด์โอเพ่นซอร์สที่ทำงานจากไฟล์ปฏิบัติการเพียงไฟล์เดียว
- รวมฐานข้อมูล ระบบยืนยันตัวตน การจัดเก็บไฟล์ และแดชบอร์ดจัดการไว้ในตัว
- มีโครงสร้างที่รันได้รวดเร็วโดยไม่ต้องตั้งค่าเซิร์ฟเวอร์แยก
คุณสมบัติฐานข้อมูล
- รองรับ ตัวสร้างสคีมา, การตรวจสอบข้อมูล, การสมัครรับข้อมูลแบบเรียลไทม์, และ REST API ในฐานข้อมูลฝังตัว
- มีฟังก์ชันการตรวจจับการเปลี่ยนแปลงข้อมูลแบบเรียลไทม์และการสมัครรับข้อมูล
- ผ่าน REST API สามารถค้นหา สร้าง แก้ไข และลบข้อมูลได้อย่างง่ายดาย
การยืนยันตัวตนผู้ใช้
- รองรับการจัดการผู้ใช้แอปและการเข้าสู่ระบบด้วย อีเมล/รหัสผ่าน
- รองรับการสมัครและล็อกอินผ่านการยืนยันตัวตน OAuth2 ด้วยบัญชี Google, Facebook, GitHub, GitLab
ที่เก็บไฟล์
- สามารถเก็บไฟล์ได้อย่างปลอดภัยบนพื้นที่จัดเก็บแบบ local หรือ S3
- สามารถแนบไฟล์สื่อเข้ากับเรกคอร์ดฐานข้อมูลได้
- มีฟังก์ชันสร้าง thumbnail อัตโนมัติ ขณะอัปโหลด
ความยืดหยุ่นและการสนับสนุนนักพัฒนา
- PocketBase สามารถใช้เป็น แอปพลิเคชันสแตนด์อโลน ได้ หรือใช้เป็น เฟรมเวิร์กที่ขยายต่อได้ ผ่าน Go และ JavaScript hooks
- นักพัฒนาสามารถเพิ่มตรรกะการทำงานของตัวเองเพื่อสร้างแบ็กเอนด์ตามต้องการ
ตัวอย่าง JavaScript SDK
- ใช้โต้ตอบกับเซิร์ฟเวอร์ PocketBase ผ่าน JavaScript SDK ได้
- โค้ดตัวอย่างแสดงการดึงรายการเรกคอร์ดจากคอลเลกชัน
example การดึงเรกคอร์ดเดียว การลบ การสร้าง และการสมัคร/ยกเลิกการสมัครรับข้อมูลแบบเรียลไทม์
- ให้เมธอดเช่น
pb.collection('example').getList(), getOne(), create(), delete(), subscribe()
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
คำพูดที่ว่า “SQLite ขยายสเกลไม่ได้” ส่วนใหญ่เป็น ภาพลวงของการ optimize เร็วเกินไป
ในความเป็นจริงแทบไม่ค่อยชนเพดานข้อจำกัดจาก WAL contention และผมคิดว่าความเรียบง่ายของไบนารีเดียวดีกว่าความซับซ้อนของระบบกระจายมาก
ทุกวันนี้แม้แต่โปรเจกต์เล็ก ๆ ก็มักพ่วง DB cluster กับ Redis cache เป็นเรื่องปกติ แต่ Pocketbase แสดงให้เห็นว่าในแอป CRUD 99% คอขวดไม่ใช่ DB แต่เป็น network latency กับเวลาที่นักพัฒนาต้องใช้ดูแลระบบ
ลองทดสอบด้วย Rust CLI benchmark แล้วพบว่าบนเครื่องเดียวกันมันทำงานได้ดีกว่า MySQL หรือ Postgres
สำหรับโปรเจกต์ขนาดนี้ SQLite เหมาะที่สุด
ต้องให้ฝั่งแอปพลิเคชันจัดการการคำนวณทั้งหมดเอง จึงค่อนข้างยุ่งยาก
พอเห็น Pocketbase ก็พร้อมกด upvote ทันที
ผมใช้อยู่ในหลายแอป production และมันเสถียรมาก
บางครั้งก็มี breaking change บ้าง แต่โดยรวมยอดเยี่ยมและขยายได้ดี
เวลาไม่มีฟีเจอร์ที่ต้องการอาจจะลำบากนิดหน่อย แต่ถ้าเป็นนักพัฒนาที่มีประสบการณ์ก็จัดการได้สบาย
แต่เพราะนักพัฒนามีแค่คนเดียว เลยกังวลเรื่องการบำรุงรักษาในอนาคต
ถึงอย่างนั้น ถ้าต้อง แยก frontend กับ backend มันก็เป็นตัวเลือกที่ดีมากจริง ๆ
ผมชอบใช้ Pocketbase กับโปรเจกต์ส่วนตัวและ internal tools
ถ้าใช้คู่กับ PocketPages จะใช้ file-based routing และ template ได้ง่าย
ด้วยฟีเจอร์ DB migration อัตโนมัติ ทำให้ใส่การเปลี่ยน schema เข้าไปใน version control ได้
ถึงขั้นต่อ Gemini protocol server เข้าไปเพื่อสำรวจ personal knowledge graph ด้วย Lagrange
Pocketbase คือ backend server ที่ตั้งค่าผ่าน GUI ได้
มันช่วยให้สร้าง backend ที่ทำงานได้แทบไม่ต้องเขียนโค้ด จึงเหมาะกับ prototype, MVP และแอปง่าย ๆ
แนวคิดแบบนี้ Firebase เป็นคนทำให้แพร่หลาย
backend ที่ผมเขียนมักต้องใช้โค้ดหลักร้อยถึงหลักพันบรรทัด เลยอยากรู้ว่ามันมาแทนตรงนั้นได้อย่างไร
อยากรู้ขอบเขตของแอปที่สร้างได้ด้วยเครื่องมือแบบนี้
ผมเคยใช้ Pocketbase ใน side project แล้วประทับใจมาก
ผมทำงานกับ Django มานาน และสำหรับโปรเจกต์ขนาดเล็กถึงกลาง Pocketbase เหมาะกว่าการสร้าง backend แบบดั้งเดิมเองมาก
ถ้ามีคำถามก็ยินดีตอบ
แล้วมันรองรับ PostgreSQL ด้วยหรือเปล่า หรือว่าใช้ได้เฉพาะ SQLite
เลยลองทำ Claude Skill ขึ้นมา ไม่แน่ใจว่าคนอื่นมีประสบการณ์คล้ายกันไหม
Trailbase คือเวอร์ชันที่ทำแนวคิดเดียวกันนี้ด้วย Rust
เลยย้ายไป Trailbase
นั่นคือมันสามารถโฮสต์ทั้งแอปได้เลย
ลิงก์คู่มือ
ผมใช้ Pocketbase เป็น authentication layer สำหรับ side project
ใช้งานอยู่ที่ kavla.dev และระบบ hook นั้นยอดเยี่ยมมาก
ด้วย เอกสาร Go event hook ทำให้ทำ infrastructure automation ได้ง่ายมาก
ผมเคยทำ MVP ได้เร็วด้วย SQLite กับ DuckDB แต่ภายหลังกลับมาเสียใจในช่วง backup และทำให้พร้อม production
ถ้าเริ่มต้นด้วย Supabase ตั้งแต่แรกน่าจะง่ายกว่าเยอะ
ผมสร้าง OpenSOHO ด้วย Pocketbase และมันช่วยประหยัดเวลาพัฒนาไปได้มาก
ผมปรับแก้นิดหน่อยเพื่อให้ backend นำกลับมาใช้ซ้ำได้ แต่ไม่ได้ยากอะไร
แค่ดูจาก screenshot ก็เห็นร่องรอยของ Pocketbase ได้ทันที
ลิงก์ GitHub
เพราะกังวลเรื่อง backup ของ SQLite ใน Pocketbase ผมเลยสร้างเครื่องมือ sqlrsync.com ขึ้นมาเอง ซึ่งสามารถสำรองข้อมูลด้วย sqlite3_rsync ได้แม้ขณะรันอยู่
MVP ใช้งานได้แล้ว และเพราะอยู่บน Cloudflare Durable Objects เลยทั้งเร็วและเสถียร
ยินดีรับ feedback