awesome-python/farm-aggregator/config.js
Claude db1ba75274
feat(farm-aggregator): standalone farm data aggregator service
Node.js service for the farm server that replaces the Chrome extension concept.
Pulls from AG-Refine REST API and Dropbox (DairyComp/FeedLync logs), synthesises
with Claude Haiku on a cron schedule, pushes summaries back to Dropbox and WhatsApp.

- Hourly pulse, daily digest (Haiku), weekly summary (Sonnet)
- TomTom geofence webhook receiver — entry/exit events → WhatsApp + Dropbox log
- WhatsApp Business API send (gracefully disabled if no credentials)
- Express HTTP server with /health, /status, manual /run/* trigger endpoints
- Windows start.bat for farm server deployment
- .env.example documents all credentials (none committed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KBD2dN2KEjzz3UQFa9hEpu
2026-06-28 03:51:49 +00:00

41 lines
1.4 KiB
JavaScript

import 'dotenv/config';
export const config = {
anthropic: {
apiKey: process.env.ANTHROPIC_API_KEY,
model: 'claude-haiku-4-5-20251001',
modelDeep: 'claude-sonnet-4-6',
},
agrefine: {
url: process.env.AGREFINE_API_URL ?? 'https://ag-refine.onrender.com/api',
apiKey: process.env.AGREFINE_API_KEY ?? '',
},
dropbox: {
appKey: process.env.DROPBOX_APP_KEY,
appSecret: process.env.DROPBOX_APP_SECRET,
refreshToken: process.env.DROPBOX_REFRESH_TOKEN,
paths: {
inbox: process.env.DROPBOX_INBOX_PATH ?? '/Farm/Inbox',
outbox: process.env.DROPBOX_OUTBOX_PATH ?? '/Farm/Summaries',
dairycomp: process.env.DROPBOX_DAIRYCOMP_PATH ?? '/Farm/DairyComp',
feedlync: process.env.DROPBOX_FEEDLYNC_PATH ?? '/Farm/FeedLync',
},
},
whatsapp: {
accessToken: process.env.WHATSAPP_ACCESS_TOKEN ?? '',
phoneId: process.env.WHATSAPP_PHONE_ID ?? '',
recipient: process.env.WHATSAPP_RECIPIENT ?? '',
enabled: !!(process.env.WHATSAPP_ACCESS_TOKEN && process.env.WHATSAPP_PHONE_ID),
},
tomtom: {
apiKey: process.env.TOMTOM_API_KEY ?? '',
},
server: {
port: parseInt(process.env.WEBHOOK_PORT ?? '3001', 10),
},
schedule: {
pulse: process.env.PULSE_SCHEDULE ?? '0 * * * *',
daily: process.env.DAILY_SCHEDULE ?? '0 6 * * *',
weekly: process.env.WEEKLY_SCHEDULE ?? '0 6 * * 1',
},
};