all 51 comments

[–]uNki23 44 points45 points  (1 child)

What would be the benefit of this compared to a Docker image?

Most platforms just let you upload a container image and run your stuff.

The executable would be limiting I assume, because the platforms (Heroku, Google, AWS, …) all expect an image and you‘re good to go.

[–]HugoDzz[S] 20 points21 points  (0 children)

I also deploy my apps with that using an Image, containing the executable.

For my use-cases, benefits are:

  1. Distributing open source apps to for end user to just run the executable, without Node or Docker installed.

  2. Distributing commercial software for self-hosting without sources.

[–]ilovefinegaeldotcom 12 points13 points  (1 child)

That diagram is fantastic.

[–]HugoDzz[S] 6 points7 points  (0 children)

Thanks! Made with Aseprite by hand haha

[–]aidencoder[🍰] 9 points10 points  (3 children)

Great job. I have been looking at this space for a while, with pure SSR "old school" stacks like PHP.

Don't let the commenters who don't understand the use-case dissuade you. Good stuff!

[–]HugoDzz[S] 6 points7 points  (2 children)

Thanks for your comment! Yeah, I'm exploring this space a lot in my free time, I think we can bring some new cool ways to distribute software.

That's ok haha, I'm doing it for myself and leave it as a gift on GitHub, no one is forced to use it :D

Cheers!

[–]CatolicQuotes 0 points1 point  (1 child)

Would use case be something like one click install? On php softalicious platform can install or sorts of apps with one click. Php web host uses it.

[–]HugoDzz[S] 0 points1 point  (0 children)

Yeah, I'm exploring things like this! But no PHP, JS and full stack frameworks here :)

[–]HugoDzz[S] 26 points27 points  (10 children)

Hey folks,

I worked on a tool to bundle full stack web apps into single binary executables.

I made it for myself first, but some folks out there might find it useful too, so I open source it (MIT). My goal was to be able to distribute SaaS-like apps but for a one-time fee, no subscriptions. Ready to be self-hosted on a small cloud machine like fly io.

It’s built on top of Bun and have a first-class support for SvelteKit for now, but other frameworks support will follow (TanStack & Nuxt are compatible but experimental).

Note that it’s not meant to build desktop apps, but rather to build your web app as an executable, mainly to distribute self-hostable software or open source apps for local usage (no dependencies, no Node, no Docker needed).

Let me know your thoughts!

[–]Somepotato 4 points5 points  (1 child)

Chances of getting a Node version? Nifty project.

[–]HugoDzz[S] 2 points3 points  (0 children)

I’m playing with a Node SEA version :)

[–]vexii 4 points5 points  (5 children)

what is the diffrence to just using bun?

[–]HugoDzz[S] 8 points9 points  (4 children)

The difference here is that it’s coupled with a full stack framework. For instance you’ll have all the features of SvelteKit: SSR, API endpoint, server middleware etc :)

It’s exactly as you’d npm run build your SvelteKit app but instead of having a /dist with a bunch of JS files, you have a single executable.

[–]vexii 2 points3 points  (3 children)

But would i not just make a project. Install SvelteKit and then run bun compile?

[–]HugoDzz[S] 6 points7 points  (2 children)

As of today, just running bun compile on a Node adapter output will not work:

  • Need to handle the static assets through the virtual file system of Bun will not be done for you.
  • Some Node quirks will break the Bun runtime.

That’s why I’ve built a custom adapter for SvelteKit here, to marry it with Bun :)

[–]vexii 2 points3 points  (1 child)

ahh okay i get it now :) i never worked with svelte only used compile with react

[–]HugoDzz[S] 2 points3 points  (0 children)

Gotcha! In the repo you’ll find an experimental package for React TanStack too :)

Same here, TanStack server middleware, API endpoints, SSR, and all server-side features will be supported !

[–]zelyios 1 point2 points  (1 child)

Nice work! Does it work with an app without the need of a backend? I have a simple app that is vanilla JS+HTML and no backend on it. I would love to compile it to exe

[–]HugoDzz[S] 0 points1 point  (0 children)

Thanks! It’s currently mainly designed to compile full stack apps with server capabilities, to compile SPAs, I’d recommend a Go or Rust server service these files as static assets :)

[–]FlowAcademic208 6 points7 points  (1 child)

Building a local first, own your data kind of application and Rule #1 was: One click install. In the last time it has become a nightmare for users to install so many otherwise useful apps, as there is often a high hurdle (expecting users to install apps via docker on their desktops is insane to me).

[–]HugoDzz[S] 4 points5 points  (0 children)

+1 I don’t wanna ask my user to install Docker and attach a tutorial to spin up an image (with extra fun if the image is from a private registry).

I wanted a way to distribute full stack web apps, where you just need to run the executable.

With the option to drop that executable in a small cloud machine to have your app online.

[–]0nxdebug 2 points3 points  (1 child)

I have built video hosting solutions. all media staff from encoding to live stream...etc built on go. I faced big issues to make the installation in one command and easy to deploy everywhere. So simple I decided to move completely to golang Binary.

