A TypeScript monorepo containing a type-safe Harvest API client and n8n community node for Harvest integration.
harvest-clients/
├── apps/
│ └── n8n-nodes-harvest/ # n8n community node for Harvest
├── examples/ # Example workflows and integrations
│ └── n8n-workflows/
├── packages/
│ ├── harvest-client/ # Type-safe Harvest API client
│ ├── eslint-config/ # Shared ESLint configuration
│ └── typescript-config/ # Shared TypeScript configuration
- Package Manager: pnpm (v9+)
- Build System: Turborepo
- Language: TypeScript (v5+)
- Type Generation: openapi-typescript
- Node.js 22+
- pnpm 9+
# Clone the repository
git clone https://github.com/mekanics/harvest-clients.git
cd harvest-clients
# Install dependencies
pnpm install
# Generate types from OpenAPI spec
pnpm --filter harvest-client generate:types
# Build all packages
pnpm build# Build all packages
pnpm build
# Start development mode (watch)
pnpm dev
# Run linting
pnpm lint
# Fix linting issues
pnpm lint:fix
# Run type checking
pnpm type-check
# Format code
pnpm format
# Clean all build outputs
pnpm clean# Build a specific package
pnpm --filter harvest-client build
# Run commands in a specific package
pnpm --filter n8n-nodes-harvest dev
# Add a dependency to a package
pnpm --filter harvest-client add <package-name>A type-safe TypeScript client for the Harvest API v2. See the harvest-client README for detailed usage.
An n8n community node for Harvest time tracking and invoicing. See the n8n-nodes-harvest README for installation and usage instructions.
The examples directory contains ready-to-use workflows and integrations:
A comprehensive n8n workflow for automated project budget tracking:
- Runs weekly on Mondays at 8:00 AM
- Reads project budget directly from Harvest
- Tracks hours across last week, month-to-date, and year-to-date
- Calculates workload recommendations (days/week needed)
- Sends beautiful HTML reports with progress bars
Location: examples/n8n-workflows/weekly-hours-report.json
See the examples README for setup instructions and more examples.
This project implements the Harvest API v2. The OpenAPI specification is located at packages/harvest-client/src/openapi/harvest-v2.yaml.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT