This is the fastest onboarding flow for Plumego. Follow it linearly: 5 minutes → 30 minutes → 1 day.
Are you coming from another framework?
Read the migration guide for your current stack first, then come back here:
| From | Guide |
|---|---|
| Gin | docs/guides/migration/from-gin.md |
| Echo | docs/guides/migration/from-echo.md |
| Chi | docs/guides/migration/from-chi.md |
| stdlib http.ServeMux | docs/guides/migration/from-stdmux.md |
| Other middleware stack | docs/guides/migration/middleware-compat.md |
Otherwise, continue below.
This path takes you from "hello world" to understanding the control plane. Time estimates are realistic if you're familiar with Go and HTTP.
Goal: See Plumego work with one route.
Steps:
- Read the quick intro:
docs/start/getting-started.md(2 min read) - Run the hello-world example:
cd examples/hello go run main.go - Test it:
curl http://localhost:8080/ping
What you're learning:
plumego.New()creates an appapp.Get()registers a routecontract.WriteResponse()sends JSON responses- App is a standard
http.Handler
Key symbols:
core.New()app.Get(),app.Post(),app.Put(),app.Delete()contract.WriteResponse()contract.WriteError()
Done when: You see {"message":"pong"} from curl.
Goal: Understand routing, request binding, error handling, and app structure.
Steps:
-
Copy the standard API example:
cp -r examples/standard-api my-service cd my-service go run main.go -
Test it:
# Create curl -X POST http://localhost:8080/items \ -H "Content-Type: application/json" \ -d '{"name":"Item 1"}' # List curl http://localhost:8080/items # Get one curl http://localhost:8080/items/1 # Update curl -X PUT http://localhost:8080/items/1 \ -H "Content-Type: application/json" \ -d '{"name":"Updated"}' # Delete curl -X DELETE http://localhost:8080/items/1
-
Read the code in this order:
examples/standard-api/TUTORIAL.md— explains each filemain.go— entry point and wiringinternal/config/config.go— configurationinternal/app/routes.go— route registrationinternal/handler/items.go— handler patterns
-
Try modifying it:
- Add a new route
- Change the response format
- Add a middleware
What you're learning:
- App structure (
cmd/,internal/, handlers, config) - Route registration and grouping
- Request binding with
contract.BindJSON() - Error handling with
contract.WriteError() - Middleware composition
- Graceful shutdown
Key symbols:
app.Group(prefix string) *RouteGroupgroup.Use(middleware func(http.Handler) http.Handler)contract.BindJSON(r, &data)contract.Param(r, "id")app.Prepare(),app.Server(),app.Shutdown()
Done when: You can modify the example and add your own endpoints.
Goal: Know the complete architecture, boundaries, and how the control plane works.
Reading (in order):
Read the READMEs for modules you'll use:
Essential:
docs/modules/core/README.md— app constructiondocs/modules/router/README.md— routing and path paramsdocs/modules/contract/README.md— responses and bindingdocs/modules/middleware/README.md— middleware composition
Pick 2-3 of these depending on your needs:
docs/modules/security/README.md— auth and password hashingdocs/modules/store/README.md— storage contractsdocs/modules/log/README.md— structured loggingdocs/modules/metrics/README.md— metrics collectiondocs/modules/health/README.md— health checks
docs/start/extension-guide.md— decision tree for 15 extensions- Pick ONE extension that matches your next feature
- Read that extension's README in
docs/modules/x/*/
Common first extensions:
x/rest— REST CRUD conventionsx/observability— Prometheus metricsx/websocket— Real-time featuresx/tenant— Multi-tenancy
docs/reference/canonical-style-guide.md— how to structure servicesdocs/modules/INDEX.md— module boundaries and ownershipdocs/reference/reference-apps.md— overview of reference implementations
If you're maintaining a service or using code agents:
AGENTS.md— overview of agent workflowdocs/operations/agent-context-budget.md— what agents need to knowspecs/task-routing.yaml— module ownership mapspecs/dependency-rules.yaml— API boundaries
What you're learning:
- Complete module API surface
- How to choose extensions
- Canonical app structure
- Boundaries between modules
- Agent-friendly workflow (if needed)
Done when: You can:
- ✅ Explain why Plumego exists and who should use it
- ✅ Name the 9 stable roots and what each does
- ✅ Understand module boundaries (what each owns)
- ✅ Choose an extension for a new feature
- ✅ Understand the difference between stable/beta/experimental
- ✅ Build a production service with proper structure
Ready to build a real service?
- Use
examples/standard-apias your template - Follow
docs/start/production-checklist.mdto add production capabilities - Choose 1-2 extensions from
docs/start/extension-guide.md - Copy the matching reference app (e.g.,
reference/with-rest/) - Check
docs/reference/canonical-style-guide.mdfor patterns
Want to understand the codebase deeply?
- Read
docs/concepts/extension-maturity.mdfor extension status - Read
docs/reference/api-surface.mdfor complete symbol inventory - Read
STABILITY.mdandCOMPATIBILITY.mdfor version stability
Want to contribute or maintain with code agents?
- Read
docs/operations/agent-external-reference.mdfor agent workflow - Read
AGENTS.mdfor the full agent-first model - Familiarize yourself with
specs/task-routing.yaml
Want to build an extension?
- Read
docs/guides/extending-plumego.md - Check
docs/start/extension-guide.mdfor patterns - Copy a similar extension and adapt it
When writing docs or examples, present Plumego in this order:
- Standard-library compatibility (stdlib shapes, no magic)
- Small stable kernel (9 packages, v1 guarantee)
- Explicit reference application path (
reference/standard-service) - Optional capabilities (extensions are add-ons)
- Agent-friendly control plane (specs, tasks, module.yaml)
Q: How long until I can build a real service?
A: By the end of Day 1, you'll understand enough to start. Most developers are productive after 2-4 hours of focused learning.
Q: Do I need to learn all 9 stable roots?
A: No. Start with core, router, contract, and middleware. Add others as you need them.
Q: What if I get stuck?
A: Check docs/start/troubleshooting.md for common issues, or open an issue on GitHub.
Q: Should I read all the reference apps?
A: No. Read reference/standard-service/ first (canonical), then pick 1-2 others that match your use case.
Q: Is Plumego production-ready?
A: Yes. v1.0+ is GA and recommended for production. See STABILITY.md for guarantees.
Time to get started? Pick a timeline above and begin. Good luck!