Memulai 'Violit', Framework Web UI Pure Python yang Ingin Menambahkan Performa pada Intuitivitas Streamlit
(github.com/violit-dev)Halo.
Akhir-akhir ini, saya adalah developer aktif yang mengembangkan open source sebagai hobi setelah pulang kerja dan di akhir pekan.
Secara pribadi saya sangat menyukai sintaks Streamlit yang intuitif, dan saya juga tahu banyak teman peneliti AI/Data di sekitar saya yang sering memakainya. Namun, saya juga sering melihat orang kesulitan karena masalah performa saat proyek mereka makin besar. Sebagai alternatif, saya pernah merekomendasikan NiceGUI, tetapi banyak orang merasa cukup sulit beradaptasi dengan sintaksnya. (Sepertinya NiceGUI pada awalnya dibuat oleh sebuah perusahaan di Jerman untuk dipakai internal oleh mereka sendiri.. menurut saya ini framework yang benar-benar dibuat dengan sangat baik.)
Selain itu, saya juga merasa bahwa "estetika" sangat penting saat menampilkan data. Namun, saya menyadari bahwa dengan framework GUI berbasis Python yang sudah ada, diam-diam cukup sulit untuk membuat tampilannya cantik. Terutama, kelemahan besar NiceGUI adalah cukup sulit untuk keluar dari Material Design milik Quasar.
Karena itu, saya pun membuat sendiri Violit dengan tujuan menjadi "alat yang semudah Streamlit, tetapi lebih cepat dari sisi performa dan juga mudah untuk styling". Fondasi arsitekturnya ditopang oleh FastAPI dan shoelace(Lit). Fitur utamanya adalah sebagai berikut.
💜 Fitur utama Violit
- Intuitivitas yang 90% mirip dengan Streamlit
- Jika Anda sudah punya pengalaman memakai Streamlit, API-nya dirancang seintuitif mungkin agar bisa langsung digunakan hampir tanpa learning curve.
- O(1) Reactivity & Clean Syntax
- Tidak seperti Streamlit, hanya karena menekan satu tombol seluruh skrip tidak akan dijalankan ulang (No Re-run).
- Bahkan tanpa decorator optimisasi seperti
@st.cache, pengelolaan state yang cepat dan ringkas bisa dilakukan hanya dengan deklarasi variabel (state) sederhana. (Saya merujuk pada konsep signal dari solid.js.)
- Easy Theming System
- Saat ini mendukung sekitar 30 preset theme sehingga UI yang cantik bisa langsung diterapkan.
- Dalam waktu dekat, saya juga berencana menambahkan fitur agar pengguna bisa melakukan customization theme mereka sendiri.
- Hybrid Engine & Multi-Platform
- Dibekali engine fleksibel yang mendukung baik mode Lite berbasis HTMX maupun mode WebSocket sesuai pilihan pengguna. Awalnya mungkin baik-baik saja, tetapi saya sempat berpikir bahwa saat pengguna bertambah banyak di masa depan, bukankah WebSocket bisa membuatnya melambat?
- Tanpa mengubah kode, Anda bisa bebas berpindah antara mode layanan Web dan aplikasi Desktop (pywebview).
Saya tidak tahu sejauh mana proyek ini akan berkembang, tetapi jika dipoles dengan baik, saya sedikit berharap ini bisa memungkinkan pembangunan layanan level MVP yang biasanya dibuat dengan Django atau RoR, menjadi jauh lebih cepat hanya dengan Python. Untuk menunjukkan kemungkinan nyatanya, saya juga menyertakan contoh kode pembuatan Blog yang dibuat dengan Violit.
Saat ini masih berada pada tahap sangat awal v0.0.4 (PoC), tetapi sudah mendapat respons yang cukup positif di Reddit dan semacamnya, dan dalam 2 minggu setelah dirilis sudah melampaui 200 bintang, jadi saya memberanikan diri untuk membagikannya juga di sini. Selama ini saya hampir selalu mengerjakan pengembangan software hanya untuk pekerjaan kantor.. dan ini adalah pertama kalinya saya membuat proyek open source yang sepenuhnya terbuka seperti ini. Secara pribadi, saya benar-benar merasakan banyak kesenangan dari pengembangan software yang murni.
Kalau suatu saat Anda perlu membuat Web UI atau semacamnya dengan Python, saya akan berterima kasih jika Anda sempat melihat-lihat.. :)
- GitHub Repo. : https://github.com/violit-dev/violit
- README bahasa Korea : https://github.com/violit-dev/violit/blob/main/README_KOR.md
- Contoh Blog : https://github.com/violit-dev/violit/…
16 komentar
Saya sangat mendukungnya.
Terima kasih banyak atas dukungannya. :) Saya akan berusaha keras sambil terus memperbaruinya dengan gembira. Saya sangat menikmatinya.
Baru-baru ini saya mencoba otomatisasi pekerjaan menggunakan pywebview. Karena ini desktop, saya sempat bingung bagaimana menangani web.... kalau memakai ini di pywebview, apakah bisa digunakan dengan mudah juga di web?
Apakah yang dikembangkan dengan pywebview bisa dengan mudah dimigrasikan menjadi situs web menggunakan violit?
Sepertinya pertanyaannya kurang spesifik, jadi saya coba tanyakan ulang.
Saat ini saya membuat dan menggunakan aplikasi desktop dengan pywebview.
Saya tertarik karena Violit disebut mendukung multiplatform web/desktop (pywebview).
apakah secara arsitektur memang dirancang agar pada skala layanan nyata tetap bisa mempertahankan codebase yang sama sambil memperluas ke layanan web? (Dari sudut pandang struktur deployment pywebview → web)
Halo. Tingkat kesulitan migrasi sangat bergantung pada struktur App yang sudah Anda buat sebelumnya.
Jika aplikasi yang ada dibuat tanpa web server terpisah (seperti FastAPI), dan hanya diimplementasikan dengan js api pywebview atau metode memuat HTML lokal, maka untuk deployment web Anda harus menulis ulang lapisan komunikasinya dari awal. Karena itu, mungkin akan sulit untuk langsung mengubah kode yang Anda buat dengan mudah di pywebview menjadi web.
Bagian ini bisa dibilang tidak ada kaitannya dengan violit. Alih-alih violit mengubah App yang sudah ada dan dibuat dengan pywebview, lebih tepatnya jika dibuat dengan violit, sejak awal arsitekturnya dirancang agar mendukung web dan pywebview (desktop) secara bersamaan.
Terima kasih.
Saya telah menyiapkan halaman web demo dan dokumentasi yang bisa langsung Anda coba di bawah ini.
Silakan cek jika berkenan. :)
Sebagai informasi, kedua website tersebut dibuat dengan Violit.
Terima kasih. Saya sedang mempertimbangkan untuk mencoba ini untuk pekerjaan di perusahaan.!!
Ya, terima kasih. Silakan dicoba, dan jika ada bagian yang terasa kurang nyaman, mohon beri tahu kami.
Sepertinya perlu sedikit penguatan pada kode pengujian dan dokumentasinya.
Saya sudah menyiapkan halaman web demo dan dokumentasi yang bisa langsung Anda coba di bawah ini.
Sepertinya akan bagus jika Anda sempat melihatnya. :)
Sebagai catatan, kedua website tersebut dibuat dengan Violit.
Ya, terima kasih atas masukan yang bagus. Implementasi saat ini masih berada di level POC, dan karena masih banyak breaking changes pada level public interface dan desain, rencana kami saat ini adalah mulai menambahkan kode pengujian sejak versi 0.5.
Seperti yang Anda sampaikan, saat ini kami memprioritaskan pembukaan homepage dan pengerjaan dokumentasi, jadi sepertinya akan segera dirilis. Karena target pertama kami memang pengguna Streamlit yang sudah ada, dan sintaksnya hampir sama, kami sempat merasa kebutuhan untuk mendokumentasikannya tidak terlalu besar.
Mohon tunggu sebentar lagi~
Akan lebih bagus jika ada halaman web demo supaya bisa langsung dicoba
Saya telah menyiapkan halaman web demo dan dokumentasi yang bisa langsung Anda coba di bawah ini.
Silakan cek jika berkenan. :)
Sebagai informasi, kedua website tersebut dibuat dengan Violit.
Ya, terima kasih atas masukannya yang bagus. Karena ini masih versi awal, belum ada situs resminya, tetapi jika nanti kami membuat situsnya, sepertinya Anda akan bisa mencoba berbagai widget di web. Yang terpenting, saat ini kami sedikit demi sedikit mengubah desainnya untuk menekankan bahwa ini bisa dibuat lebih indah dibandingkan alternatif lain. :)