build log: feb 07 — from starter to production

2026-02-07

this build log is automatically generated

projects
agenticcontrolplane-com agenticcontrolplane.com dream-backend reducibl gatewaystack.com .claude gtm-engine chatflow-widget 28dayai gatewaystack-chatgpt-starter gatewaystack-connect
session stats
1.5k tool calls 102 files 26 sessions
tool breakdown
Bash
613
Read
401
Edit
184
Write
61
TaskUpdate
51
TaskCreate
40
Grep
38
Glob
27
TaskOutput
20
Task
19
WebFetch
5
AskUserQuestion
3
WebSearch
1
EnterPlanMode
1
ExitPlanMode
1
TaskList
1

what i shipped today

i completely rebuilt gatewaystack-chatgpt-starter, turning it from a simple demo into a production-ready mcp server. this involved removing dead code, modernizing the codebase, adding tests, and improving security. i also wrote a case study about the process.

firebase: gone

i removed all the firebase-specific code. the original starter had firebase as an optional backend, but it added unnecessary complexity and bloat. the new version focuses on a simpler, more portable design.

that meant deleting toolGateway-firebase.ts, mcpHandler-firebase.ts, firebaseAdapter.ts, and cloudFunctions.ts. plus, i removed the firebase-admin dependency from package.json.

oauth: hardened

the original starter had a hardcoded auth0 tenant in oauthConfig.ts. this was a security risk, as it could lead to accidental exposure of sensitive data.

i replaced the hardcoded tenant with a required environment variable. now, the starter will throw an error if you don’t provide a valid auth0 tenant.

tests: added

the original starter had no tests. this made it difficult to verify that the code was working correctly and to prevent regressions.

i added vitest with unit and integration tests. these tests cover the core functionality of the starter, including jwt authentication, mcp handling, and crm queries.

esm: migrated

the original starter used commonjs modules. this is an older module system that is not as efficient or modern as esm.

i migrated the starter to esm. this involved updating the tsconfig.json file, adding .js extensions to all internal imports, and updating the require.main === module pattern.


david crowe — reducibl.com


interested in working together? let's talk

← back to build logs