feat: add basic webui
This commit is contained in:
101
packages/next-config/index.ts
Normal file
101
packages/next-config/index.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
import withBundleAnalyzer from '@next/bundle-analyzer';
|
||||
|
||||
import { env } from '@konobangu/env';
|
||||
import { withSentryConfig } from '@sentry/nextjs';
|
||||
import withVercelToolbar from '@vercel/toolbar/plugins/next';
|
||||
import type { NextConfig } from 'next';
|
||||
|
||||
const otelRegex = /@opentelemetry\/instrumentation/;
|
||||
|
||||
const baseConfig: NextConfig = {
|
||||
images: {
|
||||
formats: ['image/avif', 'image/webp'],
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'img.clerk.com',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// biome-ignore lint/suspicious/useAwait: rewrites is async
|
||||
async rewrites() {
|
||||
return [
|
||||
{
|
||||
source: '/ingest/static/:path*',
|
||||
destination: 'https://us-assets.i.posthog.com/static/:path*',
|
||||
},
|
||||
{
|
||||
source: '/ingest/:path*',
|
||||
destination: 'https://us.i.posthog.com/:path*',
|
||||
},
|
||||
{
|
||||
source: '/ingest/decide',
|
||||
destination: 'https://us.i.posthog.com/decide',
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
webpack(config, { isServer }) {
|
||||
if (isServer) {
|
||||
config.plugins = [...config.plugins];
|
||||
}
|
||||
|
||||
config.ignoreWarnings = [{ module: otelRegex }];
|
||||
|
||||
return config;
|
||||
},
|
||||
|
||||
// This is required to support PostHog trailing slash API requests
|
||||
skipTrailingSlashRedirect: true,
|
||||
};
|
||||
|
||||
export const config: NextConfig = env.FLAGS_SECRET
|
||||
? withVercelToolbar()(baseConfig)
|
||||
: baseConfig;
|
||||
|
||||
export const sentryConfig: Parameters<typeof withSentryConfig>[1] = {
|
||||
org: env.SENTRY_ORG,
|
||||
project: env.SENTRY_PROJECT,
|
||||
|
||||
// Only print logs for uploading source maps in CI
|
||||
silent: !process.env.CI,
|
||||
|
||||
/*
|
||||
* For all available options, see:
|
||||
* https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
|
||||
*/
|
||||
|
||||
// Upload a larger set of source maps for prettier stack traces (increases build time)
|
||||
widenClientFileUpload: true,
|
||||
|
||||
/*
|
||||
* Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.
|
||||
* This can increase your server load as well as your hosting bill.
|
||||
* Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-
|
||||
* side errors will fail.
|
||||
*/
|
||||
tunnelRoute: '/monitoring',
|
||||
|
||||
// Hides source maps from generated client bundles
|
||||
hideSourceMaps: true,
|
||||
|
||||
// Automatically tree-shake Sentry logger statements to reduce bundle size
|
||||
disableLogger: true,
|
||||
|
||||
/*
|
||||
* Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.)
|
||||
* See the following for more information:
|
||||
* https://docs.sentry.io/product/crons/
|
||||
* https://vercel.com/docs/cron-jobs
|
||||
*/
|
||||
automaticVercelMonitors: true,
|
||||
};
|
||||
|
||||
export const withSentry = (sourceConfig: NextConfig): NextConfig =>
|
||||
withSentryConfig(sourceConfig, sentryConfig);
|
||||
|
||||
export const withAnalyzer = (sourceConfig: NextConfig): NextConfig =>
|
||||
withBundleAnalyzer()(sourceConfig);
|
||||
|
||||
export { withLogtail } from '@logtail/next';
|
||||
16
packages/next-config/instrumentation.ts
Normal file
16
packages/next-config/instrumentation.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { env } from '@konobangu/env';
|
||||
import { init } from '@sentry/nextjs';
|
||||
|
||||
const opts = {
|
||||
dsn: env.NEXT_PUBLIC_SENTRY_DSN,
|
||||
};
|
||||
|
||||
export const initializeSentry = () => {
|
||||
if (env.NEXT_RUNTIME === 'nodejs') {
|
||||
init(opts);
|
||||
}
|
||||
|
||||
if (env.NEXT_RUNTIME === 'edge') {
|
||||
init(opts);
|
||||
}
|
||||
};
|
||||
21
packages/next-config/package.json
Normal file
21
packages/next-config/package.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "@konobangu/next-config",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"clean": "git clean -xdf .cache .turbo dist node_modules",
|
||||
"typecheck": "tsc --noEmit --emitDeclarationOnly false"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@konobangu/env": "workspace:*",
|
||||
"@konobangu/typescript-config": "workspace:*",
|
||||
"next": "^15.1.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@logtail/next": "^0.1.7",
|
||||
"@next/bundle-analyzer": "^15.1.0",
|
||||
"@prisma/nextjs-monorepo-workaround-plugin": "^6.0.1",
|
||||
"@sentry/nextjs": "^8.43.0",
|
||||
"@vercel/toolbar": "^0.1.28"
|
||||
}
|
||||
}
|
||||
8
packages/next-config/tsconfig.json
Normal file
8
packages/next-config/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "@konobangu/typescript-config/react-library.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "."
|
||||
},
|
||||
"include": ["**/*.ts", "**/*.tsx"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
Reference in New Issue
Block a user