🔧 chore: enforce monorepo best practices with automated validation

Fix critical issues and add validation to prevent future violations:

**Fixes:**
- Remove turbo recursion in 5 app packages (infinite loop risk)
- Add "private": true to 11 packages (prevent accidental publishing)
- Rename @mana-core/nestjs-integration → @manacore/nestjs-integration
- Remove prepublishOnly scripts from 3 private packages

**New:**
- Add scripts/validate-monorepo.mjs with 4 critical checks
- Add validate:monorepo command to package.json
- Integrate validation into CI pipeline (.github/workflows/ci.yml)
- Document validation in CLAUDE.md

All 80 package.json files now pass validation 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Wuesteon 2025-12-25 17:57:00 +01:00
parent 079b55a796
commit 5b7d3c649b
29 changed files with 304 additions and 25 deletions

View file

@ -4,7 +4,7 @@
"private": true,
"description": "Calendar App - Personal and Shared Calendars with CalDAV/iCal Sync",
"scripts": {
"dev": "turbo run dev",
"dev": "pnpm run --filter=@calendar/* --parallel dev",
"dev:backend": "pnpm --filter @calendar/backend dev",
"dev:web": "pnpm --filter @calendar/web dev",
"dev:landing": "pnpm --filter @calendar/landing dev",

View file

@ -4,6 +4,6 @@
"private": true,
"description": "Chat project - AI chat application with mobile, web and landing",
"scripts": {
"dev": "turbo run dev"
"dev": "pnpm run --filter=@chat/* --parallel dev"
}
}

View file

@ -4,7 +4,7 @@
"private": true,
"description": "Contacts App - Contact Management with Manacore Integration",
"scripts": {
"dev": "turbo run dev",
"dev": "pnpm run --filter=@contacts/* --parallel dev",
"dev:backend": "pnpm --filter @contacts/backend dev",
"dev:web": "pnpm --filter @contacts/web dev",
"dev:landing": "pnpm --filter @contacts/landing dev",

View file

@ -3,6 +3,6 @@
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "turbo run dev"
"dev": "pnpm --filter @context/mobile dev"
}
}

View file

@ -21,7 +21,7 @@
"test:e2e": "jest --config ./test/jest-e2e.json"
},
"dependencies": {
"@mana-core/nestjs-integration": "workspace:*",
"@manacore/nestjs-integration": "workspace:*",
"@manacore/shared-errors": "workspace:*",
"@google/genai": "^1.14.0",
"@manacore/manadeck-database": "workspace:*",

View file

@ -3,7 +3,7 @@ import { ConfigModule, ConfigService } from '@nestjs/config';
import { ClsModule } from 'nestjs-cls';
import { TerminusModule } from '@nestjs/terminus';
import { HttpModule } from '@nestjs/axios';
import { ManaCoreModule } from '@mana-core/nestjs-integration';
import { ManaCoreModule } from '@manacore/nestjs-integration';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ApiController } from './controllers/api.controller';

View file

@ -11,9 +11,9 @@ import {
Logger,
BadRequestException,
} from '@nestjs/common';
import { AuthGuard } from '@mana-core/nestjs-integration/guards';
import { CurrentUser } from '@mana-core/nestjs-integration/decorators';
import { CreditClientService } from '@mana-core/nestjs-integration';
import { AuthGuard } from '@manacore/nestjs-integration/guards';
import { CurrentUser } from '@manacore/nestjs-integration/decorators';
import { CreditClientService } from '@manacore/nestjs-integration';
import { isOk, CreditError, ServiceError } from '@manacore/shared-errors';
import {
CreditOperationType,

View file

@ -1,7 +1,7 @@
import { Controller, Get } from '@nestjs/common';
import { HealthCheckService, HttpHealthIndicator, HealthCheck } from '@nestjs/terminus';
import { ConfigService } from '@nestjs/config';
import { Public } from '@mana-core/nestjs-integration/decorators';
import { Public } from '@manacore/nestjs-integration/decorators';
@Controller('health')
export class HealthController {

View file

@ -1,6 +1,6 @@
import { Controller, Get, UseGuards, Query, Logger } from '@nestjs/common';
import { OptionalAuthGuard } from '@mana-core/nestjs-integration/guards';
import { CurrentUser, Public } from '@mana-core/nestjs-integration/decorators';
import { OptionalAuthGuard } from '@manacore/nestjs-integration/guards';
import { CurrentUser, Public } from '@manacore/nestjs-integration/decorators';
import { DeckRepository, UserStatsRepository, DeckTemplateRepository } from '../database';
@Controller('public')

View file

@ -19,7 +19,7 @@
},
"dependencies": {
"@aws-sdk/client-s3": "^3.700.0",
"@mana-core/nestjs-integration": "workspace:*",
"@manacore/nestjs-integration": "workspace:*",
"@manacore/shared-errors": "workspace:*",
"@manacore/shared-nestjs-auth": "workspace:*",
"@manacore/shared-nestjs-cors": "workspace:*",

View file

@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ManaCoreModule } from '@mana-core/nestjs-integration';
import { ManaCoreModule } from '@manacore/nestjs-integration';
import { DatabaseModule } from './db/database.module';
import { HealthModule } from './health/health.module';
import { ModelModule } from './model/model.module';

View file

@ -9,7 +9,7 @@ import {
} from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { eq } from 'drizzle-orm';
import { CreditClientService } from '@mana-core/nestjs-integration';
import { CreditClientService } from '@manacore/nestjs-integration';
import { DATABASE_CONNECTION } from '../db/database.module';
import { Database } from '../db/connection';
import { imageGenerations, images, models } from '../db/schema';

View file

@ -4,13 +4,10 @@
"private": true,
"description": "Todo App - Task Management for ManaCore Ecosystem",
"scripts": {
"dev": "turbo run dev",
"dev": "pnpm run --filter=@todo/* --parallel dev",
"dev:backend": "pnpm --filter @todo/backend dev",
"dev:web": "pnpm --filter @todo/web dev",
"dev:landing": "pnpm --filter @todo/landing dev",
"build": "turbo run build",
"lint": "turbo run lint",
"clean": "turbo run clean",
"db:push": "pnpm --filter @todo/backend db:push",
"db:studio": "pnpm --filter @todo/backend db:studio",
"db:seed": "pnpm --filter @todo/backend db:seed"