Free, open-source Monday.com app that automatically syncs Start Date + End Date columns with Timeline columns.
No more manual copy-paste. No paid marketplace apps. Deploy in 5 minutes.
Real Monday.com board — Start Date + End Date columns automatically synced with the Timeline column.
Change a date and the timeline updates instantly. Change the timeline and dates update back.
Monday.com has no native automation to sync separate Start Date and End Date columns with a Timeline column. The marketplace app "Start + End = Timeline" charges per seat. Many teams just need a simple, free solution.
This app solves that. It's:
- Free forever -- MIT licensed, self-hosted
- One-click deploy -- Render.com (free) or Cloudflare Workers (free)
- Bi-directional -- dates to timeline AND timeline to dates
- Zero maintenance -- set it and forget it
- Bi-directional sync -- Change dates, timeline updates. Change timeline, dates update.
- One-way modes -- dates-to-timeline only, or timeline-to-dates only
- Multi-board -- Configure as many boards as you need
- Loop prevention -- Smart debounce prevents infinite update cycles
- Column validation -- Verifies your column IDs exist before activating
- Two deploy options -- Cloudflare Workers (edge, fast) or Render.com (simple)
- Lightweight -- Built on Hono (~14KB framework)
- TypeScript -- Fully typed, clean codebase
-
Click the button:
-
Fill in your Monday.com credentials (see Getting Your Monday.com Credentials)
-
Once deployed, configure your board:
# First, find your column IDs curl https://your-app.onrender.com/configure/YOUR_BOARD_ID/columns # Then configure sync curl -X POST https://your-app.onrender.com/configure \ -H "Content-Type: application/json" \ -d '{ "boardId": 1234567890, "startDateColumnId": "date0", "endDateColumnId": "date1", "timelineColumnId": "timeline", "apiToken": "your-monday-api-token" }' # Activate the webhook curl -X POST https://your-app.onrender.com/webhook/subscribe \ -H "Content-Type: application/json" \ -d '{"boardId": 1234567890}'
See docs/deploy-render.md for the full guide.
git clone https://github.com/spcaeo/monday-timeline-sync.git
cd monday-timeline-sync
npm install
# Create KV namespace
npx wrangler kv namespace create KV
# Copy the ID into wrangler.toml
# Set secrets
npx wrangler secret put MONDAY_CLIENT_ID
npx wrangler secret put MONDAY_CLIENT_SECRET
npx wrangler secret put MONDAY_SIGNING_SECRET
npx wrangler secret put MONDAY_API_TOKEN
# Deploy
npm run deploy:cfThen configure your board using the same curl commands as above, replacing the URL with your Workers URL.
See docs/deploy-cloudflare.md for the full guide.
git clone https://github.com/spcaeo/monday-timeline-sync.git
cd monday-timeline-sync
npm install
cp .env.example .env # Edit with your credentials
npm run dev
# In another terminal -- create a public tunnel for Monday.com webhooks
npm run tunnel- Go to monday.com/developers/apps
- Click Create App (or use an existing app)
- Under Basic Information, copy:
- Client ID
- Client Secret
- Signing Secret
- For the API Token: Go to your Monday.com profile > Admin > API > Copy your personal API token
See docs/MONDAY_APP_SETUP.md for a detailed walkthrough.
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Health check / landing page |
POST |
/configure |
Save board sync configuration |
GET |
/configure/:boardId |
View current board config |
GET |
/configure/:boardId/columns |
List date + timeline columns on a board |
DELETE |
/configure/:boardId |
Remove board config |
POST |
/webhook |
Monday.com webhook receiver (handles challenge + events) |
POST |
/webhook/subscribe |
Create a webhook subscription for a board |
POST |
/webhook/unsubscribe |
Remove webhook subscription for a board |
Set via SYNC_MODE environment variable:
| Mode | Behavior |
|---|---|
bidirectional (default) |
Changes to dates update timeline, changes to timeline update dates |
dates_to_timeline |
Only syncs dates to timeline |
timeline_to_dates |
Only syncs timeline to dates |
| Variable | Required | Description |
|---|---|---|
MONDAY_CLIENT_ID |
Yes | OAuth client ID from Monday.com Developer Center |
MONDAY_CLIENT_SECRET |
Yes | OAuth client secret |
MONDAY_SIGNING_SECRET |
Yes | Webhook signing secret for request verification |
MONDAY_API_TOKEN |
Yes | Personal API token or OAuth token |
APP_URL |
Yes | Your deployed app URL (e.g., https://your-app.onrender.com) |
PORT |
No | Server port (default: 3000, Node.js only) |
SYNC_MODE |
No | bidirectional, dates_to_timeline, or timeline_to_dates (default: bidirectional) |
monday-timeline-sync/
src/
types.ts # TypeScript interfaces
storage/
index.ts # Storage exports
cloudflare-kv.ts # Cloudflare KV adapter
memory.ts # In-memory adapter (dev / Render)
services/
monday.ts # Monday.com GraphQL API client
sync.ts # Timeline sync logic + debounce
routes/
configure.ts # Board configuration endpoints
webhook.ts # Webhook handler + subscribe/unsubscribe
utils/
logger.ts # Logging utility
app.ts # Hono app setup + middleware
worker.ts # Cloudflare Workers entry point
server.ts # Node.js entry point
docs/ # Deployment guides
wrangler.toml # Cloudflare Workers config
render.yaml # Render blueprint (one-click deploy)
.env.example # Environment variable template
- Hono -- Ultrafast web framework (runs on Workers + Node.js)
- TypeScript -- Fully typed codebase
- Cloudflare Workers -- Edge deployment with KV storage
- Node.js -- Traditional server deployment (Render, Railway, Fly.io, etc.)
- Monday.com GraphQL API -- Board, column, and webhook management
# Install dependencies
npm install
# Run in development mode (Node.js with hot reload)
npm run dev
# Run in Cloudflare Workers local mode
npm run dev:cf
# Build for production
npm run build
# Deploy to Cloudflare Workers
npm run deploy:cfContributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m "Add my feature") - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
MIT License -- see LICENSE for details.
Built with care by TaskRhino
We help businesses automate their Monday.com workflows, build custom integrations, and streamline operations.
Need help with Monday.com?
- Custom Monday.com integrations
- Workflow automation setup
- Monday.com consulting & training
Visit TaskRhino | sales@taskrhino.ca
If this project saved you time, give it a star on GitHub!


