Monorepo Support
LogicStamp Context works seamlessly with monorepos containing both backend and frontend code. Each file is analyzed independently, so you can mix Express.js, NestJS, React, Vue, and TypeScript files in the same codebase.
How It Works
LogicStamp analyzes each file independently:
- Scans all
.tsand.tsxfiles recursively - Detects framework per file (Express, NestJS, React, Vue, or TypeScript)
- Extracts appropriate metadata based on detected framework
- Generates contracts for all files, preserving your directory structure
Key point: Files don't interfere with each other. A backend file in one folder doesn't affect frontend extraction in another folder.
Framework Detection Per File
Each file is analyzed independently with framework detection:
Priority Order
- Vue (if Vue imports detected) → Vue extraction
- Backend (if Express/NestJS detected) → Backend extraction
- React (default) → React extraction
Detection Logic
- Express.js: Requires
expressimport AND route patterns (app.get(),router.post(), etc.) - NestJS: Requires
@nestjsimport AND controller decorators (@Controller(),@Get(), etc.) - Vue: Requires
vueimport - React: Default fallback (or explicit
reactimport)
Monorepo Structure Examples
Example 1: Packages-Based Monorepo
my-monorepo/
├── packages/
│ ├── backend/
│ │ └── src/
│ │ ├── routes/
│ │ │ └── users.ts → ✅ node:api (Express routes)
│ │ └── controllers/
│ │ └── posts.ts → ✅ node:api (NestJS controller)
│ │
│ ├── frontend/
│ │ └── src/
│ │ ├── components/
│ │ │ └── Button.tsx → ✅ react:component
│ │ └── hooks/
│ │ └── useAuth.ts → ✅ react:hook
│ │
│ └── shared/
│ └── types.ts → ✅ ts:moduleResult: All files are extracted correctly: Backend files → backend.routes, backend.controller. Frontend files → hooks, components, props. Shared files → functions, imports.
Example 2: Apps-Based Monorepo
my-monorepo/
├── apps/
│ ├── api/
│ │ └── src/
│ │ ├── routes.ts → ✅ node:api (Express)
│ │ └── middleware.ts → ✅ ts:module
│ │
│ └── web/
│ └── src/
│ ├── pages/
│ │ └── Home.tsx → ✅ react:component
│ └── components/
│ └── Header.tsx → ✅ react:component
│
└── packages/
└── ui/
└── Button.tsx → ✅ react:componentResult: Each app and package is analyzed independently.
Usage
Scan Entire Monorepo
# From monorepo root
stamp context
# Or specify a path
stamp context ./packagesScan Specific Packages
# Backend only
stamp context ./packages/backend
# Frontend only
stamp context ./packages/frontend
# Both (from root)
stamp contextOutput Structure: LogicStamp preserves your directory structure. Each folder gets its own context.json file, plus a context_main.json index at the root.
Best Practices
1. Separate Backend and Frontend Files
Recommended: Keep backend and frontend code in separate files. LogicStamp uses priority-based detection. If a file has both backend routes and React components, only one will be extracted (backend takes priority over React).
✅ Good:
packages/backend/src/routes/users.ts → Backend routespackages/frontend/src/components/App.tsx → Frontend component2. Use Clear File Organization
Organize by concern: Keep related files together and use clear directory structures.
✅ Good:
packages/backend/routes/packages/frontend/components/packages/shared/types/3. Framework-Specific Folders
Group files by framework for better organization and clearer extraction results.
✅ Good:
packages/express-api/packages/nestjs-api/packages/react-app/Common Patterns
Next.js Monorepo
my-monorepo/
├── apps/
│ ├── web/ → Next.js app
│ │ └── app/
│ │ └── page.tsx → ✅ react:component (with Next.js metadata)
│ │
│ └── api/ → Express API
│ └── routes.ts → ✅ node:apiNote: Next.js API routes (app/api/route.ts) are detected as React components with Next.js metadata, not as backend routes. Express/NestJS patterns are required for backend extraction.
Full-Stack Monorepo
my-monorepo/
├── server/
│ └── src/
│ ├── routes.ts → ✅ node:api (Express)
│ └── services.ts → ✅ ts:module
│
├── client/
│ └── src/
│ ├── App.tsx → ✅ react:component
│ └── hooks/
│ └── useAuth.ts → ✅ react:hook
│
└── shared/
└── types.ts → ✅ ts:moduleNext Steps
Get started with LogicStamp Context or explore framework-specific guides.