Components based approach, async operations, component based server side methods and more
Easy to use context feature, define your own handlers with the context setters
Use any framework as a base for your web project, net/http is not a requirement
An HTML render engine concept that brings frontend-like components experience to the server side with native html/template on steroids. Ideal fit for SEO strict projects. Fast, on-demand HTML, minimal JS payload.
This library was created to solve developer problems first. Use full power of Go, build your parallel development process around components system, deliver your webpages fast! Feel free to use landing page of this library as starter project.
A Better Way to Build Your Frontend
No custom template engines, just use built-in one!
Hassle-free asynchronous methods. It's enough to define a method, that's all!
Use page-level context without worrying about concurrency and mutex
Use server defined component methods, instead of including logic in JS payload
Trigger actions, defined in different components
The main motivation is to reduce the usage of popular SPA/PWA frameworks where it's not needed because it adds a lot of complexity and overhead. There is no reason to bring significant runtime, VirtualDOM, and Webpack into the project with minimal dynamic frontend behavior. This project proves the possibility of keeping most of the logic on the server's side.
While developing the website's frontend with traditional Go handlers and templates, I discovered some of the downsides of this approach:
Laravel is awesome on my opinion and livewire makes it even more awesome! Nice choise for people who want to have "battries included" framework. Kyoto is not a framework, it's just a small library and tries to solve another kind of problem - components and asynchronous operations organization. Features like context, Server Side Actions, Server Side State, Insights, are just extensions to Core library purpose. Also, Kyoto not delivered with batteries "included", it gives more control to developer.
Differences (Kyoto vs Livewire):
To be honest, I'm far away from Elixir and Erlang ecosystem generally. If you have some time to tell me more about Phoenix, I'll be very grateful!
Differences (Kyoto vs Phoenix):
The most delicious piece of cake. Please, check "Motivation" part. I'd like to notice, that Kyoto not tries to replace popular PWA/SPA approach, but to reduce it usage where it's not needed. If any of JS Frameworks works for you, so, why not?
Differences (Kyoto vs JS Frameworks):
Just create an issue or contact with email if you'll find something interseting!
No! You can easily integrate library for creating new pages.
No, we don't recommend to use it in production (even if we are using so).
No, you need to check documentation first to explore cons & pros of SSA. Use SSA carefully