Hiring monday.com developer?
Adding new modules or functionality to monday.com is primarily achieved through its open API, apps framework, and custom integrations, which allow developers to extend the platform’s capabilities. Since you mentioned TypeScript and are comfortable coding in any language, I’ll explain how you can use TypeScript (and related technologies like Node.js) to build functionality for monday.com, clarify whether TypeScript is used for frontend or backend, and detail the backend architecture of monday.com to provide context.
1. How to Add New Modules/Functionality to monday.com
monday.com supports extensibility through the following mechanisms, which you can leverage as a developer:
- monday.com Apps Framework:
- The Apps Framework allows you to build custom apps that integrate seamlessly with monday.com. These apps can add new features, such as custom board views, dashboard widgets, automations, or integrations with external tools.
- Apps can be built for internal use or published to the monday.com Apps Marketplace for other users.
- The framework supports custom UI components, serverless functions for backend logic, and triggers for automations.
- monday.com API:
- monday.com provides a REST API (v1) and a GraphQL API (v2) for interacting with platform data, such as boards, items, users, tags, and updates.
- The GraphQL API is more flexible, allowing you to query or mutate specific data (e.g., create items, update statuses, or fetch board structures) with minimal overhead.
- You can use the API to build custom integrations, automate workflows, or create entirely new modules that interact with monday.com data.
- Automations and Integrations:
- You can create custom automations using the Apps Framework to define “if-this-then-that” logic (e.g., when a task is completed, send a Slack message or update a Google Sheet).
- Integrations can connect monday.com with external services (e.g., CRMs, email platforms, or databases) via the API or pre-built connectors like Zapier.
- Custom UI Extensions:
- You can build custom board views, dashboard widgets, or panel components to enhance the user interface, tailoring monday.com to specific workflows.
2. Role of TypeScript in monday.com App Development
TypeScript is a superset of JavaScript that adds static typing, commonly used for both frontend and backend development. In the context of monday.com, TypeScript can be used in multiple ways, depending on whether you’re building apps, integrations, or custom functionality.
Frontend Development with TypeScript
- Custom UI Components:
- monday.com’s Apps Framework allows you to create custom UI elements (e.g., board views, widgets, or settings panels) using React and TypeScript.
- The monday-sdk-js (monday.com’s JavaScript SDK) is TypeScript-compatible and provides utilities for interacting with the monday.com platform, such as fetching board data, listening to events, or rendering UI components.
- Example: You could build a custom Kanban view or a dashboard widget that visualizes data from a board using React and TypeScript.
- Tools:
- React: For building interactive UI components.
- monday-ui-react-core: A library of reusable UI components provided by monday.com for consistent styling.
- TypeScript: Ensures type safety when defining props, state, or API responses.
- Use Case:
- Create a custom widget that displays a chart of task completion rates using TypeScript, React, and a charting library like Chart.js, integrated with monday.com’s GraphQL API to fetch data.
Backend Development with TypeScript and Node.js
- Serverless Functions:
- The Apps Framework supports serverless functions (hosted on monday.com’s infrastructure or externally) to handle backend logic for your apps.
- You can write these functions in TypeScript running on Node.js, allowing you to process API requests, handle webhooks, or integrate with third-party services.
- Example: A serverless function that listens for a status change on a board (via a webhook) and sends a notification to an external service like Slack or Twilio.
- Custom Integrations:
- You can build a standalone backend service using Node.js and TypeScript to interact with monday.com’s API. This service could handle complex workflows, such as syncing monday.com data with a database or processing large datasets.
- Example: A Node.js server that uses the GraphQL API to periodically back up board data to an external database like MongoDB or PostgreSQL.
- Tools:
- Node.js: For running TypeScript on the backend.
- monday-sdk-js: For API calls and webhook handling.
- Express or Fastify: For building RESTful APIs or webhook endpoints.
- GraphQL Clients (e.g., graphql-request): For querying monday.com’s GraphQL API.
- Use Case:
- Build a TypeScript-based Node.js service that listens for new items on a board, processes them (e.g., calculates a priority score based on custom logic), and updates the board via the API.
Is TypeScript Frontend-Only for monday.com?
- No, TypeScript is used for both frontend and backend:
- Frontend: TypeScript is used with React to build custom UI components, leveraging the monday.com SDK and UI libraries.
- Backend: TypeScript is used with Node.js to write serverless functions, webhook handlers, or standalone services that interact with the API.
- monday.com’s own infrastructure uses TypeScript for its microservices (more on this below), but as an external developer, you’ll primarily use TypeScript for app development or custom integrations.
3. What You Can Do with TypeScript for monday.com
Here are specific examples of what you can build using TypeScript, covering both frontend and backend:
Frontend Examples
- Custom Board View:
- Use TypeScript and React to create a new board view (e.g., a timeline or map view) that displays items in a unique format.
- Example Code Snippet:typescript
import React, { useEffect } from 'react';
import { useMondaySdk } from 'monday-sdk-js';const CustomBoardView: React.FC = () => {
const monday = useMondaySdk();
useEffect(() => {
monday.api(`query { boards { id name items { name } } }`).then((res) => {
console.log('Board data:', res.data);
});
}, []);
return <div>Custom Board View</div>;
};
export default CustomBoardView;
- This fetches board data using the GraphQL API and can be extended to render a custom UI.
- Dashboard Widget:
- Build a widget that visualizes data (e.g., a pie chart of task statuses) using TypeScript, React, and a library like Recharts.
- Integrate with the monday.com API to fetch real-time data.
Backend Examples
- Automation Trigger:
- Write a TypeScript-based serverless function that triggers when a board item’s status changes and performs an action (e.g., sends an email via SendGrid).
- Example Code Snippet:
typescript
import { MondayClient } from 'monday-sdk-js'; import express from 'express';const app = express(); const monday = new MondayClient({ token: 'YOUR_API_TOKEN' });app.post('/webhook', async (req, res) => { const { event } = req.body; if (event.type === 'change_status') { await monday.api(`mutation { create_notification (user_id: ${event.userId}, text: "Status changed!", board_id: ${event.boardId}) }`); } res.status(200).send('Webhook received'); });app.listen(3000, () => console.log('Server running on port 3000'));
- This sets up a webhook endpoint to handle status changes and sends a notification via the API.
- External Integration:
- Create a Node.js service with TypeScript that syncs monday.com board data with an external CRM (e.g., Salesforce) using the GraphQL API.
- Example: Query board items every hour and push updates to Salesforce using its API.
Steps to Get Started
- Set Up Development Environment:
- Install Node.js and TypeScript (npm install -g typescript).
- Use the monday-sdk-js (npm install monday-sdk-js).
- Set up a React project for frontend components (npx create-react-app my-app –template typescript).
- Get API Access:
- Obtain an API token from monday.com (Settings > Admin > API) for authentication.
- For apps, use the Apps Framework to generate OAuth tokens or temporary tokens.
- Build and Test:
- Use the monday.com App Development CLI (npm install -g @mondaycom/apps-cli) to scaffold, test, and deploy apps.
- Test locally using a tunnel (e.g., ngrok) for webhook or frontend development.
- Deploy:
- Deploy serverless functions to monday.com’s infrastructure or host your backend on AWS, Heroku, or another platform.
- Publish apps to the monday.com Apps Marketplace for broader use.
4. What’s on the Backend of monday.com?
To understand how your TypeScript/Node.js code interacts with monday.com, here’s an overview of monday.com’s backend architecture:
- Microservices Architecture:
- monday.com uses a microservices-based architecture, having evolved from a monolithic setup.
- Each microservice is independent, with its own infrastructure, including:
- Amazon RDS: For relational database storage.
- Redis: For caching and in-memory data storage.
- Amazon SQS: For message queuing.
- Amazon S3: For file storage.
- Microservices are written in TypeScript and run on Kubernetes, ensuring scalability and resilience.
- mondayDB:
- The core data engine, mondayDB, is a schemaless database that powers boards, items, and other data structures.
- It separates storage (for persistent data) and compute (for query processing), allowing elastic scaling.
- mondayDB handles billions of boards and supports dynamic query patterns, with optimizations for fast data retrieval (e.g., 5x faster board loading in mondayDB 1.0).
- Multi-Region Deployment:
- The backend is deployed across multiple AWS regions to reduce latency and ensure compliance with data regulations (e.g., GDPR).
- This setup supports high availability and fault tolerance.
- Infrastructure Management:
- Terraform is used for provisioning infrastructure, managed via a custom tool called Ensemble (built with TypeScript and Kubernetes).
- Continuous Delivery: The backend supports 20–30 deployments per day, with automated testing and A/B testing via a system called BigBrain.
- API Layer:
- The REST and GraphQL APIs serve as the primary interfaces for external developers.
- The GraphQL API is optimized for flexible queries, reducing over-fetching compared to REST.
- Webhooks are used to push real-time updates to external services.
5. How Your Code Interacts with monday.com’s Backend
- API Calls:
- Your TypeScript/Node.js code interacts with monday.com’s backend via HTTP requests to the REST or GraphQL APIs.
- Example: A Node.js service queries the GraphQL API to fetch board items or mutate data (e.g., update a task status).
- Webhooks:
- You can set up webhook endpoints in your Node.js server to receive real-time events from monday.com (e.g., item creation, status change).
- The monday.com backend pushes JSON payloads to your endpoint, which your TypeScript code processes.
- Serverless Functions:
- For Apps Framework apps, your TypeScript serverless functions run on monday.com’s infrastructure or an external provider (e.g., AWS Lambda).
- These functions handle API calls, process data, or trigger actions based on user interactions.
- Data Flow:
- Your code interacts with mondayDB indirectly through the API, which abstracts the schemaless database’s complexity.
- For example, when you create an item via the API, mondayDB stores it in its schemaless structure, and the backend handles scaling and performance.
6. Practical Example: Building a Custom Automation
Let’s say you want to build an automation that sends a Slack message when a task’s status changes to “Done”:
- Set Up a Node.js Server:typescript
import express from 'express';
import { MondayClient } from 'monday-sdk-js';
import axios from 'axios';const app = express();
app.use(express.json());
const monday = new MondayClient({ token: 'YOUR_API_TOKEN' });
app.post('/webhook', async (req, res) => {
const { event } = req.body;
if (event.type === 'change_status' && event.value === 'Done') {
const itemQuery = await monday.api(
`query { items (ids: ${event.itemId}) { name } }`
);
const itemName = itemQuery.data.items[0].name;
// Send Slack message
await axios.post('SLACK_WEBHOOK_URL', {
text: `Task "${itemName}" marked as Done!`,
});
}
res.status(200).send('Webhook processed');
});
app.listen(3000, () => console.log('Server running on port 3000'));
- Register the Webhook:
- Use the monday.com API to register your webhook endpoint for status change events on a specific board.
- Example API call:
graphql
mutation {
create_webhook(board_id: YOUR_BOARD_ID, url: "https://your-server.com/webhook", event: change_status) {
id
board_id
}
}
- Deploy:
- Host the server on a platform like Heroku or AWS, or use a serverless provider for the webhook endpoint.
- Test the webhook by changing a task’s status to “Done” and verifying the Slack message.
7. Limitations and Considerations
- API Rate Limits:
- monday.com imposes rate limits on API calls (e.g., 5,000 requests per 10 minutes for some plans). Plan your application to handle these limits, using batch queries or caching where possible.
- Learning Curve:
- The Apps Framework and GraphQL API have a learning curve, especially for complex apps. Familiarity with TypeScript, React, and Node.js will help.
- Hosting:
- For backend services, you’ll need to host your Node.js server or serverless functions, as monday.com’s infrastructure only hosts Apps Framework serverless functions.
- Mobile Limitations:
- If your app includes UI components, test thoroughly on mobile, as monday.com’s mobile apps have some limitations compared to the desktop version.
Summary
You can use TypeScript for both frontend (React-based UI components like custom board views or widgets) and backend (Node.js-based serverless functions, webhook handlers, or standalone services) to add new modules or functionality to monday.com. The Apps Framework and GraphQL API are the primary tools for extending the platform, allowing you to build custom apps, automations, or integrations. monday.com’s backend is a microservices architecture powered by mondayDB, TypeScript, Kubernetes, and AWS services, which your code interacts with via APIs and webhooks. Practical steps include setting up a TypeScript project with the monday-sdk-js, using the API for data operations, and deploying your app or service. For example, you could build a custom automation that integrates with Slack or a new board view using React.
- 1. How to Add New Modules/Functionality to monday.com
- 2. Role of TypeScript in monday.com App Development
- 3. What You Can Do with TypeScript for monday.com
- 4. What’s on the Backend of monday.com?
- 5. How Your Code Interacts with monday.com’s Backend
- 6. Practical Example: Building a Custom Automation
- 7. Limitations and Considerations
- Summary
Talk to Our Expert
