- Multi-stage Dockerfiles for API (NestJS) and Web (Next.js standalone) - docker-compose.prod.yml: full production stack (postgres, redis, keycloak, api, web) with optional Caddy/Let's Encrypt via --profile ssl - docker-compose.local.yml: identical local test stack, all ports exposed - docker/postgres/init.sql: auto-creates tos_app DB on first start - Caddyfile: reverse proxy for app domain + auth subdomain - install.sh: interactive installer (domain, SSL mode, secret generation) - NestJS SetupModule: @Public() endpoints for /setup/status, /setup/admin, /setup/branding, /setup/complete with setup-token guard - Web installer: 4-step flow (system check, admin creation, branding, complete) at /[locale]/setup/* with public middleware bypass - i18n: installer namespace added to de.json and en.json - CORS: x-setup-token header allowed in main.ts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
870 B
JavaScript
35 lines
870 B
JavaScript
import createNextIntlPlugin from 'next-intl/plugin';
|
|
|
|
const withNextIntl = createNextIntlPlugin('./src/i18n.ts');
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
// Enable React strict mode for better development experience
|
|
reactStrictMode: true,
|
|
|
|
// Standalone output for Docker deployment
|
|
// Erzeugt ein eigenstaendiges Build-Artefakt mit allen Abhaengigkeiten
|
|
output: 'standalone',
|
|
|
|
// Configure image optimization
|
|
images: {
|
|
remotePatterns: [
|
|
{
|
|
protocol: 'https',
|
|
hostname: '*.gravatar.com',
|
|
},
|
|
],
|
|
},
|
|
|
|
// Transpile packages for monorepo
|
|
transpilePackages: ['@tos/shared'],
|
|
|
|
// Experimental features
|
|
experimental: {
|
|
// Optimize package imports for better tree-shaking
|
|
optimizePackageImports: ['lucide-react', '@radix-ui/react-icons'],
|
|
},
|
|
};
|
|
|
|
export default withNextIntl(nextConfig);
|