Farm¶
What is Farm?¶
Farm is an open-source full-stack portal providing a centralized hub for managing software components, technical documentation, team infrastructure, and cloud-native operations.
Farm helps engineering teams organize, discover, and manage their software ecosystem through:
- Component Catalog: Unified registry of services, libraries, APIs, websites, and infrastructure resources
- Documentation: Associate and discover technical documentation linked to each component
- Observability: Monitor metrics, traces, and logs from Prometheus, Jaeger, and Loki
- Pipelines: Define and execute multi-stage pipelines with real-time WebSocket log streaming
- Environments: Track deployments and manage self-service environment provisioning
- Cost Management: Monitor infrastructure spend per component and team via OpenCost integration
- SLOs and Alerting: Define Service Level Objectives with error budget tracking and alert rules
- Cloud Discovery: Import and manage resources from AWS, GCP, and Azure
- Security and Compliance: Enforce tag policies, evaluate OPA policies, and track Kyverno violations
For the complete feature list, see the User Guide.
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. Versions listed are current as of v0.25.10:
| 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 - Web UI:
http://localhost:3001
License¶
Farm is licensed under the GNU Affero General Public License v3.0.