Skip to main content

@ovineko/fastify-base

Pre-configured Fastify server with Sentry, Prometheus, OpenTelemetry, healthcheck, and other common integrations.

warning

This package is currently in development (v0.0.0) and not yet published to npm. The API is subject to change.

Planned Features

  • Sentry integration — Automatic error tracking and performance monitoring
  • Prometheus metrics — Built-in metrics endpoint for monitoring and alerting
  • OpenTelemetry support — Distributed tracing for microservices
  • Health checks — Ready-to-use liveness and readiness endpoints
  • Sensible defaults — Production-ready configuration out of the box
  • Type-safe — Full TypeScript support with proper typing

Planned Integrations

Sentry

Automatic error tracking and performance monitoring for production environments:

  • Exception capture with stack traces
  • Request context and breadcrumbs
  • Performance transaction tracking
  • User context and tags

Prometheus

Built-in metrics collection and exposure:

  • HTTP request metrics (latency, status codes, throughput)
  • Custom application metrics
  • Standard runtime metrics (memory, CPU, event loop)
  • Configurable metrics endpoint (default: /metrics)

OpenTelemetry

Distributed tracing support for microservices architecture:

  • Automatic span creation for HTTP requests
  • Custom span instrumentation
  • Context propagation across services
  • Integration with tracing backends (Jaeger, Zipkin, etc.)

Health Checks

Production-ready health check endpoints:

  • Liveness probe (/health/live) — Is the service running?
  • Readiness probe (/health/ready) — Is the service ready to handle traffic?
  • Custom health checks (database, cache, external services)
  • Graceful shutdown handling

Planned Usage

import { createFastifyServer } from "@ovineko/fastify-base";

const server = await createFastifyServer({
sentry: {
dsn: process.env.SENTRY_DSN,
environment: process.env.NODE_ENV,
},
prometheus: {
enabled: true,
endpoint: "/metrics",
},
opentelemetry: {
enabled: true,
serviceName: "my-service",
},
health: {
liveness: "/health/live",
readiness: "/health/ready",
},
});

// Add your routes
server.get("/api/users", async (request, reply) => {
return { users: [] };
});

await server.listen({ port: 3000, host: "0.0.0.0" });

Development Status

This package is in active development. Check back for the first release.