PocketBase: باك إند في ملف واحد — Open Source ج٢٧

PocketBase باك إند open source بـ Go في ملف واحد: SQLite مع realtime و auth وملفات ولوحة أدمن. وخبر مهم: المشروع ساب GitHub واتنقل لـ ganigeorgiev.com.

عندك فكرة side project أو MVP، وأول أسبوع راح في تركيب database و auth ورفع ملفات ولوحة أدمن قبل ما تكتب أول feature؟ ده بالظبط اللي PocketBase بيحاول يوفّره عليك.

يعني إيه PocketBase؟

PocketBase باك إند open source مكتوب بـ Go، برخصة MIT، وآخر إصدار وقت كتابة المقال v0.41.1. الفكرة كلها إن الباك إند بتاعك يبقى ملف executable واحد تنزّله وتشغّله.

حسب الـ README والـ docs الرسمية، فيه:

  • قاعدة بيانات SQLite مدمجة مع realtime subscriptions
  • إدارة مستخدمين وتسجيل دخول ورفع ملفات جاهزين (built-in files and users management)
  • لوحة تحكم (Admin dashboard UI)
  • REST-ish API بسيط
  • SDKs رسمية لـ JavaScript و Dart
  • وتقدر تستخدمه كـ Go framework وتضيف الـ business logic بتاعك، ويطلع في الآخر executable واحد

جرّبه في دقيقة

من صفحة الـ docs الرسمية:

  1. نزّل الملف المناسب لنظامك من صفحة الـ docs (حوالي 12MB zip)
  2. فك الضغط وشغّل السيرفر:
./pocketbase serve
  1. أول مرة هيفتحلك لينك تعمل بيه أول superuser، أو تعمله بالأمر:
./pocketbase superuser create EMAIL PASS
  1. لوحة الأدمن هتلاقيها على http://127.0.0.1:8090/_/ والـ API على /api/

خبر مهم: PocketBase ساب GitHub

المطوّر أعلن في discussion رقم 7841 إنه هينقل كل الريبوهات بتاعته لمنصة self-hosted على ganigeorgiev.com، وده حصل فعلًا:

  • الريبو على GitHub بقى archived، والـ README بتاعه بيقول إن الريبو اتنقل لـ ganigeorgiev.com/pocketbase/pocketbase
  • الـ changelog بتاع v0.40.6 قال إنها غالبًا آخر release على GitHub، وإن أمر الـ update هيجيب الإصدارات الجديدة من الهوست الجديد
  • الإصدارات الجديدة هتبقى على الهوست الجديد بس، ومفيش mirror رسمي على GitHub
  • لو بتستخدمه كـ Go framework، مع الإصدارات الجديدة هتحتاج تغيّر الـ imports من github.com/pocketbase/* لـ ganigeorgiev.com/pocketbase/*
  • لو كنت عامل watch على GitHub عشان الـ security fixes، لازم تشترك تاني على المنصة الجديدة

خلي بالك قبل ما تستخدمه

  • الـ docs بتقول صراحة إنه لسه قبل v1.0، والـ backward compatibility مش مضمونة، ومش منصوح بيه للـ production الحرج إلا لو هتقرا الـ changelog وتعمل migration يدوي أحيانًا
  • كل الداتا والملفات بتتحفظ في فولدر pb_data: خد له backup وما ترفعوش على git
  • فولدر pb_migrations آمن تعمله commit

رأيي

للـ MVP والأدوات الداخلية والمشاريع الصغيرة، ملف واحد و SQLite بيوفّروا عليك أيام من الـ setup. لو المشروع كبر واحتاج scaling أو فريق كبير، تبقى عارف إمتى تنقل. ونقطة النقل من GitHub تفكّرك إن أي dependency لازم تعرف هي جاية منين، وتراجع الـ CI والـ Dockerfiles بتوعك لو بتنزّل منها.

استخدمت PocketBase أو حاجة شبهه في مشروع؟ وصل لحد فين؟

المصادر

  • Open Source
  • PocketBase
  • Backend
  • SQLite
  • Go