| name | mindtickle-local-dev-loop |
| description | Local Dev Loop for MindTickle.
Trigger: "mindtickle local dev loop".
|
| allowed-tools | Read, Write, Edit |
| version | 1.7.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","mindtickle","sales"] |
| compatibility | Designed for Claude Code |
MindTickle Local Dev Loop
Overview
Local development workflow for MindTickle sales enablement and readiness API integration. Provides a fast feedback loop with mock training modules, user progress, and coaching data so you can build sales readiness dashboards without needing a live MindTickle instance. Toggle between mock mode for rapid iteration and sandbox mode for validating against the real MindTickle platform.
Environment Setup
cp .env.example .env
npm install express axios dotenv tsx typescript @types/node
npm install -D vitest supertest @types/express
Dev Server
import express from "express";
import { createProxyMiddleware } from "http-proxy-middleware";
const app = express();
app.use(express.json());
const MOCK = process.env.MOCK_MODE === "true";
if (!MOCK) {
app.use("/v2", createProxyMiddleware({
target: process.env.MINDTICKLE_BASE_URL,
changeOrigin: true,
headers: { Authorization: `Bearer ${process.env.MINDTICKLE_API_KEY}` },
}));
} else {
const { mountMockRoutes } = require("./mocks");
mountMockRoutes(app);
}
app.listen(3007, () => console.log(`MindTickle dev server on :3007 [mock=${MOCK}]`));
Mock Mode
export function mountMockRoutes(app: any) {
app.get("/v2/modules", (_req: any, res: any) => res.json([
{ id: "mod_1", title: "Q4 Product Launch", type: "course", status: "published", enrolledCount: 85, completionRate: 0.72 },
{ id: "mod_2", title: "Objection Handling", type: "coaching", status: "published", enrolledCount: 120, completionRate: 0.58 },
]));
app.get("/v2/users/:id/progress", (req: any, res: any) => res.json({
userId: req.params.id, completedModules: 8, totalModules: 12, : ,
: [{ : , : , : }],
}));
app.(, res.({
: [
{ : , : , : , : },
{ : , : , : , : },
],
}));
app.(, res.().({ : , ...req., : }));
}
Testing Workflow
npm run dev:mock &
npm run test
npm run test -- --watch
MOCK_MODE=false npm run test:integration
Debug Tips
- MindTickle user IDs are org-scoped — IDs from one org will 404 on another
- Progress endpoints return
null for users who have not started any modules
- Coaching session creation requires both
coachId and learnerId fields
- Use
/v2/modules?status=draft to test against unpublished content without affecting live users
- Check
completionRate is a decimal (0.72) not a percentage (72) when building dashboards
Error Handling
| Issue | Cause | Fix |
|---|
401 Unauthorized | Invalid API key | Regenerate at MindTickle admin console |
403 Forbidden | Key lacks admin scope | Request API access from MindTickle CSM |
404 Not Found | User or module ID invalid | Fetch list endpoints to verify IDs |
429 Rate Limited | Too many requests | Add exponential backoff, use mock mode |
ECONNREFUSED :3007 | Dev server not running | Run npm run dev:mock first |
Resources
Next Steps
See mindtickle-debug-bundle.