1P by dopeflamingo 9시간전 | ★ favorite | 댓글 1개

안녕하세요.
요즘 퇴근 후, 주말에 취미로 오픈소스를 개발하고 있는 현업 개발자입니다.

저는 개인적으로 Streamlit의 직관적인 문법을 참 좋아하고, 주변 주변 AI/Data 연구원 친구들도 많이 사용하고 있다는 것을 알고 있습니다. 그런데 사람들이 프로젝트가 커질수록 성능 문제로 고생하는 걸 자주 봤습니다. 대안으로 NiceGUI를 제가 추천해줬는데, 문법 적응을 사람들이 좀 어려워 하였습니다. (NiceGUI가 처음에는 독일 모 회사에서 자신들의 회사에서 쓰기 위해 만든 거 같은데..정말 잘 만들어진 Framework이라고 생각합니다.)

또한 저는 Data를 보여줄 때 '심미성'도 참 중요하다고 생각합니다. 그러나 기존 Python기반 GUI Framework으로는 예쁘게 꾸미기가 은근히 어렵다는 것을 알게 되었습니다. 특히 NiceGUI의 큰 단점이 Quasar의 Material Design을 벗어나기 쉽지 않다는 것 입니다.

그래서 "Streamlit처럼 쉬운데 성능은 빠르고 스타일링도 간편한 툴"을 목표로 Violit을 직접 만들게 되었습니다. 아키텍쳐의 근간에는 FastAPI, shoelace(Lit)가 받치고 있습니다. 주요 특징은 아래와 같습니다.

💜 Violit의 주요 특징

  1. Streamlit과 90% 유사한 직관성
  • 기존 Streamlit 사용 경험이 있다면 거의 러닝 커브 없이 바로 사용할 수 있도록 API를 직관적으로 설계했습니다.
  1. O(1) Reactivity & Clean Syntax
  • Streamlit처럼 버튼 하나 누른다고 스크립트 전체가 다시 돌지 않습니다(No Re-run).
  • @st.cache 같은 최적화 데코레이터 없이도, 단순한 변수(state) 선언만으로 빠르고 간결하게 상태 관리가 가능합니다. (solid.js의 signal개념을 참고하였습니다.)
  1. Easy Theming System
  • 현재 약 30가지의 프리셋 테마를 지원하여 즉시 예쁜 UI를 적용할 수 있습니다.
  • 조만간 사용자가 직접 테마를 Customization할 수 있는 기능도 업데이트할 예정입니다.
  1. Hybrid Engine & Multi-Platform
  • 사용자 선택에 따라 HTMX를 사용한 Lite 모드와 WebSocket 모드를 모두 지원하는 유연한 엔진을 탑재했습니다. 처음엔 괜찮지만..향후 사용자가 몰리게 되었을 때 WebSocket으로 인해 느려질 수 있지 않을까 싶었습니다.
  • 코드 수정 없이 Web 서비스와 Desktop 앱(pywebview) 모드를 자유롭게 오갈 수 있습니다.

이 프로젝트가 어디까지 확장될지는 모르겠지만, 잘 다듬는다면 Django나 RoR로 만들던 MVP 레벨의 서비스를 파이썬만으로 훨씬 빠르게 구축할 수 있을 거라 살짝 기대하고 있습니다. 실제 가능성을 보여드리기 위해 Violit으로 만든 Blog 구축 예제 코드도 포함해 두었습니다.

아직 완전 초기 v0.0.4 (PoC) 단계지만, Reddit 등에서 꽤 긍정적인 반응을 얻었고, 공개 2주 만에 스타 200개를 넘겨서 용기 내어 여기에도 공유해봅니다. 거의 항상 회사 업무로만 SW개발을 해왔고..이렇게 완전 공개된 오픈소스 프로젝트는 처음인데요. 저 개인적으로는 순수한 SW개발의 재미를 정말 많이 느끼고 있습니다.

Python으로 Web UI 등을 만드실 일 있을 때 한번 구경해주시면 감사하겠습니다.. :)

바로 써볼수 있도록 데모 웹페이지가 있으면 좋겠어요