Firebase का यह फ्री विकल्प सिर्फ एक फाइल में है

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Pocketbase, Supabase या Firebase का एक ओपन-सोर्स विकल्प है और संभवतः सबसे सरल
00:00:04बैकएंड है जिसे आप चला सकते हैं, बस एक एकल फ़ाइल जो आपको रीयल-टाइम डेटाबेस, ऑथेंटिकेशन और
00:00:11फ़ाइल स्टोरेज देती है। यह आधुनिक वेब डेवलपमेंट की अत्यधिक जटिलता के बिल्कुल विपरीत है।
00:00:16इसलिए आज के वीडियो में, हम Pocketbase का परीक्षण करेंगे और देखेंगे कि क्या इसका सरल आर्किटेक्चर
00:00:21एक साधारण ऐप से कुछ बड़ा बनाने के दौरान वास्तव में खरा उतरता है।
00:00:29Pocketbase, एम्बेडेड SQLite के साथ एक सिंगल Go बाइनरी है, लेकिन Go में कोडिंग करना वास्तव में
00:00:35वैकल्पिक है क्योंकि बैकएंड को JavaScript और TypeScript दोनों के साथ बढ़ाया जा सकता है और आपको
00:00:40एक बेसिक एडमिन UI का एक्सेस भी मिलता है जहाँ आप अपने सभी कलेक्शन को कॉन्फ़िगर कर सकते हैं, ठीक वैसे ही जैसे Supabase काम करता है।
00:00:46अब आर्किटेक्चर और इसे वास्तव में कैसे इस्तेमाल करें, इस पर आते हैं। एक बार जब Pocketbase लाइव हो जाता है, तो आप
00:00:51JavaScript SDK के माध्यम से फ्रंटएंड से इससे कनेक्ट हो सकते हैं। यह फिर से बिल्कुल वैसा ही है जैसे Firebase
00:00:57और Supabase डिज़ाइन किए गए हैं, क्योंकि आप अपने डेटाबेस को सीधे फ्रंटएंड से एक्सेस कर सकते हैं और आपको
00:01:02चिंता करने की ज़रूरत नहीं है, Pocketbase के पास इन सभी नियमों को सुरक्षित रखने के लिए API रूल्स और ऑथेंटिकेशन हैं। लेकिन सीधे
00:01:08एक डेमो पर चलते हैं जो ऑथेंटिकेशन, डेटाबेस और फ़ाइल स्टोरेज के साथ एक वास्तविक एप्लिकेशन दिखाता है। और अगर आप इस
00:01:13वीडियो का आनंद ले रहे हैं, तो Better Stack को सब्सक्राइब करें क्योंकि हम इस चैनल पर बहुत सारा डेवलपर कंटेंट कवर करते हैं।
00:01:18तो हमारे पास यहाँ हमारा एप्लिकेशन है, हमने बैकएंड पर Pocketbase रखा है और हमारे पास बस एक वेब फ्रंट
00:01:22एंड है जो React में लिखा गया है। वेब फ्रंट एंड में सबसे महत्वपूर्ण फ़ाइल यहाँ यह pb.ts फ़ाइल है क्योंकि
00:01:30यहाँ हम Pocketbase से इम्पोर्ट कर रहे हैं, इसलिए हमारे पास Pocketbase क्लास है। हम उसका एक नया इंस्टेंस बनाते हैं,
00:01:36फिर हम अपनी बैकएंड सर्विस से कनेक्ट कर सकते हैं और अब हम बाकी एप्लिकेशन में pb का उपयोग कर सकते हैं।
00:01:42तो एप्लिकेशन खुद एक साधारण बग ट्रैकर है। हम कॉलम के बीच आइटम खींच सकते हैं, हम
00:01:48बिल्कुल नए इश्यू बना सकते हैं। तो अगर हम उस हुक के अंदर देखें जो लॉग-इन उपयोगकर्ता को नियंत्रित करता है, तो आप देख सकते हैं
00:01:53शुरुआत में हम pb auth रिकॉर्ड के साथ स्टेट सेट करते हैं, तो यह केवल वर्तमान में ऑथेंटिकेटेड उपयोगकर्ता को Pocketbase से
00:01:59ले लेगा और फिर हम एक लिसनर भी सेट करते हैं, तो हम कहते हैं कि अगर ऑथ स्टोर, ऑन चेंज इवेंट के साथ
00:02:05बदलता है, तो हम बस नए उपयोगकर्ता को स्टेट में सेट कर देंगे। तो यह वास्तव में उतना ही सरल है।
00:02:11हम स्टेट को एक्सेस कर सकते हैं, हम स्टेट को सब्सक्राइब कर सकते हैं और यही हमारे इश्यू के लिए भी सच है।
00:02:16तो हमारे useIssues हुक के अंदर, फिर से हम कुछ स्टेट को इनिशियलाइज़ करते हैं लेकिन इस मामले में हम इसे खाली छोड़ देंगे,
00:02:21फिर हमारे पास एक useEffect है और हम कहते हैं कि हम सभी इश्यू को ले लेंगे, पूरी लिस्ट प्राप्त करेंगे और फिर
00:02:27हम उस लिस्ट के साथ इश्यू को सेट कर देंगे ताकि यह शुरू में डेटा को प्री-पॉप्युलेट कर दे और फिर हम
00:02:32इश्यू को सब्सक्राइब भी कर सकते हैं, इसलिए यदि आप कॉलम के बीच इश्यू को खींचते हैं या कोई इश्यू बनाते या हटाते हैं,
00:02:38तो हम कह सकते हैं pb.collection issues subscribe, और फिर जब भी कोई नया रिकॉर्ड आता है तो हम उसे
00:02:44अपनी स्टेट में जोड़ सकते हैं। इसका मतलब है कि जब हम सीधे Pocketbase डेटाबेस के साथ इंटरैक्ट कर रहे होते हैं,
00:02:49जैसे कि जब हम यहाँ एक कार्ड खींचते हैं, तो स्टेट अपने आप अपडेट हो जाएगी। एक
00:02:54बिल्कुल नया इश्यू बनाने के मामले में, हम इसमें एक स्क्रीनशॉट भी जोड़ सकते हैं, तो चलिए एप्लिकेशन का
00:02:59एक स्क्रीनशॉट लेते हैं, हम फाइल इश्यू पर क्लिक करते हैं और फिर नया इश्यू यहाँ दिखाई देता है। फ्रंट-एंड कोड में इसे
00:03:05एक सबमिट फंक्शन के माध्यम से हैंडल किया जाता है और फिर हम सभी फॉर्म डेटा को जोड़ते हैं और अंत में हम pb
00:03:11collection issues को कॉल करते हैं और डेटा पास करके क्रिएट करते हैं। हमारे पास बैकएंड पर कलेक्शन API
00:03:17रूल्स हैं ताकि इन API के दुरुपयोग को रोका जा सके, इसलिए Pocketbase आपको यह एडमिन इंटरफ़ेस डिफ़ॉल्ट के रूप में देगा।
00:03:24और फिर यहाँ आप देख सकते हैं कि हमारे पास यूजर्स कलेक्शन है और हमारे पास इश्यू कलेक्शन भी है
00:03:27जहाँ हमारे सभी इश्यू रहते हैं। यदि हम यूजर्स कलेक्शन के अंदर देखें और फिर यहाँ ऊपर सेटिंग्स दबाएं,
00:03:32तो हमारे पास यह टैब API रूल्स है और ये वे सभी नियम हैं जो इस विशेष
00:03:37कलेक्शन तक पहुंच को प्रतिबंधित करते हैं। तो हम कहते हैं कि यूजर्स के मामले में, रिक्वेस्ट ऑथ ID एक खाली स्ट्रिंग नहीं हो सकती और फिर जब
00:03:43यूजर्स को अपडेट या डिलीट करते हैं, तो ID ऑथेंटिकेटेड उपयोगकर्ता की ID से मेल खानी चाहिए और हम इसे इस
00:03:50विशेष स्ट्रिंग यहाँ, @ कैरेक्टर और फिर request.auth.id के साथ एक्सेस कर सकते हैं। यदि आपने अतीत में Supabase
00:03:56का उपयोग किया है, तो आपको यह पैटर्न बहुत परिचित लगेगा। अब क्या होगा यदि बैकएंड
00:04:02वह सब कुछ नहीं करता जो आपको चाहिए? खैर, सौभाग्य से आप इसे हुक के माध्यम से बढ़ा सकते हैं, निश्चित रूप से Go के साथ, लेकिन JavaScript
00:04:08और TypeScript के साथ भी। इसलिए हम on bootstrap जैसे इवेंट्स में हुक कर सकते हैं, जब ऐप शुरू होता है, या on record
00:04:15create, जब कोई डेटाबेस रिकॉर्ड बनाया जाता है। फिल्मिंग के समय 82 अद्वितीय हुक थे, तो लगभग
00:04:21आपको जो कुछ भी चाहिए वह कवर हो जाएगा। अब देखते हैं कि यह सब कैसे काम करता है, इसके लिए अपनी Pocketbase सर्विस को बढ़ाएं।
00:04:27यदि हम pb फ़ोल्डर के अंदर देखें, तो आप देख सकते हैं कि हमारे पास हमारी Pocketbase बाइनरी है और यह फ़ाइल सचमुच
00:04:32Pocketbase का डिफ़ॉल्ट संस्करण चलाने के लिए आपको बस इतना ही चाहिए। हालाँकि, मेरे मामले में, मैंने सभी हुक
00:04:38TypeScript में लिखे हैं, इसलिए मेरे पास उन हुकों को pb हुक्स फ़ोल्डर में JavaScript के रूप में कंपाइल करने के लिए कुछ सेटअप है क्योंकि
00:04:44Pocketbase वास्तव में केवल JavaScript को ही मूल रूप से सपोर्ट करता है, इसलिए यदि आप TypeScript का उपयोग कर रहे हैं, तो आपको इसे कंपाइल करने की आवश्यकता है।
00:04:50यदि हम मुख्य हुक फ़ाइल के अंदर देखें, तो हम देख सकते हैं कि हमारे पास यहाँ एक हुक है जो on record create कहता है
00:04:55और यह विशेष रूप से तब लक्षित होता है जब हम इश्यू बनाते हैं और यहाँ हम क्या कर रहे हैं, हम कह रहे हैं
00:05:00कि हर बार जब कोई रिकॉर्ड बनाया जाता है, तो हम उपयोगकर्ता को एक ईमेल भेजेंगे और हम ऐसा e.app newMailClient
00:05:05को कॉल करके और फिर send और फिर संदेश ऑब्जेक्ट को पास करके कर सकते हैं जिसे हमने यहाँ बनाया है।
00:05:10आप निश्चित रूप से Pocketbase के अंदर बहुत सारी अलग-अलग सुविधाओं में हुक कर सकते हैं, इसलिए कोई भी कस्टम कार्यक्षमता
00:05:15जिसकी आपको आवश्यकता हो सकती है, वह हमेशा Pocketbase में पहले से उपलब्ध 82 से अधिक हुक के साथ समर्थित होगी।
00:05:21क्योंकि यह SQLite चलाता है, इसका मतलब है कि हमें परसिस्टेड स्टोरेज की आवश्यकता है, इसलिए Heroku, Render जैसे पिछले प्लेटफॉर्म
00:05:28या Railway वास्तव में उनके एफेमेरल (अस्थायी) फ़ाइल सिस्टम के कारण एक बुरा विकल्प होंगे। मूल रूप से आप अपना डेटा खो देंगे
00:05:33हर बार जब आप अपना ऐप फिर से डिप्लॉय करते हैं। इससे बचने के लिए आप एक स्थायी फ़ाइल सिस्टम जोड़ सकते हैं, लेकिन बेहतर और
00:05:39सस्ता विकल्प बस एक VPS पर होस्ट करना होगा और वह डेटा pb डेटा फ़ोल्डर के अंदर रहता है, इसलिए यदि
00:05:45हम यहाँ अंदर एक नज़र डालें, तो आप देख सकते हैं कि हमारे पास एक स्टोरेज फ़ोल्डर है और इसमें वे सभी
00:05:50इमेज शामिल होंगी जिन्हें हमने अपने इश्यू के खिलाफ अपलोड किया है। वे बस स्टोरेज फ़ोल्डर में संग्रहीत हो जाती हैं,
00:05:55इसलिए उदाहरण के लिए इस यादृच्छिक ID के अंदर, आप यहाँ वह इमेज देख सकते हैं जिसे मैंने पहले इश्यू के खिलाफ अपलोड किया था।
00:05:59डेटाबेस फ़ाइलें खुद भी इस फ़ोल्डर के भीतर परसिस्ट की जाएंगी, तो data.db यहाँ, इसमें
00:06:05हमारा सारा SQLite कोड होगा, इसलिए यदि मैं इस फ़ाइल को हटा देता हूँ, तो मैं एप्लिकेशन का सारा डेटा खो दूँगा।
00:06:11तो स्पष्ट रूप से आपको डिस्क पर केवल एक फ़ाइल के रूप में छोड़ने के बजाय एक अच्छी बैकअप रणनीति की आवश्यकता है।
00:06:16Supabase जैसे टूल की तुलना में, जो बेसिक टियर के लिए 25 डॉलर से शुरू हो सकते हैं, Pocketbase
00:06:22मूल रूप से मुफ्त है। आपको बस अपनी VPS लागत का भुगतान करना है जो कि चार डॉलर जितना कम हो सकता है और आपको
00:06:28जितने चाहें उतने प्रोजेक्ट चलाने की अनुमति देता है, लेकिन निश्चित रूप से आप उपयोग के साथ इसे स्केल करना चाहेंगे।
00:06:33Pocketbase प्रोडक्शन ऐप के लिए आवश्यक हर चीज़ के साथ आता है जैसे माइग्रेशन, जॉब शेड्यूलिंग और
00:06:38लॉगिंग। आप Pocketbase के साथ सीधे स्थिर फ़ाइलों को pg पब्लिक फ़ोल्डर में डालकर सर्व कर सकते हैं,
00:06:44और यह React फ्रंट-एंड जैसी चीज़ों के लिए उपयोगी होगा। वैकल्पिक रूप से, आप
00:06:49टेम्पलेट रेंडरिंग के साथ डायनामिक रूट्स को भी होस्ट कर सकते हैं और यह ईमेल टेम्पलेट जैसी चीज़ों के लिए एकदम सही होगा, इसलिए यदि आप
00:06:54एक सिंगल बॉक्स सेटअप चाहते हैं, तो आप ऐसा करते हैं। अब बड़ा सवाल है, क्या यह प्रोडक्शन के लिए तैयार है?
00:06:59खैर, इसमें वे सभी सुविधाएँ शामिल हैं जिनकी आपको एक आधुनिक SaaS ऐप बनाने के लिए आवश्यकता होगी, विशेष रूप से
00:07:04माइग्रेशन और लॉगिंग जैसी प्रोडक्शन-ग्रेड सुविधाएँ। यह पूरी तरह से एक्स्टेंसिबल भी है, इसलिए आप केवल
00:07:09डिफ़ॉल्ट तक सीमित नहीं हैं, लेकिन बड़ी दिक्कत यह है कि यह pre v1 है, इसलिए वे स्पष्ट रूप से कहते हैं कि केवल
00:07:15इसका उपयोग करें यदि आप चेंजलॉग पढ़ने और समय-समय पर मैन्युअल माइग्रेशन चलाने में ठीक हैं, लेकिन अगर वह आप
00:07:20हैं तो आगे बढ़ें, आप बस पहला सिंगल फ़ाइल यूनिकॉर्न बना सकते हैं। आप Pocket
00:07:25base के बारे में अधिक जानकारी नीचे विवरण में प्रासंगिक लिंक देखकर प्राप्त कर सकते हैं। और यदि आपको ओपन सोर्स विकल्प पसंद हैं
00:07:29तो Open Code पर हमारा वीडियो देखें, जो Clawed Code का ओपन सोर्स विकल्प है। मैं Better Stack से वॉरेन हूँ।
00:07:35देखने के लिए धन्यवाद और निश्चित रूप से मैं आपसे अगली बार मिलूँगा।

