chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
11
libs/shared/api-interface/README.md
Normal file
11
libs/shared/api-interface/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# api-interface
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build api-interface` to build the library.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `nx test api-interface` to execute the unit tests via [Vitest](https://vitest.dev/).
|
||||
22
libs/shared/api-interface/eslint.config.mjs
Normal file
22
libs/shared/api-interface/eslint.config.mjs
Normal file
@@ -0,0 +1,22 @@
|
||||
import baseConfig from '../../../eslint.config.mjs';
|
||||
|
||||
export default [
|
||||
...baseConfig,
|
||||
{
|
||||
files: ['**/*.json'],
|
||||
rules: {
|
||||
'@nx/dependency-checks': [
|
||||
'error',
|
||||
{
|
||||
ignoredFiles: [
|
||||
'{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}',
|
||||
'{projectRoot}/vitest.config.{js,ts,mjs,mts}',
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
languageOptions: {
|
||||
parser: await import('jsonc-eslint-parser'),
|
||||
},
|
||||
},
|
||||
];
|
||||
11
libs/shared/api-interface/package.json
Normal file
11
libs/shared/api-interface/package.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "@sar/api-interface",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
}
|
||||
19
libs/shared/api-interface/project.json
Normal file
19
libs/shared/api-interface/project.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "api-interface",
|
||||
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "libs/shared/api-interface/src",
|
||||
"projectType": "library",
|
||||
"tags": ["scope:shared", "type:util", "domain:shared"],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": ["{options.outputPath}"],
|
||||
"options": {
|
||||
"outputPath": "dist/libs/shared/api-interface",
|
||||
"main": "libs/shared/api-interface/src/index.ts",
|
||||
"tsConfig": "libs/shared/api-interface/tsconfig.lib.json",
|
||||
"assets": ["libs/shared/api-interface/*.md"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
libs/shared/api-interface/src/index.ts
Normal file
1
libs/shared/api-interface/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './lib/api-interface';
|
||||
7
libs/shared/api-interface/src/lib/api-interface.spec.ts
Normal file
7
libs/shared/api-interface/src/lib/api-interface.spec.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { apiInterface } from './api-interface';
|
||||
|
||||
describe('apiInterface', () => {
|
||||
it('should work', () => {
|
||||
expect(apiInterface()).toEqual('api-interface');
|
||||
});
|
||||
});
|
||||
3
libs/shared/api-interface/src/lib/api-interface.ts
Normal file
3
libs/shared/api-interface/src/lib/api-interface.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export function apiInterface(): string {
|
||||
return 'api-interface';
|
||||
}
|
||||
22
libs/shared/api-interface/tsconfig.json
Normal file
22
libs/shared/api-interface/tsconfig.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"importHelpers": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
},
|
||||
{
|
||||
"path": "./tsconfig.spec.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
23
libs/shared/api-interface/tsconfig.lib.json
Normal file
23
libs/shared/api-interface/tsconfig.lib.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": [
|
||||
"vite.config.ts",
|
||||
"vite.config.mts",
|
||||
"vitest.config.ts",
|
||||
"vitest.config.mts",
|
||||
"src/**/*.test.ts",
|
||||
"src/**/*.spec.ts",
|
||||
"src/**/*.test.tsx",
|
||||
"src/**/*.spec.tsx",
|
||||
"src/**/*.test.js",
|
||||
"src/**/*.spec.js",
|
||||
"src/**/*.test.jsx",
|
||||
"src/**/*.spec.jsx"
|
||||
]
|
||||
}
|
||||
22
libs/shared/api-interface/tsconfig.spec.json
Normal file
22
libs/shared/api-interface/tsconfig.spec.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../dist/out-tsc",
|
||||
"types": ["vitest/globals", "vitest/importMeta", "vite/client", "node", "vitest"]
|
||||
},
|
||||
"include": [
|
||||
"vite.config.ts",
|
||||
"vite.config.mts",
|
||||
"vitest.config.ts",
|
||||
"vitest.config.mts",
|
||||
"src/**/*.test.ts",
|
||||
"src/**/*.spec.ts",
|
||||
"src/**/*.test.tsx",
|
||||
"src/**/*.spec.tsx",
|
||||
"src/**/*.test.js",
|
||||
"src/**/*.spec.js",
|
||||
"src/**/*.test.jsx",
|
||||
"src/**/*.spec.jsx",
|
||||
"src/**/*.d.ts"
|
||||
]
|
||||
}
|
||||
21
libs/shared/api-interface/vitest.config.mts
Normal file
21
libs/shared/api-interface/vitest.config.mts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
|
||||
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
|
||||
|
||||
export default defineConfig(() => ({
|
||||
root: __dirname,
|
||||
cacheDir: '../../../node_modules/.vite/libs/shared/api-interface',
|
||||
plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
|
||||
test: {
|
||||
name: 'api-interface',
|
||||
watch: false,
|
||||
globals: true,
|
||||
environment: 'node',
|
||||
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
||||
reporters: ['default'],
|
||||
coverage: {
|
||||
reportsDirectory: '../../../coverage/libs/shared/api-interface',
|
||||
provider: 'v8' as const,
|
||||
},
|
||||
},
|
||||
}));
|
||||
Reference in New Issue
Block a user