Go-Mojito. Program your next web project with (a) Mojito.
Welcome to the Go-Mojito documentation. Go-Mojito is a fully customizable and modular web framework that allows you to write projects that do not hard-depend on any router, template engine, cache or logger.
- Fully Customizable
- Dependency Injection
- Dynamic Handlers
- Sane Defaults
- Time Saving
- Unopinionated Core
A unique feature of Go-Mojito is its dynamic handlers. Go-Mojito does not expect your handlers in a certain format but instead they are analyzed on startup and for each argument a dependency, request or response object is filled in. Dependencies are pre-linked to allow for blazing fast handlers without compromising convenience.
Go-Mojito is compeltely modular, you can swap out any part of the stack at any time, even during runtime if you need to. To make Go-Mojito unopinionated, we ship the core with a bunch of standard lib implementations so the core is usable without too many external dependencies.
By default Go-Mojito uses Go Templates for it's rendering engine, but we recommend switching it out for our Handlebars renderer. We provide a set of opinionated overrides we recommend for the average Go-Mojito project.
- Handlebars Renderer
- Zerolog Logger
- FastHTTP Router
- Built-in Cache
When you choose a traditional web framework, you are often locked to that framework quite tightly. They have strict handlers and most of your code is not ported easily to a new one. With Go-Mojito, you do not directly interact with the dependency used underneath. For example while you can build your project with the bun router implementation, you can always switch to FastHTTP, or built-in.
Router outdated? Just switch!
If your chosen router is no longer maintained, no problem. Just choose a different one, it will be ~1 line of code to change with a Go-Mojito app. You can also implement an adapter for any custom router you'd like.