pushpin
canonic
pushpin | canonic | |
---|---|---|
11 | 14 | |
3,576 | 115 | |
0.3% | 1.7% | |
9.5 | 3.8 | |
7 days ago | 5 months ago | |
Rust | C++ | |
Apache License 2.0 | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pushpin
- Pushpin: Proxy server that pins connections open to build realtime API endpoints
-
Building a privacy-friendly, self-hosted application architecture with SvelteKit
For realtime, I used Pushpin with Server Sent Events. (It supports WebSocket as well).
-
Ask HN: How do you handle WebSocket connections reconnect problem?
Instead of letting clients directly interface with your services over websockets, consider using Pushpin [1], which allows you to completely isolate realtime communication from your services.
As a bonus, it also provides you the ability to cycle (redeploy/restart) your services without your clients having to reconnect (that's where the name comes from). And as you can imagine - because communication with your services is entirely stateless it scales like crazy.
[1] https://pushpin.org/
- Help !!! websocket and sveltekit
-
Ask HN: Hunting for a Framework
Vapor[0] based on Swift. Advantage of this is that you don't have to evaluate multiple frameworks for Swift and suffer paralysis by analysis. All the Swift community is behind one framework.
The next is Actix[1] based on Rust. There are many frameworks in Rust and most of them have not reached 1.0 And which framework will survive becomes a question.
Other not so well-known is Wt[2] based on C++. This actually is created for programmers who are not web developers. The development experience is similar to desktop app development like Qt.
If that is not acceptable then Django[3], based on Python, is the one that will be good for you.
For the front-end I would recommend Flutter[4]. As much as I dislike getting tied to a single company for whom the framework is not their bread-and-butter, I don't see any other viable options to Flutter that will cover all web, mobile and desktop out of the box.
For databases, I would recommend BedrockDB[5], if you are not averse to SQLite. Or FoundationDB[6], if you want NoSQL. But if you are not concerned about horizontal scalability or okay with self-managing database availability, then PostgreSQL[7] is a very good option.
For push notifications, PushPin[8] is a good option.
[0] https://vapor.codes
[1] https://actix.rs
[2] https://webtoolkit.eu
[3] https://www.djangoproject.com
[4] https://flutter.dev
[5] https://bedrockdb.com
[6] https://www.foundationdb.org
[7] https://postgresql.org
[8] https://pushpin.org
-
Thoughts on this AWS deployment architecture? (Main web app + lambda microservices)
There is also the option of running a proxy which handles the stateful nature of websockets (i.e. https://pushpin.org/), and then handle the rest in a stateless way with lambdas or similar.
-
Ask HN: Is realtime functionality of Firebase and Supabase DBs any useful?
This may not be what you are looking for, but why not use a combination of Postgres listen/notify and PushPin[0] to support push notifications?
[0] https://pushpin.org
-
Mark Nottingham: Server-Sent Events, WebSockets, and HTTP
Could use pushpin[1] and have several fallbacks, like SSE -> Websocket -> polling.
[1]https://pushpin.org/
- Show HN: Pushpin – a proxy server for adding push to your API
- Pushpin: Reverse proxy for realtime web services
canonic
- Notes on WebAssembly
-
Why aren't devs making desktop apps any more
I just founded a company where we're building a cross-platform native desktop app. Perhaps given we're on HN we can scope this to ask why aren't any _startups_ building native desktop apps?
It's something I wonder about as well. We're building real-time performance critical software, so we don't have much of an alternative. Given these constraints, we also ruled out Electron, Avalonia, React Native early on.
We're using Qt Quick which doesn't get nearly the love it should. I was a web developer for 5 years in a past life, and I'm pretty blown away by how pleasant and well-designed Qt Quick's QML language is. One of our team members created Canonic, https://www.canonic.com to explore how the web might look if QML was used as the document markup for the web.
The popular opinion around Qt Quick is that it is best suited for mobile or embedded projects with a dynamic UI, animations, etc. But over the last few years, it has really become a great desktop solution – to the point where Qt put Widgets into maintenance mode and is focusing efforts on Qt Quick across desktop, mobile and embedded targets.
With Qt 6, the GUI is drawn using native graphics acceleration: Metal on macOS, DirectX11 on Windows, Vulkan on Linux. This makes it really easy to bring in a texture you're drawing in some other piece of code outside of Qt. As a result, the QtMultimedia framework in Qt6 is zero-copy on most platforms with the FFmpeg backend. Frames get decoded if a GPU HW decoder is available, then this texture can be read directly by QtQuick and then rendered by the display server without ever being copied. I don't think there's a single other cross platform framework out there that achieves the same level of usability, performance and easy access to platform native APIs.
Here are just a few non-trivial desktop apps that come to mind using Qt Quick:
- Denon Engine DJ - https://enginedj.com/
- Mark Nottingham: Server-Sent Events, WebSockets, and HTTP
-
I heard you like browsers. So I built a browser that runs in your browser via WASM (for QML instead of HTML)
Here's the website if you want to test it out: https://www.canonic.com
-
A Response to Rich Harris
No, the end goal is to have an entirely separate browser which browses website built with all instead of html / js / css ; since Qt compiles to WASM it's a simple way to try it but the actual thing exists as a standalone desktop app: https://github.com/canonic/canonic
- Canonic Browser: open-source QML Browser
- Canonic Browser – Open-Source QML Web Browser
-
Canonic Browser | Open Source QML Web Browser
GitHub repo: https://github.com/canonic/canonic
What are some alternatives?
Mercure - 🪽 An open, easy, fast, reliable and battery-efficient solution for real-time communications
braid-spec - Working area for Braid extensions to HTTP
IP-ESP32-CAM - "IP Camera" based on ESP32-CAM
zotonic_mod_teleview - Mod teleview provides live updating server rendered views.
rsocket-java - Java implementation of RSocket
zotonic_mod_doom_fire
eventhub - A high performance pub/sub over WebSocket server written in modern C++.
KittehPlayer - A video player based on Qt, QML and libmpv with themes for many online video players.
styx - Simple, high-performance event streaming broker
unpoly - Progressive enhancement for HTML
dotherside - C language library for creating bindings for the Qt QML language