Streamlit की सहजता में performance जोड़ने की इच्छा से शुरू किया गया Pure Python Web UI Framework 'Violit'
(github.com/violit-dev)नमस्ते।
मैं एक प्रोफेशनल डेवलपर हूँ जो इन दिनों ऑफिस के बाद और वीकेंड पर शौकिया तौर पर open source विकसित कर रहा हूँ।
मुझे व्यक्तिगत रूप से Streamlit का सहज syntax बहुत पसंद है, और मैं यह भी जानता हूँ कि मेरे आसपास के AI/Data researcher दोस्त भी इसका काफी इस्तेमाल करते हैं। लेकिन मैंने अक्सर देखा कि जैसे-जैसे प्रोजेक्ट बड़ा होता है, लोग performance समस्याओं से जूझने लगते हैं। विकल्प के तौर पर मैंने NiceGUI की सिफारिश की, लेकिन लोगों को उसके syntax के अनुकूल होना थोड़ा मुश्किल लगा। (शायद NiceGUI शुरू में जर्मनी की किसी कंपनी ने अपने अंदरूनी उपयोग के लिए बनाया था.. लेकिन मुझे यह वाकई बहुत अच्छी तरह से बना हुआ framework लगता है।)
साथ ही, मेरा मानना है कि Data दिखाते समय 'सौंदर्य' भी बहुत महत्वपूर्ण है। लेकिन मैंने पाया कि मौजूदा Python-आधारित GUI framework के साथ सुंदर UI बनाना उतना आसान नहीं है। खासकर NiceGUI की एक बड़ी कमी यह है कि Quasar के Material Design से बाहर निकलना आसान नहीं है।
इसीलिए मैंने "ऐसा टूल जो Streamlit जितना आसान हो, performance तेज हो, और styling भी सरल हो" इस लक्ष्य के साथ Violit खुद बनाना शुरू किया। इसकी architecture की नींव FastAPI और shoelace(Lit) पर टिकी है। इसकी मुख्य विशेषताएँ नीचे दी गई हैं।
💜 Violit की मुख्य विशेषताएँ
- Streamlit जैसी 90% सहजता
- API को इस तरह सहज रूप से डिज़ाइन किया गया है कि अगर आपने पहले Streamlit इस्तेमाल किया है, तो आप लगभग बिना किसी learning curve के इसे तुरंत उपयोग कर सकें।
- O(1) Reactivity & Clean Syntax
- Streamlit की तरह सिर्फ एक बटन दबाने पर पूरी script फिर से नहीं चलती (No Re-run)।
@st.cacheजैसे optimization decorator के बिना भी, सिर्फ साधारण variable(state) declaration से तेज और संक्षिप्त state management संभव है। (solid.js के signal कॉन्सेप्ट से प्रेरणा ली गई है।)
- Easy Theming System
- फिलहाल लगभग 30 preset theme उपलब्ध हैं, जिनसे तुरंत सुंदर UI लागू किया जा सकता है।
- जल्द ही ऐसा फीचर भी अपडेट करने की योजना है जिसमें यूज़र सीधे theme customization कर सकेंगे।
- Hybrid Engine & Multi-Platform
- यूज़र की पसंद के अनुसार HTMX का उपयोग करने वाला Lite mode और WebSocket mode, दोनों को सपोर्ट करने वाला एक लचीला engine जोड़ा गया है। शुरुआत में सब ठीक रहता है.. लेकिन आगे चलकर जब यूज़र बढ़ेंगे, तो क्या WebSocket की वजह से यह धीमा हो सकता है—यह सवाल मेरे मन में था।
- बिना code बदले Web service और Desktop app(pywebview) mode के बीच आसानी से जाया जा सकता है।
यह प्रोजेक्ट कहाँ तक विस्तार करेगा, यह तो नहीं पता, लेकिन अगर इसे अच्छी तरह निखारा जाए तो शायद Django या RoR से बनने वाली MVP-स्तर की services को सिर्फ Python से कहीं अधिक तेजी से बनाया जा सकेगा—ऐसी थोड़ी उम्मीद है। इसकी वास्तविक संभावना दिखाने के लिए मैंने Violit से बना Blog निर्माण example code भी शामिल किया है।
यह अभी बहुत शुरुआती v0.0.4 (PoC) चरण में है, लेकिन Reddit आदि पर काफी सकारात्मक प्रतिक्रिया मिली है, और public करने के सिर्फ 2 हफ्तों में 200 से ज्यादा stars मिल गए, इसलिए हिम्मत करके यहाँ भी साझा कर रहा हूँ। मैंने लगभग हमेशा कंपनी के काम के लिए ही SW development किया है.. और इस तरह का पूरी तरह public open source project यह मेरा पहला है। व्यक्तिगत रूप से, मैं pure SW development का आनंद बहुत गहराई से महसूस कर रहा हूँ।
अगर आपको कभी Python से Web UI वगैरह बनानी हो, तो एक बार इसे देखकर जाएँगे तो आभारी रहूँगा.. :)
- GitHub Repo. : https://github.com/violit-dev/violit
- Korean README : https://github.com/violit-dev/violit/blob/main/README_KOR.md
- Blog example : https://github.com/violit-dev/violit/…
16 टिप्पणियां
मैं इसका सक्रिय रूप से समर्थन करता हूँ
बहुत-बहुत धन्यवाद। :) मैं पूरी मेहनत के साथ खुशी-खुशी अपडेट करता रहूँगा। यह मेरे लिए बहुत आनंद की बात है।
मैंने हाल ही में pywebview का इस्तेमाल करके work automation करने की कोशिश की। यह desktop environment है, इसलिए वेब को कैसे हैंडल करूं, इस पर सोच रहा था.... क्या pywebview में इसका इस्तेमाल करने पर इसे वेब पर भी आसानी से उपयोग किया जा सकता है?
क्या pywebview से विकसित किए गए ऐप को violit का उपयोग करके आसानी से वेबसाइट में माइग्रेट किया जा सकता है?
लगता है मेरा सवाल पर्याप्त रूप से स्पष्ट नहीं था, इसलिए मैं फिर से पूछ रहा हूँ।
मैं अभी
pywebviewसे desktop app बनाकर इस्तेमाल कर रहा हूँ।सुना कि Violit web/desktop(
pywebview) multi-platform को support करता है, इसलिए उत्सुकता है।pywebview-आधारित app को Violit संरचना में migrate करना व्यावहारिक रूप से आसान है?लेकिन क्या वास्तविक service scale पर भी संरचनात्मक रूप से वही codebase बनाए रखते हुए web service के रूप में विस्तार करना संभव है? (
pywebview→ web deployment संरचना के नज़रिये से पूछ रहा हूँ.)नमस्ते। migration की कठिनाई आपके बनाए हुए मौजूदा App की संरचना पर बहुत अधिक निर्भर करती है.
अगर मौजूदा ऐप अलग web server (FastAPI आदि) के बिना, केवल pywebview की js api या local HTML loading तरीके से बनाया गया है, तो web deployment के लिए communication layer को शुरू से फिर से लिखना होगा. इसलिए pywebview से लिखे गए कोड को सीधे web में बदलना आपके लिए आसान नहीं हो सकता.
आप इसे violit से संबंधित मुद्दा न मानें. इसे इस तरह समझें कि violit, pywebview से बने मौजूदा App को बदलने के लिए नहीं है; बल्कि violit से बनाते समय शुरू से ही इस तरह design किया गया है कि वह web और pywebview (desktop) दोनों को एक साथ support करे.
धन्यवाद।
मैंने नीचे एक डेमो वेबपेज और Documentation तैयार करके रखी है, जिसे आप तुरंत आज़मा सकते हैं.
एक बार देखकर अच्छा लगेगा. :)
संदर्भ के लिए, दोनों Website भी Violit से बनाई गई हैं.
धन्यवाद। मैं सोच रहा हूँ कि क्या इसे कंपनी के काम में इस्तेमाल करके देखूँ!!
जी, धन्यवाद। इसे इस्तेमाल करके देखें, और अगर कोई असुविधा हो तो कृपया बताइए।
लगता है कि test code और documentation को थोड़ा और मज़बूत करने की ज़रूरत है।
मैंने एक डेमो वेबपेज और Documentation तैयार रखी है, जिन्हें आप नीचे तुरंत इस्तेमाल करके देख सकते हैं.
एक बार देख लें तो अच्छा रहेगा. :)
संदर्भ के लिए, दोनों Website Violit से ही बनाई गई हैं.
हाँ, अच्छी प्रतिक्रिया के लिए धन्यवाद। मौजूदा इम्प्लीमेंटेशन अभी POC स्तर का है, और public interface तथा design स्तर पर breaking changes काफी हैं, इसलिए फिलहाल योजना यह है कि 0.5 से test code जोड़ा जाए।
जैसा आपने कहा, हम फिलहाल प्राथमिकता के तौर पर homepage लॉन्च और documentation पर काम कर रहे हैं, इसलिए लगता है कि यह जल्द ही खुल जाएगा। चूँकि पहला target मौजूदा streamlit users हैं, और syntax लगभग वही है, इसलिए documentation की ज़रूरत कुछ कम महसूस हुई थी।
कृपया थोड़ा सा इंतज़ार कीजिए~
अगर तुरंत इस्तेमाल करके देखने के लिए एक डेमो वेबपेज होता, तो अच्छा रहता।
मैंने एक डेमो वेबपेज और Documentation तैयार करके रखी है, जिन्हें आप नीचे तुरंत इस्तेमाल कर सकते हैं.
एक बार देखकर अच्छा लगेगा. :)
जानकारी के लिए, दोनों Website भी Violit से बनाई गई हैं.
जी, अच्छे सुझाव के लिए धन्यवाद। अभी यह शुरुआती वर्ज़न है, इसलिए अभी होमपेज नहीं है, लेकिन जब होमपेज बन जाएगा तो शायद आप web पर तरह-तरह के widgets इस्तेमाल करके देख पाएँगे। सबसे बढ़कर, अभी हम डिज़ाइन में थोड़ा-थोड़ा बदलाव कर रहे हैं ताकि इस बात पर ज़ोर दिया जा सके कि इसे दूसरे विकल्पों की तुलना में ज़्यादा सुंदर बनाया जा सकता है। :)