6 poin oleh GN⁺ 2024-01-08 | 1 komentar | Bagikan ke WhatsApp
  • PocketBase menyatukan database real-time, autentikasi, penyimpanan file, dan dasbor admin dalam satu file sehingga backend kecil bisa dibangun dengan cepat
  • Database bawaannya menyediakan pembuat skema, validasi data, langganan real-time, dan REST API sekaligus, sehingga mengurangi beban menyiapkan backend terpisah
  • Pengelolaan pengguna mendukung pendaftaran dengan email/kata sandi dan pendaftaran OAuth2, serta dapat menggunakan Google, Facebook, GitHub, dan GitLab
  • File dapat disimpan secara lokal atau di penyimpanan S3, dan media bisa dilampirkan ke record database atau thumbnail dapat dibuat seketika
  • Setelah memulai sebagai aplikasi mandiri, PocketBase bisa diperluas dengan hook Go dan JavaScript sehingga mudah membuat backend portabel kustom

Fitur backend dalam satu file

  • PocketBase adalah backend open source yang menyediakan database real-time, autentikasi, penyimpanan file, dan dasbor admin dalam satu file
  • Database bawaan

    • Database bawaan yang menekankan performa ini menyertakan pembuat skema
    • Menyediakan validasi data, langganan real-time, dan REST API yang mudah digunakan

Autentikasi dan pendaftaran pengguna

  • Dapat mengelola pengguna aplikasi dan menangani pendaftaran berbasis email/kata sandi
  • Juga mendukung pendaftaran OAuth2, termasuk Google, Facebook, GitHub, dan GitLab

Penyimpanan file dan pemrosesan media

  • File dapat disimpan secara lokal atau di penyimpanan S3
  • Media dapat dilampirkan ke record database, dan thumbnail dapat dibuat seketika

Cara penggunaan dan perluasan

  • PocketBase dapat digunakan sebagai aplikasi mandiri
  • Jika dimanfaatkan seperti framework, dapat diperluas dengan hook Go dan JavaScript
  • Dengan cara ini, backend portabel kustom dapat dibuat

Contoh JavaScript SDK

  • JavaScript SDK mengimpor PocketBase dan membuat klien dengan alamat seperti http://127.0.0.1:8090
  • Dengan pb.collection('example').getList(), daftar record koleksi dapat diambil dan dicari
    • Contohnya menggunakan filter title != "" && created > "2022-08-01" dan pengurutan -created,title
  • getOne('RECORD_ID'), delete('RECORD_ID'), dan create() digunakan untuk mengambil, menghapus, dan membuat satu record
  • Dengan subscribe('*', ...), perubahan record koleksi dapat dilanggan, dan dengan unsubscribe(), langganan dapat dihentikan

