Skip to content

Farm

Farm Logo

What is Farm?

Farm is an open-source full stack portal providing a centralized hub for managing software components, technical documentation, and team infrastructure.

Farm enables engineering teams to:

  • Track Software Components: Maintain a unified catalog of all software components including services, libraries, APIs, and websites
  • Manage Documentation: Associate technical documentation with each component for easy discovery and maintenance
  • Handle Authentication: Manage user access with role-based authentication and multi-tenant organization support
  • Observe Systems: Monitor metrics, traces, and logs from a unified hub with native PromQL, Jaeger, and Loki integration
  • Run Pipelines: Define and execute multi-stage pipelines with real-time log streaming via WebSocket
  • Manage Alerting: Create and manage PromQL-based alerting rules linked to catalog components or environments
  • Discover and Understand: Provide visibility into the software ecosystem within your organization

Who is this documentation for?

This documentation is divided into sections targeting different audiences:

End Users

If you are an end user looking to use Farm in your organization, start with the User Guide. This section covers:

  • Getting started with Farm
  • Using the component catalog
  • Managing documentation
  • Authentication and user management

Developers and Contributors

If you are a developer looking to contribute to Farm or deploy it in your environment, check out the Developer Guide. This section includes:

  • Development environment setup
  • Architecture overview
  • Contribution guidelines
  • Testing strategies

Technology Stack

Farm is built with modern technologies:

Layer Technology Purpose
Backend NestJS 11 Progressive Node.js framework for building scalable server-side applications
Backend TypeORM ORM for database access, migrations, and entity management
Backend PostgreSQL 16 Primary relational database
Backend BullMQ Redis-backed queue for background job processing (pipelines, notifications)
Backend Socket.IO WebSocket gateway for real-time event broadcasting
Frontend Next.js 16 React framework with App Router and server components
Frontend React 19 UI component model
Frontend Tailwind CSS Utility-first CSS framework
Frontend shadcn/ui Accessible component library built on Radix UI
Shared TypeScript Strongly typed language for both frontend and backend
Shared @farm/types Internal package for shared enums, types, and events
Observability Prometheus Metrics collection and PromQL proxy
Observability Jaeger / Grafana Tempo Distributed trace storage and waterfall viewer
Observability Loki Log aggregation and LogQL proxy
Infrastructure Docker / Docker Compose Container runtime and local development environment
Infrastructure Redis Queue broker (BullMQ) and optional HTTP cache layer

Quick Start

The fastest way to get Farm running is using Docker and Docker Compose. This starts both the API and a PostgreSQL database.

# Clone the repository
git clone https://github.com/Ops-Talks/farm.git
cd farm

# Start the entire environment (API + Database)
make up-docker

# Check if everything is healthy
make healthcheck

The API server starts on port 3000 by default. You can access:

  • Health Endpoint: http://localhost:3000/api/health
  • Interactive API Documentation (Swagger): http://localhost:3000/api/docs

License

Farm is licensed under the GNU Affero General Public License v3.0.