Launch HN: Pynecone (YC W23) – Web Apps in Pure Python

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • reflex

    🕸️ Web apps in pure Python 🐍

  • Hi! We’re Nikhil and Alek, founders of Pynecone (https://pynecone.io), an open source framework to build web apps in pure Python. This can be anything from a small data science/internal app to a large multi-page web app. Once your app is built, you can deploy your app with a single command to our hosting service (coming soon!), or self-host with your preferred provider.

    Our Github is: https://github.com/pynecone-io/pynecone

    Python is one of the most popular programming languages in the world. Webdev is one of the most popular applications of programming. So why can’t we make full-stack web apps using just Python?

    We worked in the AI/infra space and saw that even skilled engineers who wanted to make web apps but didn’t know traditional frontend tools like Javascript or React found it overwhelming and time consuming to learn. On the other hand, no code and low code solutions that save time in the development process lack the flexibility and robustness of traditional web development. These tools are great for prototyping, but they can be limiting as your app becomes more complex. We wanted to build a framework that is easy to get started with, yet flexible and powerful enough so you don’t outgrow it. Our main website is fully built with Pynecone and deployed on our hosting service.

    In Pynecone, the frontend compiles down to a React/NextJS app, so from the end-user’s perspective it looks like any other website. We have 60+ built-in components ranging from forms to graphing. Components are defined as Python functions. They can be nested within each other for flexible layouts, and you can use keyword args to style them with full CSS. We also provide a way to easily wrap any existing React component. Our goal is to leverage the existing webdev ecosystem and make it accessible to Python devs.

    The app state is just a class. State updates are functions in the class. And the UI is a reflection of the state. When the user opens the app, they are given a unique token and a new instance of the state. We store user state on the backend, and use Websockets to send events and state updates. When a user performs an action, such as clicking a button, an event is sent to the server with the client token and the function to handle the event. On the server side, we retrieve the user's state, execute the function to update the state, then send the updated state back to the frontend for rendering. Since Pynecone is 100% Python, you can easily integrate all your existing Python libraries into your app. In the future, we hope to leverage WebAssembly to offload many operations to the client.

    Once your app is built, the next big challenge is deploying it. We’re building a single-line deploy, so you can type pc deploy and get a URL of your live app in minutes. Since we specialize in hosting a single type of app, we aim to provide a zero configuration deployment process. We are still working on releasing the hosting service, but you can sign up for its waitlist on our homepage. Alternatively, you can choose to host your app with your preferred cloud provider.

    Things users have built with Pynecone so far include internal apps ranging from CRM to ML tools, UIs for LLM apps, landing pages, and personal websites. If you use Python, we would love to hear your thoughts and feedback in the comments!

  • django-unicorn

    The magical reactive component framework for Django ✨

  • I think all LiveView frameworks should be part of this.

    Here are two Python ones I've tried:

    https://www.django-unicorn.com/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Leaflet.markercluster

    Marker Clustering plugin for Leaflet

  • I'd be interested to see what it looks like to integrate an old-school style JS "component" like LeafletJS, especially with a plugin like this: https://github.com/Leaflet/Leaflet.markercluster

  • rux

    A jsx-inspired way to render view components in Ruby.

  • nicegui

    Create web-based user interfaces with Python. The nice way.

  • Seems similar to https://nicegui.io/ which recently impressed me! Will check this out.

  • Django

    The Web framework for perfectionists with deadlines.

  • core

    WebSharper - Full-stack, functional, reactive web apps and microservices in F# and C# (by dotnet-websharper)

  • Websharper[1] lets you develop web apps all in F# or C#. Its reactive HTML layer is particularly useful.

    1: https://websharper.com/

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • jwt

    Java Web Toolkit (by emweb)

  • reflex-web

    A public repo of the reflex.dev website.

  • Very cool that you built your own production site in Pynecone!

    https://github.com/pynecone-io/pcweb

  • python-nostr

    A Python library for Nostr

  • In the documentation, I don't see any mention of including external libraries. For example, do you have to do something special to use this nostr library with Pynecone?

    https://github.com/jeffthibault/python-nostr

  • Opal

    Ruby ♥︎ JavaScript

  • So ruby has a JS transpiler - opal - https://opalrb.com/

    I tried using it a little bit but the reality is if you need JS to make your app more interactable it's really worth it to just learn some JS. As soon as you need something complex the extra layer of abstraction just gets in the way and becomes more of a headache, and if you don't need anything complex then you don't need JS in the first place.

  • dash

    Data Apps & Dashboards for Python. No JavaScript Required.

  • Useful list. Dash & bokeh as two more in the space

    https://github.com/plotly/dash

  • anvil-runtime

    The runtime engine for hosting Anvil web apps

  • Founder here. Self hosting is a thing - just "pip install anvil-app-server"!

    https://anvil.works/open-source

  • framework

    Mayu is a live updating server-side component-based VDOM rendering framework written in Ruby (by mayu-live)

  • I'm working on https://github.com/mayu-live/framework which is 100% server side Ruby. It's kinda like React/Preact, but server side, and Ruby. No JavaScript required (it's not even supported).

  • wave

    Realtime Web Apps and Dashboards for Python and R (by h2oai)

  • Looks similar to Nitro https://nitro.h2o.ai/ and Wave https://wave.h2o.ai/ - both open source. Nitro already works with WebAssembly via Pyodide. (Author here)

  • nitro

    Create apps 10x quicker, without Javascript/HTML/CSS. (by h2oai)

  • Looks similar to Nitro https://nitro.h2o.ai/ and Wave https://wave.h2o.ai/ - both open source. Nitro already works with WebAssembly via Pyodide. (Author here)

  • chakra-ui

    ⚡️ Simple, Modular & Accessible UI Components for your React Applications

  • I think they had a typo and meant to say Chakra UI: https://chakra-ui.com/

  • remi

    Python REMote Interface library. Platform independent. In about 100 Kbytes, perfect for your diet.

  • Making GUIs is always a fair amount of work/overhead on whatever you are working on, and I like to stay in Python when possible (I've used REMI (https://github.com/rawpython/remi) to create web apps before in Python). Thanks for creating this. I look forward to updates!

  • reactor

    Phoenix LiveView but for Django

  • tauri

    Build smaller, faster, and more secure desktop applications with a web frontend.

  • That's my understanding.

    While it is possible to run Python on the browser, the typical solutions to do so has a lot of drawbacks:

    - brython doesn't work with pip, doesn't implement full python spec, and has very limited tooling

    - pyodide is very slow to load and execute

    Plus, pynecone would have to solve the complicated problem of finding out how to delimitate what's python on the server side and on the client side, which we don't see in the API (and would complicate things for their target customer, somebody with little web dev experience).

    So the decision makes sense knowing their goals and constraints.

    You just have to understand the price you pay for it.

    I can see myself using the product something I need to hack quickly that is a one page interactive program. Or for some of my clients with quants, geographers and the likes that often needs to make a small utility available but have only knowledge of basic python.

    It also could be a good companion to tauri (https://tauri.app/) to create desktop app. To me that would be even more valuable to have finally an easy way to do a decent UI in python. Because QT, WX, GTK and Tkinter are not fun at all, and the web is an amazing platform.

  • Wt

    Wt, C++ Web Toolkit

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts