Monorepo Support

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:

  1. Scans all .ts and .tsx files recursively
  2. Detects framework per file (Express, NestJS, React, Vue, or TypeScript)
  3. Extracts appropriate metadata based on detected framework
  4. 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

  1. Vue (if Vue imports detected) → Vue extraction
  2. Backend (if Express/NestJS detected) → Backend extraction
  3. React (default) → React extraction

Detection Logic

  • Express.js: Requires express import AND route patterns (app.get(), router.post(), etc.)
  • NestJS: Requires @nestjs import AND controller decorators (@Controller(), @Get(), etc.)
  • Vue: Requires vue import
  • React: Default fallback (or explicit react import)

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:module

Result: 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:component

Result: Each app and package is analyzed independently.

Usage

Scan Entire Monorepo

# From monorepo root stamp context # Or specify a path stamp context ./packages

Scan Specific Packages

# Backend only stamp context ./packages/backend # Frontend only stamp context ./packages/frontend # Both (from root) stamp context

Output 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 component

2. 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:api

Note: 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:module

Next Steps

Get started with LogicStamp Context or explore framework-specific guides.