- Copy admin-dashboard-web → dashboards/admin-web - Copy tracker-dashboard-web → dashboards/tracker-web - Update pnpm-workspace.yaml to include dashboards/* - Replace file: refs with workspace:* for @bytelyst/* packages - Replace all hardcoded LysnrAI/lysnn.com branding with generic platform refs - Make telemetry use NEXT_PUBLIC_PRODUCT_ID / PRODUCT_ID env vars - Update mock credentials, seed data, invitation codes, placeholders - Update READMEs, e2e tests, unit tests for product-agnostic content - Both dashboards pass tsc --noEmit clean
52 lines
1.1 KiB
TypeScript
52 lines
1.1 KiB
TypeScript
import type { NextConfig } from 'next';
|
|
|
|
const securityHeaders = [
|
|
{
|
|
key: 'X-Frame-Options',
|
|
value: 'DENY',
|
|
},
|
|
{
|
|
key: 'X-Content-Type-Options',
|
|
value: 'nosniff',
|
|
},
|
|
{
|
|
key: 'X-XSS-Protection',
|
|
value: '1; mode=block',
|
|
},
|
|
{
|
|
key: 'Referrer-Policy',
|
|
value: 'strict-origin-when-cross-origin',
|
|
},
|
|
];
|
|
|
|
const nextConfig: NextConfig = {
|
|
...(process.env.VERCEL ? {} : { output: 'standalone' }),
|
|
async headers() {
|
|
return [
|
|
{
|
|
source: '/(.*)',
|
|
headers: securityHeaders,
|
|
},
|
|
];
|
|
},
|
|
webpack: config => {
|
|
// Handle file: references for @bytelyst packages
|
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
const path = require('path');
|
|
config.resolve.alias = {
|
|
...config.resolve.alias,
|
|
'@bytelyst/api-client': path.resolve(
|
|
__dirname,
|
|
'../../learning_ai_common_plat/packages/api-client/dist/index.js'
|
|
),
|
|
'@bytelyst/errors': path.resolve(
|
|
__dirname,
|
|
'../../learning_ai_common_plat/packages/errors/dist/index.js'
|
|
),
|
|
};
|
|
return config;
|
|
},
|
|
};
|
|
|
|
export default nextConfig;
|