1 komentar

 
GN⁺ 2024-01-08
Pendapat di Hacker News
  • Saya pernah memakai PocketBase sebagai backend/database aplikasi, dan hasilnya sangat bagus; frontend saya memakai React dan Vite
    Utamanya saya gunakan untuk autentikasi serta melacak akun berbayar/gratis. Hosting-nya sangat mudah, dan bebannya lebih ringan daripada meng-host sendiri Appwrite atau Supabase. Supabase khususnya cukup merepotkan, sementara Appwrite bisa dinaikkan dengan cepat lewat CapRover, tetapi terlalu berlebihan untuk kebutuhan saya
    Dengan view collection, mudah untuk mengembalikan hanya sebagian data yang dibutuhkan; saya memakainya dengan cara melakukan join antara koleksi pengguna dan pengguna berbayar lalu hanya mengembalikan periode berbayarnya: https://pocketbase.io/docs/collections/#view-collection
    Karena bisa diperluas dengan Go atau JS, kalau kebutuhannya tidak rumit, sepertinya backend bisa sepenuhnya dilewati: https://pocketbase.io/docs/use-as-framework/

    • Poin bahwa hosting-nya sangat mudah perlu lebih ditekankan. Cukup unggah satu binary tunggal ke server dan bisa langsung mulai; saya berharap lebih banyak tool sesederhana ini
  • Saya sudah 2 bulan mengembangkan dengan PocketBase, dan berencana masuk produksi dalam 1–2 bulan
    Saat membuat web app untuk perusahaan teman, saya menginginkan sistem sederhana yang mudah diserahkan, dan semuanya berjalan dengan satu binary tunggal PocketBase. Web server, JavaScript sisi server (TypeScript yang sudah dikompilasi), dan database SQLite berada dalam satu proses, di-host di Vultr seharga 12 dolar per bulan. Frontend ditulis dengan SvelteKit static adapter + Svelte + TypeScript
    PocketBase dibuat dengan baik, dan pembuatnya menjawab pertanyaan dengan sangat cepat dan jelas. Namun dokumentasinya masih punya beberapa celah, CSV loader harus saya tulis sendiri, dan menulis banyak objek lewat antarmuka CRUD terasa lambat. Bisa dibuat lebih cepat dengan kode sisi server. Unit test untuk JavaScript sisi server juga harus saya paksakan masuk, dan saya juga berharap Copilot/ChatGPT bisa menjawab pertanyaan dengan lebih baik
    Ada juga keanehan seperti tidak adanya cara mengatur halaman 404 web server, dan lokasi filesystem dari binary menjadi penting. Karena ini dirancang sesuai kebutuhan pembuatnya sendiri, kita perlu menerima pilihan-pilihan seperti itu
    Meski begitu, ini sangat pas dengan kebutuhan saya. Sederhana, dan semua kode bisa ditulis dalam satu bahasa, TypeScript. Performanya bukan kelas tinggi, tetapi saya tidak membutuhkannya, dan setelah pekerjaan ini selesai saya berniat membuat satu side project juga dengan PocketBase. Semudah itu. Sebagai bagian dari kontrak, perusahaan teman saya juga setuju untuk berdonasi ke PocketBase

  • Saya sudah memakai PocketBase selama beberapa bulan di lingkungan produksi, dengan alpinejs sebagai frontend
    Filosofi pengembangannya benar-benar cocok. Ini software yang menyenangkan dan praktis, menjalankan tujuan nyatanya dengan baik, dan terus membaik setiap minggu tanpa feature bloat
    Namun seiring makin mainstream, diskusi dan issue terlihat makin melelahkan, jadi saya khawatir pembuatnya akan burnout karena terus menanggung tingkat dukungan yang selama ini diberikan
    Kalau Anda menghasilkan uang dari ini, saya sangat menyarankan untuk mendukung proyeknya di Open Collective

    • Penasaran teknologi lain apa yang dipakai dalam stack Anda
  • Saya sudah mengikuti PocketBase sejak awal, dan hal terbaik dari proyek ini adalah ia secara aktif menghindari kompleksitas serta berfokus pada pendekatan sederhana dan minimalis
    Kemudahan deployment yang selesai hanya dengan mengunggah satu binary ke server juga menarik. Setelah dukungan JavaScript masuk ke backend, saya merasa ini menjadi kandidat serius yang layak menantang framework seperti Remix dan Next.js. Saya menantikan v1

    • Sekarang saya memakai PocketBase hampir di semua tempat yang membutuhkan backend. Pernah sekali saya harus menulis SQL join sendiri, dan proses menulis query yang memasukkan parameter URL serta memilih hanya berdasarkan pengguna yang terautentikasi ternyata sangat mudah
      Sebenarnya saya bisa saja mengambil semua data lalu memprosesnya di Node, tetapi menyelesaikannya di dalam PocketBase cukup sederhana. Saya tidak akan menyebutnya pengganti Next atau Remix, tetapi sangat saya rekomendasikan untuk ditambahkan ke stack agar lebih sederhana
  • Saya sedang mencari frontend yang bisa langsung dipakai di atas database SQLite. Saya menghapus Vivino karena ada lebih dari 800 partner yang membagikan data saya
    Untuk merancang dan menyimpan koleksi wine, kombinasi satu executable, antarmuka admin, dan database yang bisa disimpan di laptop serta masuk backup terlihat persis seperti yang saya inginkan. Karena itulah saya selalu kembali ke HN

  • Senang melihat makin banyak proyek open source bagus di area ini. Grist dan NocoDB juga layak disebut; keduanya lebih berfokus pada pengelolaan database
    Menarik juga bahwa cara memulainya disediakan dengan sangat sederhana, baik sebagai file tunggal maupun dalam bentuk Electron
    https://github.com/gristlabs
    https://nocodb.com/

    • Saya tidak tahu keduanya. Untuk proyek kecil saya selama ini memakai Baserow, tetapi untuk kasus seperti itu PocketBase terlihat jauh lebih cocok
  • Saya membaca sekilas dokumentasinya, tetapi belum jelas bagaimana beberapa hal ditangani
    Misalnya kontrol akses tingkat baris agar pengguna hanya bisa mengakses datanya sendiri, integrasi eksternal seperti pengiriman email atau trigger, ekspor/impor CSV, dan internasionalisasi. Saya ingin tahu apakah semua ini memungkinkan dan intuitif, atau semuanya membutuhkan ekstensi Go atau JS. Tool-nya sendiri terlihat bagus

    • Saya sudah 2 bulan mengembangkan dengan PocketBase
      Seperti yang dikatakan orang lain, akses tingkat baris bisa dikontrol dengan API rules. Pengiriman email, pengaturan timer, dan mengirim request ke web server lain juga memungkinkan. Saya belum memakainya sendiri, tetapi ada dokumentasinya: https://pocketbase.io/docs/js-sending-emails/
      Impor CSV harus saya tulis sendiri, dan saya sedang mempertimbangkan untuk merilisnya sebagai open source. Internasionalisasi tergantung fitur apa yang Anda inginkan, tetapi secara umum tampaknya lebih dekat ke fitur sisi frontend
    • Lihat API rules dan hook
      API Rules: https://pocketbase.io/docs/api-rules-and-filters/#api-rules
      Hooks: https://pocketbase.io/docs/js-overview/
      Panel admin memiliki backup data serta impor/ekspor skema koleksi
    • Item pertama, autentikasi/kontrol akses, ditangani dengan filter rules bahkan di framework dasar tanpa ekstensi
      Sisanya, kecuali email autentikasi, umumnya membutuhkan ekstensi, tetapi bentuk ekstensi paling sederhana hanya berupa penambahan fungsi JavaScript biasa ke event lifecycle record. Biasanya dijalankan sebelum atau sesudah insert/update/delete. Beberapa API Go untuk filesystem, kriptografi, HTTP, dan pekerjaan email diekspos ke runtime JavaScript
      Internasionalisasi bisa ditangani dengan template dan database
  • Dari semua PaaS yang pernah saya coba, termasuk Supabase dan Appwrite, PocketBase adalah yang terbaik. Performanya bagus, fiturnya intuitif, benar-benar bisa di-host sendiri, dan deployment-nya menyenangkan

  • Saya sudah memakai PocketBase selama beberapa bulan di lingkungan produksi aplikasi mobile, dan sejauh ini sangat nyaman
    Jika dipakai bersama JS SDK, sekarang saya memilihnya sebagai framework backend default untuk semua kasus yang tidak membutuhkan library khusus seperti machine learning

  • PocketBase sangat bagus, jadi saya membuat starter Nuxt 3 kecil: https://github.com/fayazara/pocketbase-nuxt
    Contohnya mencakup autentikasi, route rules, operasi CRUD, event real-time, dan store. Masih perlu refactoring, tetapi mengerjakannya sangat menyenangkan, dan saya ingin menambahkan langganan Stripe ke sini untuk mendorong route rules sampai batasnya. Saya belum tahu caranya, tetapi akan mencari tahu