TSBOARD (TypeScript में लिखा गया open source community builder)
(github.com/sirini)TSBOARD क्या है?
- TSBOARD का मतलब Type Safety BOARD है, और यह TypeScript में लिखा गया एक community builder और bulletin board है।
- इसका backend, यहां GeekNews पर पहले परिचित कराए जा चुके Bun runtime और ElysiaJS नाम के web framework का उपयोग करके बनाया गया है। इसकी वजह से यह सामान्य bulletin board engines की तुलना में तेज़ चलता है।
- Frontend में Vue और Vuetify का उपयोग किया गया है। लेकिन developer की aesthetic sense थोड़ी कमज़ोर है, इसलिए इसी उम्मीद के साथ यह पोस्ट लिख रहा हूँ कि आगे चलकर किसी उदार designer की मदद मिल सके। (+ और निश्चित ही उदार developers की मदद भी चाहिए!)
इसे क्यों बनाया?
- मैंने web programming की शुरुआत
PHPसे की थी, और Zeroboard तथा GnuBoard के दौर से गुज़रा हुआ (अब उम्रदराज़) developer हूँ। - JavaScript के बारे में मेरी आख़िरी याद यही थी कि
jQueryके बिना यह किसी बेकार भाषा (...) जैसी लगती थी। - लेकिन standards में लगातार सुधार,
Node.jsके आगमन, और Microsoft के TypeScript से देर से ही सही, मुझे प्यार हो गया। (असल में शायद बहुत देर से) - इसलिए मैं फिर से एक web program बनाना चाहता था, और हमेशा की तरह एक bulletin board को केवल TypeScript में लिखकर देखना चाहता था।
- साथ ही, सोचा कि अगर बनाना ही है, तो ऐसा हो जो इस्तेमाल में आसान हो, और ज़्यादा तेज़ व सुरक्षित तरीके से काम करे।
TSBOARD की खास खूबियां
- TSBOARD का frontend और backend दोनों TypeScript में लिखे गए हैं, इसलिए यह type safety को अधिकतम स्तर तक सुनिश्चित करता है। (हालांकि कोई भी चीज़ पूरी तरह परफेक्ट नहीं होती, लेकिन type safety पर सबसे ज़्यादा ध्यान दिया गया है)
- जिन लोगों ने
Node.jsआधारित full-stack development किया है, उनके लिए इसे समझना आसान है, और इसका design तुरंत उपयोग में लाया जा सकता है। मैंने भी इसे बिल्कुल शुरुआत से सीखते हुए बनाया, इसलिए दूसरों के best practices का खूब संदर्भ लिया। - छोटे और मध्यम आकार के community sites बनाने के लिए आवश्यक सभी फीचर्स built-in हैं। इसे विकसित करते समय मैंने Clien, QuasarZone, GiggleHDware और हाल में बने Damoang जैसे कोरिया के प्रमुख community sites को संदर्भ के रूप में देखा था।
कुछ कमियां भी हैं
- Bun runtime virtual CPU पर ठीक से काम नहीं करता। कम लागत वाले virtual server hosting में इसका सही उपयोग करना कठिन है। TSBOARD भी Bun पर निर्भर है, इसलिए यही सीमा इस पर भी लागू होती है।
- TSBOARD Client Side Rendering तरीका इस्तेमाल करता है। मैं अब भी PHP को पसंद करने वाला व्यक्ति हूँ, इसलिए Server Side Rendering जैसा शब्द मेरे लिए उल्टा ज़्यादा अपरिचित था। इसके अपने कई फायदे-नुकसान हैं, लेकिन मैं एक नई पद्धति आज़माना चाहता था, और TSBOARD को server load कम करने के उद्देश्य से विकसित किया था, इसलिए यह बात किसी के लिए निश्चित रूप से एक कमी लग सकती है।
- सच कहूँ तो development शुरू किए हुए लगभग आधा साल से ज़्यादा हो चुका है, लेकिन अब जाकर मुश्किल से इसे परिचित कराने लायक स्थिति बनी है; अभी भी कई कमियां हैं। उम्मीद है कि भविष्य में मिलने वाले उदार लोगों की मदद से इन कमियों को दूर कर सकूँगा।
समापन : कभी न कभी प्रसिद्ध community sites TSBOARD को अपनाएँगी, इसी सपने के साथ
- GnuBoard को PHP से Python की ओर जाते देख मुझे लगा कि web programs भी लगातार नए प्रयोग कर रहे हैं। XE से जन्मा Rhymix भी ऐसा ही है। Web आज भी dynamic है, और development भी वैसा ही है।
- मैं भी TSBOARD project के ज़रिए, भले ही छोटे स्तर पर, web ecosystem में योगदान देने की भावना से यह परिचय लिख रहा हूँ।
- मैं उस दिन का सपना देखता हूँ जब किसी नए community site के द्वारा TSBOARD अपनाया जाएगा। haha
इतनी लंबी पोस्ट पढ़ने के लिए धन्यवाद!
21 टिप्पणियां
लगभग 2 हफ़्ते पहले डाली गई पोस्ट पर एक और कमेंट छोड़ना मददगार होगा या नहीं, पता नहीं haha
GeekNews से मिले SEO से जुड़े फ़ीडबैक को कैसे लागू करूँ, इस पर सोचते हुए,
sitemap.xmlको implement करके search engine optimization को लागू किया है, और उसी का विवरण साझा करने के लिए यह कमेंट छोड़ रहा हूँ!संक्षेप में कहूँ तो, search engine
robots.txt>sitemap.xmlएक्सेस के जरिए अंततःhttps://tsboard.dev/tsapi/seo/main.html (उदाहरण पेज) पथ पर डेटा एकत्र करता है.
अगर कोई उपयोगकर्ता search के माध्यम से आता है, तो उस पेज पर दिए गए links के जरिए उसे फिर मूल साइट पर जाने दिया गया है.
विस्तृत जानकारी नीचे दिए गए लिंक पर देख सकते हैं!
https://tsboard.dev/board/free/18
मैं भी सोच रहा था कि अपने शौकिया प्रोजेक्ट को bun पर चलाऊँ, लेकिन यह जानकर हैरानी हुई कि यह virtual CPU पर ठीक से काम नहीं करता। और सदस्यता लेते समय password शर्त में
대문자लिखा था, इसलिए मुझे लगा कि lowercase शामिल न भी करूँ तो चलेगा, लेकिन वहाँ तो धोखा हो गया lol मेरा ख्याल है कि आपको대소문자लिखना चाहिए।बस एहतियातन एक जवाब छोड़ रहा/रही हूँ। जो लोग Bun runtime पर विचार कर रहे हैं, उन्हें अब virtual CPU पर चलने से जुड़ी दिक्कतों की चिंता करने की ज़रूरत नहीं है...! 1.1.31 version में टेस्ट करके देखा, और पुष्टि हुई कि यह बिना किसी परेशानी के ठीक से काम करता है। :)
अरे, कमेंट के लिए धन्यवाद, और आपने जो password condition वाली बात कही है, उसमें भी मैं ज़रूर सुधार कर दूँगा। haha
Bun को मैंने भी क्या कहूँ, बहुत गहराई से इस्तेमाल नहीं किया है, लेकिन इसे इस्तेमाल करते हुए कई तरह से चौंकाने वाले अनुभव हुए। Node.js में जो चीज़ें स्वाभाविक रूप से चलती थीं, वे किसी कारण से यहाँ नहीं चलती थीं—ऐसे अनुभव भी काफी हुए (उन्हीं में, उदाहरण के लिए, folder बनाते समय
recursive: trueoption सपोर्ट न होने की समस्या भी थी)। दूसरी तरफ, इसकी speed के प्रति लगभग चौंका देने वाली हद तक की लगन भी कई जगह दिखी (और शायद इसी वजह से मुझे इसके प्रति और लगाव हुआ)।अब इसे Bundows कहा जाता है, और Windows पर Bun runtime को अब official support मिल चुका है, लेकिन 1.1 से पहले यह संभव नहीं था, इसलिए इसे WSL2 पर चलाना पड़ता था। आपने जो virtual CPU पर चलने की बात कही, Bun के आगे भी उसे support करने की संभावना कम लगती है। AVX2 instruction को support न करने वाले CPU के लिए distribution (
baseline) तो दिया जा रहा है, लेकिन virtual CPU support न होना—चाहे यह Bun की development language Zig की सीमा हो—फिर भी कई मायनों में अफसोसजनक है। इस्तेमाल करते हुए मुझे बस इतना लगा कि speed के लिए Bun ने भी कुछ हिस्सों में compromise किया है।अगर भविष्य में इस कमेंट को कोई Bun user पढ़े, तो थोड़ा और जोड़ना चाहूँगा: कई सीमाओं के बावजूद Bun एक आकर्षक विकल्प है। खासकर अगर आप web framework के रूप में ElysiaJS चुनते हैं, तो कम से कम speed के मामले में निराश होने की ज़रूरत नहीं होगी—मेरा ऐसा मानना है। अगर मुझे फिर से बिल्कुल शुरुआत पर लौटकर runtime चुनना पड़े... तो मैं शायद थोड़ा और सोचूँगा, लेकिन कई समस्याओं के बावजूद आखिरकार Bun को ही चुनूँगा। processing speed के प्रति इसका लगभग जुनूनी लगाव, और पहले से स्थापित JS runtime ecosystem को चुनौती देने का इसका अंदाज़—इन दोनों में कुछ ऐसा है जो दिल को छू जाता है। haha
GitHub कोड देखते समय कुछ जिज्ञासाएँ हुईं, इसलिए यह सवाल छोड़ रहा हूँ.
व्यक्तिगत रूप से, TS-आधारित board जैसा कुछ आए तो अच्छा लगेगा—ऐसा कुछ आया देखकर मैं काफ़ी प्रभावित हुआ!
v0.8.40 अपडेट में foreign key सेटिंग लागू कर दी गई है!
https://tsboard.dev/board/free/18
अरे, कमेंट के लिए धन्यवाद!
आपका मतलब relation setting से है, यानी foreign key सेट नहीं की गई है, यही बात है न! इसके पीछे कोई खास वजह नहीं थी। सोचा था कि table structure कुछ हद तक तय हो जाए तो इसे सेट करूँगा, लेकिन बीच में दूसरी चीज़ें संभालते-संभालते अभी तक इसे लागू नहीं कर पाया। अब TSBOARD की tables के बीच dependency relation और refer किए जाने वाले columns काफ़ी हद तक stable हो गए हैं, तो अब foreign key setting भी कर दूँगा और इसे इस तरह बदलने की कोशिश करूँगा कि integrity और बेहतर तरीके से सुनिश्चित हो सके!
NoSQL के बारे में मैंने थोड़ी देर सोचा था... लेकिन पहले से ही TypeScript language से लेकर Vue, Node.js/Bun वगैरह बहुत कुछ नया सीखना था, इसलिए बदलने का फैसला नहीं किया। Relational database अपनी लंबी इतिहास की वजह से अब काफ़ी पुरानी ज़रूर हो गई है, लेकिन फिर भी आज भी बहुत-सी जगहों पर उसका उपयोगी बने रहने की कोई न कोई वजह तो होगी, ऐसा भी मैंने सोचा था। यह कमेंट लिखते समय मेरी सोच फिलहाल ऐसी है, लेकिन आगे चलकर अगर कोई ज़रूरत पैदा हुई तो MongoDB जैसी चीज़ पर भी विचार कर सकता हूँ. haha
यह बात कि TypeScript-आधारित bulletin board अभी तक नहीं था, सच कहूँ तो मुझे व्यक्तिगत रूप से काफ़ी हैरान करने वाली लगी, लेकिन शायद यह भी समय की ही बात है। अच्छा होगा कि TSBOARD से अलग स्टाइल के और भी कई प्रोजेक्ट सामने आएँ! haha कमेंट के लिए धन्यवाद!
सच कहूँ तो पहले के PHP बोर्ड टाइप चीज़ों को सोचकर मुझे ज़्यादा उम्मीद नहीं थी, लेकिन डेमो साइट (https://tsboard.dev) देखने के बाद मेरी सोच बदल गई। क्वालिटी वाकई बहुत अच्छी है.
मुझे लगता है कि ऐसे पॉइंट्स ज़रूरी हो सकते हैं!
एडिटर क्या आपने खुद इम्प्लीमेंट किया है? कमाल है. शायद आपने कोई एडिटर इंजन(?) इस्तेमाल किया होगा, लेकिन इसमें जबरदस्त कारीगरी महसूस होती है
टिप्पणी के लिए धन्यवाद! आपने tsboard.dev साइट की quality को अच्छा माना, उसके लिए और भी धन्यवाद। haha
आपने जिस SSR support का ज़िक्र किया, उसके लिए मैंने roadmap को 2 चरणों में बाँटकर तैयार किया है। पहले कुछ पूरक उपाय लागू करने के बाद, आगे के versions में CSR और SSR तरीकों को ठीक तरह से मिलाकर development आगे बढ़ाने का इरादा है। Performance को पर्याप्त रूप से बनाए रखते हुए SEO के लिए थोड़ा और optimize करने के लिए, सबसे पहले मुझे खुद भी और ज़्यादा सीखना होगा, इसलिए लगता है थोड़ा और समय लगेगा। हार माने बिना लगातार करता रहूँ, तो उम्मीद है कि मुझे भी दूसरे अच्छे developers से मिलने, उनसे जल्दी सीखने और शायद मदद पाने का मौका मिल सकता है। haha
non-login के मामले को TSBOARD बनाते समय development period कम करने और design की simplicity बनाए रखने के लिए शुरू में विचार में नहीं लिया था, लेकिन इस पर थोड़ा और सोचूँगा! इस जवाब को लिखते समय की स्थिति में, अगर non-member support पर विचार करना हो तो बहुत सारे बदलावों की ज़रूरत पड़ेगी, इसलिए अभी के लिए यह मुश्किल लगता है. ^^;;;
editor को मैंने tiptap editor के आधार पर बहुत मेहनत से एक-एक हिस्सा जोड़कर बनाया है, लेकिन उम्मीद से ज़्यादा समय editor implementation में लग गया। पुरानी याद के हिसाब से, शायद CKEditor था...? ऐसा कुछ बस लाकर इस्तेमाल कर लेते थे, लेकिन आजकल तो इसे ऐसे एक-एक piece जोड़कर, जैसे Lego assemble करते हैं, वैसे बनाना पड़ता है. T_T ऊपर से उसमें TSBOARD features को integrate करने के लिए और भी काफ़ी trial and error करना पड़ा। बनाते समय मुझे लगा कि काश कोई सिर्फ़ यह editor ही बना देता haha... अगर किसी को tiptap आधारित कोई ठीक-ठाक(?) editor चाहिए, तो TSBOARD में मैंने जो code implement किया है, उसे refer करके आप शायद और तेज़ी से और आसानी से development कर सकेंगे।
उम्मीद से ज़्यादा लोग इसे अच्छे नज़रिए से देख रहे हैं, इसलिए अब तो ऐसा लगता है कि परिचय लेख लिखते समय उसे लिखूँ या न लिखूँ, इस पर जो समय soch-vichar में लगाया था, वह बेकार गया। TSBOARD में अभी बहुत कमियाँ हैं, फिर भी कृपया इसे अपनापन देकर देखें!
मैंने development की शुरुआत php से की थी, और यह वही समय है जब मैं भी typescript से प्रभावित होकर इसे बहुत आज़मा रहा हूँ.
कुछ अपनापन-सा महसूस हुआ, अच्छा लगा.
नमस्ते! मैं भी किसी तरह काफ़ी मिलते-जुलते सफ़र से गुजर रहा हूँ। haha PHP भाषा आज भी यहाँ-वहाँ काफ़ी आलोचना झेलती रहती है, इसलिए व्यक्तिगत रूप से थोड़ा अफ़सोस होता है, लेकिन TypeScript इस्तेमाल करके लगा कि थोड़ी-बहुत आलोचना झेलना ठीक भी है। haha उम्मीद है yeppyshiba जी भी TypeScript के साथ बहुत से मज़ेदार प्रोजेक्ट करेंगे। :)
आप कमाल हैं 👍
धन्यवाद!! यह अभी एक अधूरा-सा प्रोजेक्ट है, लेकिन आपने इसे अच्छी नज़र से देखा, इससे मुझे भी बहुत खुशी हुई। haha
कभी जब आपको TSBOARD की ज़रूरत पड़े, तब मैं इसे पूरे भरोसे के साथ recommend कर सकूँ, इसके लिए मैं इसे और मेहनत से लगातार बेहतर बनाता रहूँगा। :)
यही कमी लग रही थी.. धन्यवाद।
टिप्पणी छोड़ने के लिए धन्यवाद! अगर कभी आपको TSBOARD जैसा कोई वेब प्रोग्राम चाहिए, तो कृपया इसे याद रखें और एक बार टेस्ट करके देखें। ताकि जब आपको इसकी ज़रूरत हो, तब आप इसे और भी आसानी से इस्तेमाल कर सकें, इसके लिए मैं इसे लगातार मेहनत से बेहतर बनाता रहूंगा!
ओ...! मुझे PHP के दौर का sirini board याद है, सच में बहुत समय बाद देख रहा हूँ।
उस समय मैंने Sirini board के लिए स्किन भी डेवलप की थी और security vulnerabilities भी report की थीं, आप अच्छे हैं न? :)
कोड देखते हुए जो महसूस हुआ, वह यह है कि server-side code में कहीं न कहीं PHP वाली feel काफी आती है haha (PHP feel वाला js code?)
जैसा कि किसी और ने कहा, अगर यह CSR है तो SEO वगैरह के मामले में नुकसान होने की कमी तो होगी।
उम्मीद है कि ऐसे हिस्सों को अच्छी तरह पूरक किया जाएगा haha
अरे, तो आप वही कृपालु व्यक्ति थे जिन्होंने पहले मेरी मदद की थी! आपसे इस तरह फिर मिलकर बहुत खुशी हुई haha
साथ ही, तब भी और अब भी, मुझे थोड़ा शर्म आती है कि मैं शायद बस वही साधारण चीज़ें बना रहा हूँ जिनके बारे में कोई भी सोच सकता है. ^^;;
जैसा आपने कहा, backend कोड में PHP स्टाइल घुली-मिली हुई है haha मैं भी कभी-कभी यह सोचकर हर बार ढूंढता रहता हूँ कि PHP में जो functions इस्तेमाल करता था, क्या वे JS में नहीं हैं? फिर कभी-कभी मिलते-जुलते नाम से function names बनाकर इस्तेमाल भी कर लेता हूँ। शायद जैसे-जैसे मैं JS/TS कोड का और आदी होऊँगा और refactoring करूँगा, यह और बेहतर हो जाएगा। haha
SEO वाले हिस्से में, जैसा आपने कहा, मुझे सुधार करना चाहिए। मेरी छोटी-सी सोच में अभी RSS जैसी दूसरी static pages जोड़ने का विचार है, लेकिन मैं अलग-अलग चीज़ें आज़माकर देखूँगा।
वैसे, PHP4 के दौर वाले मुझे याद रखने वाला कोई है, यह सच में हैरान करने वाली और आभारी बनाने वाली बात है! सच कहूँ तो, मैं यह पोस्ट लिखूँ या न लिखूँ, इस पर बहुत सोच रहा था। haha;; मैं कोशिश करूँगा कि और ज़्यादा लोगों की थोड़ी-बहुत मदद कर सकूँ। कृपया TSBOARD को भी बहुत प्यार दीजिए!
पोस्ट पढ़कर कुछ सवाल आए, इसलिए कमेंट छोड़ रहा/रही हूँ। (कोड नहीं देखा है)
यह जानने की जिज्ञासा है कि बैकएंड को Nodejs compatible बनाकर क्यों डेवलप नहीं किया गया? (क्या आपने जो कमियाँ बताईं, उन्हें ऑफसेट करने लायक performance नहीं निकलती?)
अगर यह CSR है, तो SEO को आप कैसे संभालने की योजना बना रहे हैं? लगता है कि community के लिए search से आने वाला traffic भी महत्वपूर्ण होगा।
नमस्ते! कमेंट छोड़ने के लिए धन्यवाद। (सच कहूँ तो लगा था कि यह लोगों की बेरुख़ी में दब जाएगा, इसलिए मैं भावुक हो गया/गई।)
आपने जो सवाल पूछे, उन पर मैंने भी बहुत गंभीरता से सोचा था। बस इसे ऐसे देखें कि यह भी एक नज़रिया है।
ओह, और संदर्भ के लिए बता दूँ कि PHP के बाद मैंने वास्तविक जीवन में एक भी बार web development जारी नहीं रखा। Node.js सुधार के दौर में भी, और जब React ने web की दुनिया बदल दी तब भी, मैंने इस पर ध्यान नहीं दिया था, इसलिए मेरा नज़रिया थोड़ा अपरिचित लग सकता है। haha
जब मैंने पहली बार TSBOARD बनाना शुरू किया, तो मैंने पहले से ही यह मान लिया था कि Node.js-आधारित कोई मशहूर board, blog, या कम से कम वैसा कुछ तो ज़रूर होगा जैसा मैं बनाना चाहता था, भले ही मुझे उसके बारे में पता न हो। जैसा कि शुरुआत में कहा, मुझे अपने रोज़मर्रा के जीवन में web development करने की ज़रूरत नहीं पड़ी, और मैंने अलग से कोई side project भी नहीं किया था, इसलिए शायद ऐसा सोचना स्वाभाविक था। मुझे लगा कि Node.js-आधारित कुछ न कुछ तो पहले से मौजूद ही होगा, इसलिए अगर मैं फिर से वैसी ही कोई चीज़ बनाऊँ तो उसका ज़्यादा मतलब नहीं होगा। इसलिए मैंने सोचा, जब नया सीखना ही है तो Bun-आधारित बनाते हैं — और वही फैसला करते-करते आज यहाँ तक आ गया।
अगर performance के नज़रिए से सोचें, तो सच कहूँ तो जिस छोटे community site को मैं लक्ष्य बना रहा था (एक समय में 10 से कम concurrent users), उसके लिए Node.js काफ़ी है। Bun पर विचार करने से पहले मैंने Node.js + Hono के साथ भी testing की थी, और मेरी राय में उसमें कोई समस्या नहीं थी। लेकिन Bun ने जो जबरदस्त performance दिखाई, और उसके ऊपर Bun-आधारित ElysiaJS की performance ने मुझे सच में बहुत प्रभावित किया। मैं उसे छोड़ना नहीं चाहता था। चूँकि मुझे लगता था कि कोई और पहले से Node.js-आधारित एक बेहतरीन board बना चुका होगा, इसलिए उस काल्पनिक board से प्रतिस्पर्धा करने के लिए मुझे और बेहतर performance चाहिए होगी। आखिरकार मैंने Node.js compatibility छोड़ दी और Bun dependency को ध्यान में रखकर architecture डिज़ाइन किया। (अब थोड़ा पछतावा होता है। Node.js-आधारित gnuboard, Rhymix, XE जैसे मशहूर board...असल में थे ही नहीं। या शायद मैं ढूँढ नहीं पाया??)
आपकी बात पूरी तरह सही है। search traffic लाना है तो किसी न किसी तरह Google crawler को content पढ़ना होगा और उसे search matching के लिए index करना होगा। यह हिस्सा अभी तक implement नहीं किया है, लेकिन सोच रहा हूँ कि अगर user चाहे तो RSS feed दिखाने की तरह latest contents को अलग से static रूप में share किया जा सकता है। अगर JSON format में बाहर expose करें, तो शायद aggregators के लिए data update करना और आसान हो जाए? इस बारे में मैं थोड़ा और सोचूँगा। (मैंने RSS के बारे में सोचा था, लेकिन आजकल ज़्यादातर लोग इसे इस्तेमाल नहीं करते, है ना?? लगता है मैंने web से बहुत लंबे समय तक दूरी बना ली थी टीटी)
SEO की भरपाई के उपायों से अलग, CSR चुनने की वजह यह थी कि मैं server load को और सक्रिय रूप से कम करना चाहता था। हाल ही में शुरू हुई Damoang (मुझे नहीं पता कि इस community का नाम यूँ खुलकर लेना ठीक है या नहीं) जैसी site के मामले में भी, मेरी जानकारी में traffic load और server burden काफ़ी ज़्यादा है। जब मैंने इसे एक community builder के रूप में सोचा, तो SEO महत्वपूर्ण ज़रूर था, लेकिन उससे पहले मुझे उन समस्याओं को हल करना ज़्यादा ज़रूरी लगा जो सीधे cost से जुड़ी थीं। इसलिए मैंने प्राथमिकता के तौर पर CSR चुना। PHP को आज भी पसंद करने वाले व्यक्ति के रूप में, SSR मेरे लिए उल्टा ज़्यादा परिचित है। लेकिन मेरा विचार यह था कि अगर client थोड़ा और सक्रिय रूप से computing power इस्तेमाल करे, तो server को कुछ राहत मिल सकती है। आप इसे उसी सोच से लिया गया फैसला मान सकते हैं।
उम्मीद है कि आपकी जिज्ञासा कुछ हद तक दूर हुई होगी। साथ ही, मैंने जो चुनाव किए हैं उनके स्पष्ट फायदे और नुकसान दोनों हैं, इसलिए मैं यह नहीं मानता कि TSBOARD ही सही जवाब है। मैंने कई trade-offs पर विचार किया, और इन्हें मेरी सीमित समझ के आधार पर लिए गए फैसले मान सकते हैं। अगर आगे चलकर TSBOARD का उपयोग थोड़ा और बढ़ता है, तो मैं कभी भी अपनी सोच बदलकर कुछ और प्रयोग करने की कोशिश कर सकता हूँ। haha
डिज़ाइन पहले से ही CSR के मुताबिक बना हुआ है, इसलिए इसे SSR में बदलना हो तो शायद लगभग दोबारा डेवलपमेंट के स्तर का काम करना पड़ेगाT_T
हाल के search crawlers ने JS को कुछ हद तक बेहतर तरीके से प्रोसेस करना शुरू किया है, लेकिन... फिर भी लगता है कि वे plain HTML की बराबरी नहीं कर पाएँगे।
सामान्य ब्राउज़र के लिए CSR रखा जाए, लेकिन search bots (GoogleBot, Yeti आदि) के मामले में SSR इस्तेमाल करने का तरीका भी हो सकता है।
व्यक्तिगत रूप से, मुझे लगता है कि ऐसा तरीका एक अस्थायी उपाय है, और आखिरकार SEO को अच्छी तरह सपोर्ट करने के लिए SSR ही सही जवाब है।
भले ही CSR हो, आखिर में अगर request volume बढ़ता है, तो backend पर लोड आएगा, और cache डिज़ाइन व तरह-तरह की तकनीकों के ज़रिए backend लोड कम करना एक अच्छा रास्ता लगता है^^;
TSBOARD के मामले में, जैसा आपने कहा, अभी सब कुछ CSR मानक के आधार पर बनाया गया है, इसलिए कम-से-कम v1.y.z वर्ज़न में तो CSR only आधार पर ही काम करना पड़ेगा। अगर कुछ सुधार की बात करें, तो चूँकि संरचना ऐसी है कि पहले स्क्रीन पर सभी पोस्ट दिखाई देती हैं, इसलिए शायद सिर्फ पहले स्क्रीन पर SSR लागू किया जा सकता है, या फिर जैसा आपने कहा, bots plain HTML पक्ष को crawl कर सकें, इसके लिए अलग पेज जोड़ा जा सकता है! इन सुधारों को v0.9.z वर्ज़न श्रृंखला में शामिल करने की कोशिश करूँगा!
अरे, कहीं ऐसा न हो कि कुछ लोग यह सोचें कि TSBOARD CSR तरीका होने की वजह से search में नहीं आता! इस चिंता से एक बात कहना चाहूँगा: Googlebot के मामले में, कहा जाता है कि वह अब CSR तरीके से बनी वेबसाइटों की सामग्री भी पर्याप्त रूप से ले जा सकता है! (शायद क्योंकि वह Google है...?) यह साफ है कि SEO के लिए यह कम अनुकूल तरीका है, लेकिन ऐसा भी नहीं है कि यह बिल्कुल काम ही नहीं करता, इसलिए बहुत ज़्यादा चिंता करने की ज़रूरत नहीं होगी।
CSR, SSR के अलावा इनके बीच के कुछ और तरीके भी हो सकते हैं, इसलिए मैं इस पर और विचार करूँगा और SEO सुधारने के लक्ष्य के साथ v2.0.0 roadmap भी बनाऊँगा। (हालाँकि अभी यह काफ़ी दूर की बात है, हाहा) सलाह देने के लिए धन्यवाद, और प्रोजेक्ट अभी अपूर्ण है, फिर भी TSBOARD को आपका सहयोग मिलता रहे, यही अनुरोध है!