From monday-code
Scaffolds new monday.com code apps for frontend (React+Vite), backend (Express), or fullstack with structure, dependencies, manifest.json, and deployment config.
npx claudepluginhub mondaycom/agentic-mondayThis skill is limited to using the following tools:
Initialize a new monday.com code app with the correct structure for monday-code deployment.
Scaffolds production-ready full-stack monorepo with Next.js frontend, NestJS backend, MongoDB, Clerk auth, CRUD ops, Vitest tests, and GitHub Actions CI/CD. Runs via bun dev.
Creates React and Vite code apps for Power Apps. Scaffolds projects, checks prerequisites like Node.js and pac CLI, authenticates, builds, and deploys to Power Platform.
Initializes Next.js + Tailwind projects with bkend.ai BaaS for authentication, MongoDB database, REST APIs, and real-time features. Guides fullstack development and provides integration help.
Share bugs, ideas, or general feedback.
Initialize a new monday.com code app with the correct structure for monday-code deployment.
/monday-code-init fullstack
/monday-code-init frontend
/monday-code-init backend
Or conversationally: "Create a new monday code app", "Scaffold a fullstack monday app for me", "Set up a backend app with queue support".
Ask the user:
If the user provided an argument (e.g., /monday-code-init fullstack), skip the app type question.
Full code templates for all files below are in references/templates.md. Copy them verbatim, substituting
{{APP_NAME}}and{{FEATURE_NAME}}.
Create a .mondaycoderc file in the project root to specify the Node.js runtime:
{
"runtime": "nodejs22.x"
}
Supported runtimes: nodejs20.x, nodejs22.x, nodejs24.x. Default to nodejs22.x.
Create the monday app manifest in the project root:
{
"name": "{{APP_NAME}}",
"description": "A monday.com app",
"features": [
{
"type": "AppFeatureProductView",
"name": "{{FEATURE_NAME}}",
"settings": {
"hideViewHeader": true,
"isMobileSupported": false
}
}
],
"oauthScopes": []
}
Use the apps mcp get_app_feature_schema tool to fetch the correct schema for the user's chosen feature type and adjust the settings accordingly.
Adjust features[0].type based on the user's feature type choice. Common types:
AppFeatureProductView - Full-page viewAppFeatureBoardView - Board viewAppFeatureItemView - Item viewAppFeatureDashboardWidget - Dashboard widgetCreate the following structure:
frontend/
├── package.json
├── tsconfig.json
├── vite.config.ts
├── index.html
├── index.js
└── src/
├── main.tsx
├── App.tsx
├── contexts/
│ └── MondayContext.tsx
├── services/
│ └── api.ts
└── types/
└── index.ts
See references/templates.md for full file contents:
frontend/package.json — React + Vite + monday-sdk-js + @vibe/corefrontend/index.html — HTML entry point with root div and module script tagfrontend/vite.config.ts — Vite config with global: "globalThis" polyfillfrontend/index.js — CDN entry point (required by monday-code)frontend/src/contexts/MondayContext.tsx — Critical: monday SDK integration with local dev mock supportfrontend/src/services/api.ts — Backend API helper using session tokens and mondayCodeHostingUrlfrontend/src/App.tsx — Root component using MondayContextfrontend/src/main.tsx — React entry point wrapping app in MondayProviderfrontend/.env.example — VITE_DEV_TOKEN for local developmentCreate the following structure:
backend/
├── package.json
├── tsconfig.json
├── index.js
├── preload.cjs
└── src/
├── server.ts
├── app.ts
├── routes/
│ └── health.ts
├── middleware/
│ └── auth.ts
├── db/
│ └── connection.ts
├── types/
│ └── index.ts
└── utils/
├── logger.ts
├── secrets.ts
├── env-vars.ts
├── storage.ts (optional, for object/BLOB storage with @mondaycom/apps-sdk >= 3.3.1)
└── queue.ts (optional, for async processing with monday-code queues)
See references/templates.md for full file contents:
backend/package.json — Express + @mondaycom/apps-sdk + mongodb + jsonwebtokenbackend/preload.cjs — dotenv loader for local devbackend/index.js — monday-code serverless entry pointbackend/src/app.ts — Express app with CORS, JSON parsing, auth middlewarebackend/src/routes/health.ts — Health check endpointbackend/src/middleware/auth.ts — JWT auth (two variants: session tokens and automation webhooks)backend/src/db/connection.ts — MongoDB connection using MNDY_MONGODB_CONNECTION_STRINGbackend/src/utils/secrets.ts — SecretsManager with local dev fallbackbackend/src/utils/env-vars.ts — EnvironmentVariablesManager wrapperbackend/src/utils/storage.ts — Optional: Object storage (BLOB) for files, images, documents (requires @mondaycom/apps-sdk >= 3.3.1)backend/src/utils/queue.ts — Optional: Queue publish/consume with secret validationbackend/.env.example — MNDY_MONGODB_CONNECTION_STRING, MONDAY_CLIENT_SECRETauthMiddleware variant (extracts userId/accountId from JWT dat field or direct fields)authenticationMiddleware variant (validates MONDAY_SIGNING_SECRET, exposes shortLivedToken for GraphQL calls back to monday.com)MNDY_MONGODB_CONNECTION_STRING (auto-injected by monday-code after first deploy)@mondaycom/apps-cli >= 4.10.2Include backend/src/utils/storage.ts when the user needs to store or serve files (images, documents, videos, archives). Object storage is backed by Google Cloud Storage and is designed for large, unstructured files with infrequent read/write operations.
See references/templates.md for the full storage.ts template.
When to include:
Key constraints:
@mondaycom/apps-sdk >= 3.3.1Create .env.example files (see references/templates.md for full content):
backend/.env.example — MNDY_MONGODB_CONNECTION_STRING, MONDAY_CLIENT_SECRET, PORTfrontend/.env.example — VITE_DEV_TOKEN (local dev only)CRITICAL: All database queries MUST filter by accountId for multi-tenant isolation. Every document should include:
interface BaseDocument {
accountId: string; // Multi-tenant isolation (from JWT)
ownerId: string; // Per-user access control (from JWT)
createdAt: string;
updatedAt: string;
}
When querying, always include accountId:
// CORRECT - filtered by tenant
const items = await collection.find({ accountId: req.auth!.accountId }).toArray();
// WRONG - exposes all tenants' data
const items = await collection.find({}).toArray();
After creating all files:
npm install in each directory.env.example to .env and fill in values/monday-dev to start developmentIf the monday-apps MCP is configured (requires MONDAY_API_TOKEN in .mcp.json), use these tools:
mcp__monday-apps__monday_apps_get_development_context - Get reference patternsmcp__monday-apps__monday_apps_create_app - Create the app programmaticallymcp__monday-apps__monday_apps_create_app_feature - Create featuresmcp__monday-apps__monday_apps_get_app_feature_schema - Get feature schemasnpm install fails: check Node.js version matches .mondaycoderc runtime (nodejs22.x = Node 22)MNDY_MONGODB_CONNECTION_STRING is missing locally: run docker run -d -p 27017:27017 mongo:7 and set the env varMONDAY_CLIENT_SECRET matches the app's signing secret in monday.com developer centermondayCodeHostingUrl is undefined in frontend: the app must be deployed to monday-code at least onceAuthorization: <sessionToken> (not Bearer <token>) to match the backend's parsing logicMNDY_MONGODB_CONNECTION_STRING for database connection (auto-injected by monday-code after first deploy).mondaycoderc for runtime selection