9 ms·
Show HN: A Full-Stack Web Framework for Go
Hey HN! I want to share my side project with you. It's called Bud and it's a full-stack web framework for Go.
I created a short video to show you how to create a minimal Hacker News clone with Bud: https://www.youtube.com/watch?v=LoypcRqn-xA https://www.youtube.com/watch?v=LoypcRqn-xA.
The framework is free, open source and MIT Licensed. You can find it on Github: https://github.com/livebud/bud https://github.com/livebud/bud.
I started working on Bud 2 years ago after watching the introductory Laracast videos about the Laravel web framework. I was just blown away by how productive you can be in Laravel. However, like many of you, I've been so spoiled by Go. I didn't want to go back to writing PHP, so I decided to try creating Laravel for the Go ecosystem.
At this point, I just had the following goal:
• Be as productive as Laravel in a typed language like Go.
I got the first version working in 6 months and tried building a blog from it... It fell flat. You needed to scaffold all these files just to get started. If you're coming from Rails or Laravel you may shrug, this is pretty normal. Unfortunately, I've also been spoiled by the renaissance in frontend frameworks like Next.js. What I love about Next is that it starts out barebones and every file you add incrementally enhances your web application. This keeps the initial complexity under control.
With these newly discovered constraints, I started working on the next iteration. Bud should:
• Generate files only as you need them. Keep these generated files away from your application code and give developers the choice to keep them out of source control.
• Feel like using a modern JS framework. This means it should work with modern frontend frameworks like Svelte and React, support live reload and have server-side rendering for better performance and SEO.
With these new goals, the Bud you see today started to take shape. But along the way, I discovered a few more project goals:
• The framework should be extensible from Day 1. Bud is too ambitious for one person. We're going to need an ambitious community behind this framework.
• Bud should be able to provide high-level APIs for developers while compiling down to performant low-level Go code for production.
• Bud should compile to a single binary. With platforms like Fly.io and Heroku, these days it's easy to not care about this, but I still cherish the idea that I can build a single binary that contains my entire web app and secure copy it up to a tiny server that doesn't even have Go installed.
It's still super early days. You can find the the Roadmap on Github: https://github.com/livebud/bud/discussions/9 https://github.com/livebud/bud/discussions/9. I encourage you to contribute your thoughts.
And here's the current documentation for what's already in Bud: https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f9917c5033e5205c69 https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f991.... Comments are enabled for anyone to chime in.
I have big plans for the framework. I hope you'll join me on this journey to build ambitious websites faster with Go!
- dmix 4y ago> Build a Minimal Hacker News Clone in 15 Minutes with Bud I started my programming career after following the Rails how to make a blog in 15min youtube video. Always a good choice.
- matthewmueller 4y agoSamesies! I'll be recording a weblog demo in one of the upcoming releases. Need migrations and database access first! Fun fact: It took DHH a year after he first introduced Rails to get that famous weblog demo up. This stuff takes time :)
- deleted 4y ago[deleted]
- jdauriemma 4y agoIf you ever ship an Airflow integration, consider this an official request to call it Air Bud.
- deleted 4y ago[deleted]
- matthewmueller 4y agoAhahaha. I watched this movie 100 times as a kid. I cycled between Air Bud and Flubber.
- jacktheturtle 4y agodude this looks awesome! can't wait to dive into this and learn a bit more. i come from a ruby, js and python background using frameworks like: react, django, rails, etc. always wanted to excuse to use GO and this might be it!
- matthewmueller 4y agoThanks for the kind words @jacktheturtle! I like your handle. As the author of https://standupjack.com https://standupjack.com, all Jacks have a special place in my heart <3 Let me know when you give Bud a go! Feel free to email me at hi@livebud.com or hit me up on Twitter @mattmueller.