feat(P0-001): scaffold monorepo structure (#60)

Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #60.
This commit is contained in:
2026-03-13 01:11:46 +00:00
committed by jason.woltje
parent 339641352e
commit 6d0d288e31
99 changed files with 5926 additions and 157 deletions

26
apps/gateway/package.json Normal file
View File

@@ -0,0 +1,26 @@
{
"name": "@mosaic/gateway",
"version": "0.0.0",
"private": true,
"main": "dist/main.js",
"scripts": {
"build": "tsc",
"dev": "tsc --watch",
"lint": "eslint src",
"typecheck": "tsc --noEmit",
"test": "vitest run"
},
"dependencies": {
"@nestjs/common": "^11.0.0",
"@nestjs/core": "^11.0.0",
"@nestjs/platform-fastify": "^11.0.0",
"fastify": "^5.0.0",
"reflect-metadata": "^0.2.0",
"rxjs": "^7.8.0"
},
"devDependencies": {
"@types/node": "^22.0.0",
"typescript": "^5.8.0",
"vitest": "^2.0.0"
}
}

View File

@@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { HealthController } from './health/health.controller.js';
@Module({
controllers: [HealthController],
})
export class AppModule {}

View File

@@ -0,0 +1,9 @@
import { Controller, Get } from '@nestjs/common';
@Controller('health')
export class HealthController {
@Get()
check(): { status: string } {
return { status: 'ok' };
}
}

16
apps/gateway/src/main.ts Normal file
View File

@@ -0,0 +1,16 @@
import 'reflect-metadata';
import { NestFactory } from '@nestjs/core';
import { FastifyAdapter, type NestFastifyApplication } from '@nestjs/platform-fastify';
import { AppModule } from './app.module.js';
async function bootstrap(): Promise<void> {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
await app.listen(4000, '0.0.0.0');
console.log('Gateway listening on port 4000');
}
bootstrap().catch((err: unknown) => {
console.error(err);
process.exit(1);
});

View File

@@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "CommonJS",
"moduleResolution": "Node"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}

View File

@@ -0,0 +1,8 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
environment: 'node',
},
});