Farm¶
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.