Key Takeaway

Pocketbase एक एकल फ़ाइल वाला ओपन-सोर्स बैकएंड समाधान है जो SQLite और 82 से अधिक हुक के साथ जटिलता को कम करते हुए रीयल-टाइम डेटाबेस और ऑथेंटिकेशन की सुविधा देता है।

Highlights

  • Pocketbase एक सिंगल Go बाइनरी के रूप में रीयल-टाइम डेटाबेस, ऑथेंटिकेशन और फ़ाइल स्टोरेज प्रदान करता है।

  • यह SQLite पर आधारित है और बैकएंड को JavaScript या TypeScript के माध्यम से विस्तारित करने की सुविधा देता है।

  • इसमें 82 से अधिक कस्टमाइज़ेबल इवेंट हुक उपलब्ध हैं, जो ईमेल भेजने जैसे कार्यों को स्वचालित करने में मदद करते हैं।

  • प्रोडक्शन के लिए इसे स्थायी फ़ाइल सिस्टम वाले VPS पर होस्ट करना सबसे सस्ता और सुरक्षित विकल्प है।

  • यह वर्तमान में pre-v1 चरण में है, जो इसके उपयोग के दौरान संभावित बदलावों और मैन्युअल माइग्रेशन की आवश्यकता को दर्शाता है।

