- Enable all 3 modules via NEXT_PUBLIC_ENABLE_* build args + runtime env
- Fix empty-string-to-null for date/optional columns in all module APIs:
fischerei (24 fixes), verbandsverwaltung (15 fixes), sitzungsprotokolle (2 fixes)
- CACHE_BUST=12 for full rebuild with new feature flags
Course and event creation Server Actions were failing with 'Something went
wrong' because empty form strings ('') were being inserted into date/uuid
columns which reject empty strings. Now converts '' to null for all
optional fields (dates, descriptions, IDs, contact info).
Browser creates cookies keyed by the external hostname (sb-myeasycms-*),
but server was using SUPABASE_INTERNAL_URL (sb-supabase-kong-*) — different
keys = server can't find the session = infinite 'please wait' after login.
Both client and server now use the same NEXT_PUBLIC_SUPABASE_URL (external
domain). The SSR reaches Supabase via Traefik → Kong which works fine.
The ARG was defined but never used in a RUN/ENV command, so Docker
ignored value changes and kept using cached COPY layers from the
very first build. Adding 'RUN echo' forces cache invalidation.
Wrap getUser() calls in proxy.ts with try/catch so the proxy doesn't
crash when the Supabase client can't connect. Without this, the proxy
fails silently and Next.js returns 404 for all locale-dependent routes
(/auth/sign-in, /join, etc.) because the locale rewrite never happens.
Server-side code (proxy.ts, SSR, API routes) now uses SUPABASE_INTERNAL_URL
(http://supabase-kong:8000) instead of the external domain. This avoids
hairpin NAT / DNS resolution issues where Docker containers can't reach
their own external domain through the reverse proxy.
Browser-side JS still uses the external URL (baked at build time).
The middleware was deleted in the Next.js 16 upgrade but is still required
by next-intl to handle locale detection and URL rewriting. Without it,
/auth/sign-in can't resolve to [locale=de]/auth/sign-in → 404.
Uses createMiddleware from next-intl/middleware with the shared routing config.
- Restore NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_PUBLIC_KEY at runtime
(server code reads from process.env — needs these for SSR)
- Use external URL (API_EXTERNAL_URL) for both build and runtime
- Add NEXT_PUBLIC_DEFAULT_LOCALE=de as Dockerfile build arg so next-intl
compiles with the correct default locale (was falling back to 'en')
- CACHE_BUST=3 to force full rebuild
NEXT_PUBLIC_ vars are baked into the Next.js bundle at build time.
Setting them at runtime with Docker-internal URLs (http://supabase-kong:8000)
causes SSR to fail with 500 because RSC uses the runtime value which
is unreachable from the browser. Let the build-time value
(https://myeasycms.frontieralgorithmics.de) be used everywhere.
CACHE_BUST=1→2 forces Docker to re-run 'pnpm install' and 'next build'
so NEXT_PUBLIC_SUPABASE_URL=https://myeasycms.frontieralgorithmics.de
gets baked into the client-side JS bundle.
Dokploy injects 'networks' into all compose services for Traefik routing,
which is mutually exclusive with 'network_mode: service:supabase-kong'.
Changes:
- Remove network_mode from app service
- App server-side Supabase URL: http://supabase-kong:8000 (Docker DNS)
- App browser-side Supabase URL: ${API_EXTERNAL_URL} (external domain)
- Kong catch-all route: app:3000 instead of localhost:3000
- PostgREST: replace wget healthcheck with TCP socket check — PostgREST
v12 is a minimal image without wget/curl
- All services: add start_period to healthchecks to avoid premature
unhealthy marking during initial startup
PostgREST, Auth, Realtime, Storage, and Meta were starting before db-migrate
set role passwords. On existing volumes (where initdb didn't re-run),
these services would fail to authenticate to Postgres. Now all services
wait for db-migrate to complete successfully before starting.
Dokploy deployment fixes:
- Remove all host port bindings (Kong 8000/8443/3000, Studio 54323, Inbucket 54324,
DB 5432) — Traefik handles external routing in Dokploy, host ports conflict
with other services on the shared server
- Add idempotent ALTER ROLE password commands to db-migrate service — ensures
role passwords are set even when DB volume persists across deployments
(docker-entrypoint-initdb.d only runs on empty data dirs)
- Add catch-all app route to Kong config — proxies / to localhost:3000
(Next.js app via network_mode: service:supabase-kong)
- Dockerfile: replace hardcoded NEXT_PUBLIC env vars with ARG+ENV pattern
so the same Dockerfile works for any environment (local dev, Dokploy prod)
- docker-compose.yml: pass SUPABASE_ANON_KEY as build arg to Dockerfile
- docker-compose.yml: remove DB port 5432 exposure (not needed on server,
services communicate via Docker network)
- Updated version to 3.1.1 in package.json.
- Refactored mobile navigation components to enhance structure and usability.
- Adjusted layout components to improve responsiveness and visual consistency.
- Introduced shared mobile navigation components for better code reuse.
* chore: bump version to 3.1.0 and update dependencies in package.json, pnpm-lock.yaml, and pnpm-workspace.yaml; enhance billing services with support for hosted checkout page in Stripe integration
* Enhance error handling in billing services to log error messages instead of objects; update documentation for Stripe integration to clarify publishable key requirements based on UI mode.
* Refactor localization keys to use dot notation for consistency across documentation and components
* chore: bump version to 3.0.1 in package.json
* Remove console log from SidebarLayout and update migration documentation for AlertDialog usage within Dropdowns
* Update dashboard image to improve visual assets
Version 3 of the kit:
- Radix UI replaced with Base UI (using the Shadcn UI patterns)
- next-intl replaces react-i18next
- enhanceAction deprecated; usage moved to next-safe-action
- main layout now wrapped with [locale] path segment
- Teams only mode
- Layout updates
- Zod v4
- Next.js 16.2
- Typescript 6
- All other dependencies updated
- Removed deprecated Edge CSRF
- Dynamic Github Action runner
* 2.24.1
- Updated dependencies
- MCP Server: better compatibility with Windows
- MCP Server: allow using a custom root for better flexibility
- Version Check: use package.json version instead of number of commits
- Prettier: reformatted some files
- Add SSH_AUTH_SOCK to dev passThroughEnv to solve SSH issues; handle execSync errors
- Use GIT_SSH to fix SSH issues on Windows
- Updated Stripe version
- Updated application version from 2.24.0 to 2.24.1 in package.json.
- Enhanced error handling in billing services to include error causes for better debugging.
* MCP Server 2.0
- Updated application version from 2.23.14 to 2.24.0 in package.json.
- MCP Server improved with new features
- Migrated functionality from Dev Tools to MCP Server
- Improved getMonitoringProvider not to crash application when misconfigured
- Updated application version from 2.23.13 to 2.23.14 in package.json.
- Refactored error handling components in web app to utilize a new ErrorPageContent component for improved code organization and readability.
- Simplified error and not found page layouts by removing redundant code and enhancing localization keys for better user experience.
* chore: bump version to 2.23.13 and update dependencies
- Updated application version from 2.23.12 to 2.23.13 in package.json.
- Upgraded several dependencies including @marsidev/react-turnstile to 1.4.2, @next/bundle-analyzer to 16.1.6, @next/eslint-plugin-next to 16.1.6, and others for improved functionality and security.
- Adjusted package versions in pnpm-lock.yaml and pnpm-workspace.yaml for consistency across the project.
- Removed unused AI translation functionality from translations-comparison component to streamline the codebase.
* refactor: clean up code formatting and update Stripe API version
- Removed unnecessary blank lines in LineItemDetails component for improved readability.
- Enhanced formatting in PricingItem component for better clarity.
- Updated Stripe API version from '2025-12-15.clover' to '2026-01-28.clover' for compatibility with the latest features.
- Adjusted i18n initialization in email templates for consistency.
- Reformatted props in AdminReactivateUserDialog for better structure.
- Cleaned up type imports in ImageUploadInput component.
* chore: bump version to 2.23.12 and update billing localization
- Updated application version from 2.23.11 to 2.23.12 in package.json.
- Added new localization key for billing: "perUnitShort" to enhance user clarity in billing plans.
- Improved unit label handling in LineItemDetails and Tiers components for better internationalization support.
- Adjusted pricing table to conditionally display unit labels based on item type.
* fix(billing): update pluralization in billing localization and component logic
- Adjusted the localization key for "fromPreviousTierUpTo" to include pluralization support for unit labels.
- Enhanced the LineItemDetails component to calculate and display the range count between previous and current tiers, improving clarity in billing information.
* chore: bump version to 2.23.10 and enhance workspace loading logic
- Updated application version from 2.23.9 to 2.23.10 in package.json.
- Refactored workspace loading functions to use async/await for improved error handling and added redirects for missing workspaces or users.
- Updated sidebar layout components to handle asynchronous data fetching and redirection more effectively.
- Minor adjustments to personal account dropdown styles for consistency.
* refactor: remove unused import from load-user-workspace.ts
- Removed the unused 'forbidden' import from the load-user-workspace.ts file to clean up the code and improve readability.
* refactor: remove debug log from workspaceLoader function
- Removed the console.log statement for workspace and user in the load-user-workspace.ts file to clean up the code and improve performance.
* chore: bump version to 2.23.11 and update dependencies
- Updated application version from 2.23.10 to 2.23.11 in package.json.
- Upgraded prettier to version 3.8.1.
- Updated various dependencies including @next/bundle-analyzer to 16.1.4, @next/eslint-plugin-next to 16.1.4, @react-email/components to 1.0.6, @stripe/stripe-js to 8.6.4, and @supabase/supabase-js to 2.91.1.
- Improved type support by upgrading @types/node to 25.0.10 and @types/react to 19.2.9.
- Enhanced i18next to version 25.8.0 for better localization support.
* chore: update dependencies and improve package configurations
- Bumped versions of several packages including @turbo/gen and turbo to 2.7.6, @next/bundle-analyzer and @next/eslint-plugin-next to 16.1.5, and @stripe/react-stripe-js to 5.5.0.
- Updated @supabase/supabase-js to 2.93.1 and added @sentry/nextjs to the workspace.
- Changed nodemailer and related types to use catalog references for better dependency management.
- Refactored global styles to include tw-animate-css and removed the old tailwindcss-animate plugin.
- Enhanced type definitions for eslint and related packages.
* chore: update pnpm-lock.yaml with new dependencies and version adjustments
- Added new dependencies: @sentry/nextjs (10.37.0), @types/eslint (9.6.1), @types/nodemailer (7.0.9), eslint (9.39.2), and eslint-config-turbo (2.7.6).
- Updated nodemailer to version 7.0.12 and adjusted its specifier to use catalog references.
- Changed the specifier for several packages to 'catalog:' for improved dependency management.
- Removed outdated references to eslint-community/eslint-utils version 4.9.0.
* feat: enhance user dialog components with success callbacks
- Added state management for open/close functionality in AdminBanUserDialog and AdminReactivateUserDialog.
- Updated BanUserForm and ReactivateUserForm to accept an onSuccess prop, allowing the dialog to close upon successful user action.