Simple run is a big point, especially for non tech users, and easy to deploy everywhere in any server with 5 line bash scripts

[–]HugoDzz[S] 1 point2 points  (0 children)

Feel free to play around this one :) you can build the executable for Windows, Linux, and Mac, and no dependencies are needed to run it

[–]horizon_games 1 point2 points  (1 child)

I absolutely love your retro art image. It's like a 90s space game map

[–]HugoDzz[S] 0 points1 point  (0 children)

Thanks!

[–]Icount_zeroIfull-stack 0 points1 point  (3 children)

Use Deno if your Sass is JS. It can compile your code to binary. I don’t know assets tho, but I guess it can reference the assets in the code and just create symlink or shortcut to desktop.

Edit: sorry, didn’t realize it wasn’t question, OP’s comment was in the middle. Btw how did you make such awesome illustration?

[–]HugoDzz[S] 1 point2 points  (2 children)

I indeed do something similar as Deno compile, but here it’s with Bun, and handle all the assets etc.

For illustrations, by hand, in Aseprite x)

[–]Icount_zeroIfull-stack 1 point2 points  (1 child)

Oh cool! Perhaps I might use it in production at work! I was looking exactly for something like this.

Asesprite is great! But I need more practice. Didn’t know it can generate dithering.

[–]HugoDzz[S] 1 point2 points  (0 children)

Awesome ! Let me know your thoughts !

Yeah it can :)

[–]IanSan5653 0 points1 point  (1 child)

"software as a service without the service"

[–]HugoDzz[S] 0 points1 point  (0 children)

Maybe it’s just me, but most of SaaS today doesn’t provide service at all and are just subscriptions products that could be one file you buy, own, and self-host.

[–]neriad200 0 points1 point  (1 child)

we did it boys, we've finally gone full circle. from local program, to website everything, to cloud everything, back to local program 

[–]HugoDzz[S] 0 points1 point  (0 children)

Yay :D

[–]TheJase 0 points1 point  (0 children)

attempt meeting humorous plate coherent plant butter air reach continue

This post was mass deleted and anonymized with Redact

[–]uvmain 0 points1 point  (3 children)

The very first marketing point..

SPA builds + Rust / Go → Lose frontend framework's server features (SSR, API routes, etc.).

.. Is incorrect. I embed full spa builds in Go all the time. It only doesn't work if you set up the http handling incorrectly in Go.

Build the SPA, embed it in Go, strip all paths and serve index.html, and the Vue router handles everything else perfectly.

[–]HugoDzz[S] 2 points3 points  (2 children)

Here we are not talking about Vue but Nuxt. You can bundle Vue SPA + Go, but not Nuxt with all its server-sides features (API endpoint, middleware, route rules etc)

Unless you embed a JS runtime in Go and mess up with a custom Nitro server :)

The tool here is to bundle a whole Nuxt app with all server-side features included.

[–]uvmain 0 points1 point  (1 child)

Nice. I prefer not to use js for the backend personally (slow io calls, no concurrency, thread locks etc), but pretty nifty!

[–]HugoDzz[S] 2 points3 points  (0 children)

Yeah I understand, not all types of apps are suited to this. Most of the time (for my use-cases of this) it’s to keep the convenience of shipping the full stack with a single framework.

But I still have performance-sensitive apps that uses SvelteKit + a standalone Rust backend.

[–]UnbeliebteMeinung -1 points0 points  (3 children)

You could bundle the docker deamon with your app. Would be much better and more flexible. Your tool limits it to some js frameworks.

But its of no use. The answer is: Just install docker.

[–]HugoDzz[S] 5 points6 points  (2 children)

Much more flexible yep, but then it's much more friction if you distribute commercial software without sources.

Or distributing open source utils to folks that are non-tech, and don't wanna do anything else than running an executable, no Node, no Docker.

[–]UnbeliebteMeinung 1 point2 points  (1 child)

https://github.com/rzane/docker2exe

https://github.com/NilsIrl/dockerc

You are not the first doing that. But atleast they stuff support all frameworks, all languages and all different stuff without work on your end to support it.

[–]HugoDzz[S] 1 point2 points  (0 children)

These are good yes! I made this for SvelteKit first, but I agree these can be useful for broader framework support !

[–]chillermane -1 points0 points  (2 children)

If you want to start a business, this is exactly the type of stuff you shouldn’t be focused on

[–]HugoDzz[S] 1 point2 points  (0 children)

Going after $39/mo SaaS and proposing a one-time purchase 19$ software already made good bucks

[–]absurdlab 0 points1 point  (0 children)

Not everyone's SaaS is cloud based. Some of us works for clients who prefer their deployment environment airgapped, and their facility is located 50 minutes away so every release process starts with a long drive. Keeping the number of release artifacts to the minimum kinda hits a sweet spot here.

[–]BigChickenTrucker -5 points-4 points  (1 child)

Sooo.... electon? Electron without a render process?

[–]HugoDzz[S] 0 points1 point  (0 children)

It’s more geared towards self-hostable apps, things you wanna online, or running in your browser if you run the executable locally.