Timeline

Pocketbase का परिचय और आर्किटेक्चर

  • Pocketbase एक ओपन-सोर्स विकल्प है जो Firebase और Supabase की कार्यक्षमता प्रदान करता है।
  • यह एक एम्बेडेड SQLite डेटाबेस के साथ एक सिंगल Go बाइनरी फाइल है।
  • इसमें ऑथेंटिकेशन और डेटाबेस नियमों को प्रबंधित करने के लिए एक एडमिन UI उपलब्ध है।

यह बैकएंड समाधान आधुनिक वेब डेवलपमेंट की जटिलता को दूर करने के लिए बनाया गया है। इसमें Go में कोडिंग अनिवार्य नहीं है, क्योंकि बैकएंड को JavaScript या TypeScript से बढ़ाया जा सकता है। फ्रंटएंड के साथ कनेक्ट करने के लिए इसमें स्टैंडर्ड SDK उपलब्ध है।

एप्लिकेशन इंटीग्रेशन और रीयल-टाइम डेटा

  • React एप्लिकेशन में Pocketbase के साथ कनेक्शन pb.ts फ़ाइल के माध्यम से स्थापित होता है।
  • उपयोगकर्ता ऑथेंटिकेशन स्थिति को लिसनर के जरिए ट्रैक किया जा सकता है।
  • डेटाबेस अपडेट्स के लिए सब्सक्राइब फंक्शन का उपयोग रीयल-टाइम में किया जाता है।

