Start with a lean core, then add capabilities on demand
The core only handles loading, dependency injection and the unified lifecycle. Routing, cache, queue, database, auth and storage all enter through providers
Use it only when you need it
Module boundaries follow imports. Capabilities you do not install do not bring their third-party dependencies into your go.sum. Small projects stay lean, large projects can grow steadily
Microkernel framework
Keep only the application skeleton and command entry
On-demand imports
Install and connect the provider for each capability you need
Clear layers, one-way dependencies
Drivers, capabilities and transports only depend downward on the core. The kernel never reaches back into upper modules, so the architecture stays clear as the project grows
Every capability follows the same lifecycle
Providers enter Init, Register, Resolve, Boot and Shutdown by priority, giving application startup and shutdown a clear order
Built for web apps, ready for background services
HTTP is the common entry point, but the kernel is not tied to HTTP. You can add routing services, or run commands, queue workers and other hosts without routing code
Start from the smallest application
Begin with the minimal core, add routing to serve an HTTP API, then install cache, queue or database capabilities when you need them