Next Steps

Continue learning Rivaas

You’ve completed the Getting Started guide. You now know how to install Rivaas, build applications, configure them, and add middleware.

What You’ve Learned

βœ… Installation β€” Set up Rivaas and verified it works
βœ… First Application β€” Built a REST API with routes and JSON responses
βœ… Configuration β€” Configured service metadata, health checks, and observability
βœ… Middleware β€” Added functionality like CORS and authentication

Choose Your Path

πŸš€ Building Production APIs

Learn advanced routing, error handling, and API patterns:

Recommended Example: Blog API β€” Full-featured blog with CRUD operations, validation, and testing.

πŸ“Š Observability & Monitoring

Understand your application in production:

Key Pattern: The observability trinity (logs, metrics, traces) works together. They provide complete visibility into your application.

πŸ”’ Security & Best Practices

Secure your APIs:

Security Checklist:

  • βœ… Use HTTPS in production
  • βœ… Validate all inputs
  • βœ… Implement authentication
  • βœ… Add rate limiting
  • βœ… Enable security headers

☁️ Deployment & Operations

Deploy your application to production:

Production Checklist:

  • βœ… Set up health endpoints
  • βœ… Configure timeouts
  • βœ… Enable observability
  • βœ… Use environment variables
  • βœ… Implement graceful shutdown

🎯 Advanced Topics

Deep dive into framework internals:

Example Applications

Learn from complete, production-ready examples:

Quick Start Example

Path: /app/examples/01-quick-start
Complexity: Beginner
Shows: Minimal setup, basic routing, health checks

cd app/examples/01-quick-start
go run main.go

Blog API Example

Path: /app/examples/02-blog
Complexity: Intermediate
Shows: CRUD operations, validation, OpenAPI, testing, configuration

cd app/examples/02-blog
go run main.go
# Visit http://localhost:8080/docs for Swagger UI

Features:

  • Complete REST API (posts, authors, comments)
  • Method-based validation
  • OpenAPI documentation
  • Comprehensive tests
  • Configuration management
  • Observability setup

More Examples

Framework Packages

Rivaas is modular β€” use any package independently:

Core Packages

PackageDescriptionGo Reference
appBatteries-included frameworkpkg.go.dev
routerHigh-performance HTTP routerpkg.go.dev

Data Handling

PackageDescriptionGo Reference
bindingRequest binding (JSON, XML, YAML, etc.)pkg.go.dev
validationStruct validation with JSON Schemapkg.go.dev

Observability

PackageDescriptionGo Reference
loggingStructured logging with slogpkg.go.dev
metricsOpenTelemetry metricspkg.go.dev
tracingDistributed tracingpkg.go.dev

API & Errors

PackageDescriptionGo Reference
openapiOpenAPI 3.0/3.1 generationpkg.go.dev
errorsError formatting (RFC 9457, JSON:API)pkg.go.dev

Learn More: Package Documentation

Reference Documentation

Quick access to API references:

Community & Support

Get Help

  • πŸ’¬ GitHub Discussions β€” Ask questions, share ideas
  • πŸ› GitHub Issues β€” Report bugs, request features
  • πŸ“§ Email β€” security@rivaas.dev (security issues only)

Contribute

Rivaas is open source and welcomes contributions:

Stay Updated

Quick Reference Card

Create Application

a, err := app.New(
    app.WithServiceName("my-api"),
    app.WithServiceVersion("v1.0.0"),
)

Register Routes

a.GET("/path", handler)
a.POST("/path", handler)
a.PUT("/path/:id", handler)
a.DELETE("/path/:id", handler)

Add Middleware

a.Use(middleware1, middleware2)
api := a.Group("/api", authMiddleware)

Start Server

ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer cancel()
a.Start(ctx)

Handle Requests

func handler(c *app.Context) {
    // Get path parameter
    id := c.Param("id")
    
    // Get query parameter
    filter := c.Query("filter")
    
    // Bind request body (auto-detects JSON, form, etc.)
    var req MyRequest
    if err := c.Bind(&req); err != nil {
        c.JSON(400, map[string]string{"error": "Invalid request"})
        return
    }
    
    // Send JSON response
    c.JSON(200, map[string]string{"status": "ok"})
}

What’s Next?

Pick the topic that interests you most. The documentation works for both linear reading and jumping to specific topics.

Happy building with Rivaas!