एक बग ट्रैकर एप्लिकेशन के उदाहरण से पता चलता है कि कैसे pb.collection subscribe का उपयोग करके कार्ड खींचने या इश्यू बनाने पर स्टेट को तुरंत अपडेट किया जा सकता है। कलेक्शन API रूल्स के जरिए डेटा तक पहुंच को प्रतिबंधित करना संभव है, जो Supabase के पैटर्न से काफी मिलता-जुलता है।

कस्टम हुक्स और होस्टिंग रणनीति

  • 82 से अधिक हुक्स के साथ बैकएंड कार्यक्षमता को बढ़ाया जा सकता है।
  • डेटा को स्थायी रखने के लिए VPS होस्टिंग सबसे प्रभावी तरीका है।
  • Pocketbase माइग्रेशन, जॉब शेड्यूलिंग और लॉगिंग जैसी प्रोडक्शन-ग्रेड सुविधाएं प्रदान करता है।

JavaScript या TypeScript का उपयोग करके onRecordCreate जैसे इवेंट्स पर कस्टम लॉजिक, जैसे ईमेल भेजना, जोड़ा जा सकता है। चूंकि यह SQLite पर आधारित है, इसलिए परसिस्टेड स्टोरेज के लिए Heroku जैसे अस्थायी फाइल सिस्टम वाले प्लेटफॉर्म से बचना चाहिए। यह pre-v1 चरण में है, इसलिए इसे प्रोडक्शन में इस्तेमाल करने के लिए नियमित मैन्युअल माइग्रेशन आवश्यक है।

Community Posts

View all posts