Zaid Marzguioui
f10a34c505
fix: comprehensive CMS QA fixes — i18n, UI labels, breadcrumbs
...
Workflow / ʦ TypeScript (push) Failing after 6m6s
Workflow / ⚫️ Test (push) Has been skipped
- Fix i18n dotted permission keys causing INVALID_KEY console spam (en/de cms.json)
- Fix member detail breadcrumb showing UUID instead of member name
- Fix bookings stats card showing 'of' instead of 'Total'
- Fix events/registrations table 'status' column header resolving to object
- Fix finance search placeholder showing 'Show All' instead of search text
- Fix finance status filter default showing 'No data' instead of 'All'
- Fix applications page German pluralization 'Antrage' → 'Anträge'
- Add breadcrumbValues prop to CmsPageShell for UUID→name overrides
2026-04-02 22:59:42 +02:00
Zaid Marzguioui
0932c57fa1
fix: revert ctx→_ctx rename — ctx IS used for auth in server actions
...
Workflow / ʦ TypeScript (push) Failing after 6m13s
Workflow / ⚫️ Test (push) Has been skipped
The previous lint fix incorrectly renamed ctx to _ctx in server actions
that actually USE ctx.user.id for authorization. This caused runtime
'ctx is not defined' errors when creating pages, modules, etc.
Reverted all 13 action files back to using ctx properly.
2026-04-02 19:30:59 +02:00
Zaid Marzguioui
a1aa1bee86
fix: rename unused ctx params to _ctx, remove unused imports
...
Workflow / ʦ TypeScript (push) Failing after 5m38s
Workflow / ⚫️ Test (push) Has been skipped
- Fix 17 unused ctx params in module-builder, verbandsverwaltung, sitzungsprotokolle actions
- Remove unused CardDescription/CardHeader/CardTitle from pricing calculator
- Remove unused FileSignature import from layout
2026-04-02 19:25:01 +02:00
Zaid Marzguioui
a3be926f6f
fix(carousel): replace emoji lock with Lucide icon, widen container, fix tab overflow
...
Workflow / ʦ TypeScript (push) Failing after 6m6s
Workflow / ⚫️ Test (push) Has been skipped
- Replace 🔒 emoji with Lucide <Lock> icon (3x3, muted) for cleaner browser chrome
- Widen carousel from max-w-4xl to max-w-5xl so tabs have room
- Bottom tabs: shrink-0 + scrollbar-none + centered flex layout
- Labels show on lg+ screens, icons-only on smaller screens
- Slightly larger tab hit targets (px-3 py-1.5, text-[11px])
2026-04-02 19:09:46 +02:00
Zaid Marzguioui
4f40abdce4
fix: override text-right alignment on Why Choose Us section items
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
The EcosystemShowcase component forces text-right on children when
textPosition="right", causing WhyItem content to be right-aligned.
Added text-left on the wrapper div to fix alignment.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-02 19:08:13 +02:00
Zaid Marzguioui
d87fbb050f
feat: add feature carousel hero + enable Stripe billing
...
Workflow / ʦ TypeScript (push) Failing after 6m5s
Workflow / ⚫️ Test (push) Has been skipped
- Replace static dashboard screenshot with interactive feature carousel
9 slides: Dashboard, Mitglieder, Kurse, Finanzen, Veranstaltungen,
Newsletter, Website, Buchungen, Dokumente
Auto-advances every 6s, clickable sidebar + bottom tabs
Virtual app UI rendered with shadcn components (no images needed)
- Enable Stripe test mode billing
Add publishable key to .env.development, .env.production, docker-compose
Add secret key to .env.development and docker-compose
Add NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY to Dockerfile build args
2026-04-02 18:54:58 +02:00
Zaid Marzguioui
a6c9537195
feat(billing): update pricing tiers to MyEasyCMS plans (EUR)
...
Workflow / ʦ TypeScript (push) Failing after 6m2s
Workflow / ⚫️ Test (push) Has been skipped
Replace MakerKit sample billing config with actual MyEasyCMS tiers:
- Starter: 29€/mo (250 members) — Mitgliederverwaltung, SEPA, Website, Newsletter
- Pro: 59€/mo (1.000 members) — Kursverwaltung, Buchungen, unbegrenzte Benutzer
- Verband: 199€/mo (10.000 members) — Mehrebenen-Hierarchie, Verbandssuche
- Enterprise: 349€/mo (unlimited) — dedizierte Infrastruktur, SLA, API
All plans: EUR currency, German feature labels, yearly = ~2 months free.
Also update marketing i18n subtitles.
2026-04-02 16:13:54 +02:00
Zaid Marzguioui
da862f2194
feat(pricing): add competitor price comparison calculator
...
Workflow / ʦ TypeScript (push) Failing after 6m5s
Workflow / ⚫️ Test (push) Has been skipped
- Interactive slider for 50–10,000 members
- Real prices from SEWOBE, easyVerein, ClubDesk, WISO MeinVerein
- Bar chart comparing monthly/yearly costs
- Savings callout showing annual savings vs most expensive competitor
- Feature comparison table (Verband, Website, Kurse, SEPA, Support, etc.)
- SEWOBE Verband warning for 1000+ members
- Uses shadcn/ui components (Card, Badge, Button, Table)
- CTA linking to sign-up
- 4 tiers: Starter (29€), Pro (59€), Verband (199€), Enterprise (349€)
2026-04-02 15:32:55 +02:00
Zaid Marzguioui
0bd5d0cf42
fix: QA audit — lint cleanup, i18n fixes, module visibility, sidebar UX
...
Workflow / ʦ TypeScript (push) Failing after 5m40s
Workflow / ⚫️ Test (push) Has been skipped
- Fix 97 lint errors → 0 (unused imports, params, variables across 40+ files)
- Fix i18n key format: colon → dot notation for next-intl compatibility
- Add missing i18n keys (routes.application, routes.home, confirm)
- Fix module visibility: sidebar now respects per-account DB features
- Fix inject function: use dot-notation keys, add collapsed:true defaults
- Fix ConfirmDialog: use useTranslations instead of hardcoded German defaults
- Fix events page: replace placeholder 'Beschreibung' with proper description
- Fix Dockerfile: add NEXT_PUBLIC_CI ARG for Docker builds
- Collapse secondary sidebar sections by default for cleaner UX
2026-04-02 14:39:20 +02:00
T. Zehetbauer
c6d564836f
fix: add missing newlines at the end of JSON files; clean up formatting in page components
Workflow / ʦ TypeScript (push) Failing after 17m4s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-02 11:02:58 +02:00
Zaid Marzguioui
b26e5aaafa
feat: pre-existing local changes — fischerei, verband, modules, members, packages
...
Workflow / ʦ TypeScript (push) Failing after 6m20s
Workflow / ⚫️ Test (push) Has been skipped
Commits all remaining uncommitted local work:
- apps/web: fischerei, verband, modules, members-cms, documents,
newsletter, meetings, site-builder, courses, bookings, events,
finance pages and components
- apps/web: marketing page updates, layout, paths config,
next.config.mjs, styles/makerkit.css
- apps/web/i18n: documents, fischerei, marketing, verband (de+en)
- packages/features: finance, fischerei, member-management,
module-builder, newsletter, sitzungsprotokolle, verbandsverwaltung
server APIs and components
- packages/ui: button.tsx updates
- pnpm-lock.yaml
2026-04-02 01:19:54 +02:00
Zaid Marzguioui
a1719671df
fix: QA remediation — all 19 audit fixes (C+ → A-)
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
## Summary
Fixes all 31 ❌ FAILs and most ⚠️ WARNs from the QA audit (113✅ /33⚠️ /31❌ ).
## Changes
### FIX 1 — Loading Skeleton
- Replace full-screen GlobalLoader with PageBody-scoped animate-pulse skeleton
- Sidebar stays visible during page transitions
### FIX 2 — Status Badges i18n (15 files, 12 label maps)
- Add *_LABEL_KEYS maps to lib/status-badges.ts (i18n keys instead of German)
- Update all 15 consumer files to use t(*_LABEL_KEYS[status])
- Add status namespace to finance.json (de+en)
- Add registration_open to events.json status (de+en)
- Add status block to cms.json events section (de+en)
- Add missing pending/bounced keys to newsletter.json (de+en)
- Add active key to courses.json status (de+en)
### FIX 3 — Error Page i18n
- Replace 4 hardcoded German strings with useTranslations('common')
- Add error.* keys to common.json (de+en)
### FIX 4 — Account Not Found i18n
- Convert AccountNotFound to async Server Component
- Resolve default props from getTranslations('common')
- Add accountNotFoundCard.* keys to common.json (de+en)
### FIX 5 — Publish Toggle Button (6 strings + 2 bugs)
- Add useTranslations('siteBuilder'), replace 6 German strings
- Fix: add response.ok check before router.refresh()
- Fix: add disabled={isPending} to AlertDialogAction
- Fix: use Base UI render= prop pattern (not asChild)
- Add pages.hide/publish/hideTitle/publishTitle/hideDesc/publishDesc/
toggleError/cancelAction to siteBuilder.json (de+en)
### FIX 6 — Cancel Booking Button (7 strings + bugs)
- Add useTranslations('bookings'), replace all strings
- Fix: use render= prop pattern, add disabled={isPending}
- Add cancel.* and calendar.* keys to bookings.json (de+en)
### FIX 7 — Portal Pages i18n (5 files, ~40 strings)
- Create i18n/messages/de/portal.json and en/portal.json
- Add 'portal' to i18n/request.ts namespace list
- Rewrite portal/page.tsx, invite/page.tsx, profile/page.tsx,
documents/page.tsx with getTranslations('portal')
- Fix portal-linked-accounts.tsx: add useTranslations, replace
hardcoded strings, fix AlertDialogTrigger render= pattern
### FIX 8 — Invitations View (1 string)
- Replace hardcoded string with t('invitations.emptyDescription')
- Add key to members.json (de+en)
### FIX 9 — Dead Navigation Link
- Comment out memberPortal nav entry (page does not exist)
### FIX 10 — Calendar Button Accessibility
- Add aria-label + aria-hidden to all icon buttons in bookings/calendar
- Add aria-label + aria-hidden to all icon buttons in courses/calendar
- Add previousMonth/nextMonth/backToBookings/backToCourses to
bookings.json and courses.json (de+en)
### FIX 11 — Pagination Aria Labels
- Add aria-label to icon-only pagination buttons in finance/page.tsx
- Fix Link/Button nesting in newsletter/page.tsx, add aria-labels
- Add pagination.* to common.json (de+en)
- Add common.previous/next to newsletter.json (de+en)
### FIX 12 — Site Builder Type Safety
- Add SitePage interface, replace Record<string,unknown> in page.tsx
- Add SitePost interface, replace Record<string,unknown> in posts/page.tsx
- Remove String() casts on typed properties
### FIX 14 — EmptyState Heading Level
- Change <h3> to <h2> in empty-state.tsx (WCAG heading sequence)
### FIX 16 — CmsPageShell Nullish Coalescing
- Change description ?? <AppBreadcrumbs /> to !== undefined check
### FIX 17 — Meetings Protocol Hardcoded Strings
- Replace 5 hardcoded German strings with t() in protocol detail page
- Add notFound/back/backToList/statusPublished/statusDraft to meetings.json
### FIX 18 — Finance Toolbar Hardcoded Strings
- Replace toolbar filter labels with t() calls in finance/page.tsx
### FIX 19 — Admin Audit Hardcoded Strings
- Add getTranslations('cms.audit') to audit page
- Replace title, description, column headers, pagination labels
- Add description/timestamp/paginationPrevious/paginationNext to cms.json
## Verification
- tsc --noEmit: 0 errors
- Turbopack: Compiled successfully in 9.3s
- Lint: 0 new errors introduced
- All 8 audit verification checks pass
2026-04-02 01:18:15 +02:00
Zaid Marzguioui
a5bbf42901
Replace all marketing placeholder content with real MYeasyCMS content
...
Workflow / ʦ TypeScript (push) Failing after 6m12s
Workflow / ⚫️ Test (push) Has been skipped
- Logo: Replace generic Makerkit SVG with MYeasyCMS branded logo (grid icon + styled text)
- Blog: Replace 3 SaaS placeholder posts with 5 real articles (Vereinsverwaltung, SEPA, Website, DSGVO, Mitglieder-Tipps)
- Changelog: Replace 6 generic entries with real feature announcements (Verbandsverwaltung, Fischerei, Dateien, Kurse, Einladungen, i18n)
- Documentation: Rewrite all 20 docs from Makerkit references to MYeasyCMS content
- FAQ: Replace 6 generic SaaS questions with 10 real MYeasyCMS questions
- Navigation: Replace Changelog link with Contact in main nav
- Footer: Reorganize into Product/Company/Legal sections
- Translations: Update all EN marketing strings to match real Com.BISS content
2026-04-01 21:09:06 +02:00
T. Zehetbauer
bbb33aa63d
feat: add file upload and management features; enhance pagination and permissions handling
Workflow / ʦ TypeScript (push) Failing after 5m43s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 20:13:15 +02:00
T. Zehetbauer
db4e19c3af
feat: add invitations management and import wizard; enhance audit logging and member detail fetching
Workflow / ʦ TypeScript (push) Failing after 4m53s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 19:02:55 +02:00
T. Zehetbauer
080ec1cb47
feat: add delete functionality for leases, catch books, and permits; implement newsletter update feature
Workflow / ʦ TypeScript (push) Failing after 4m52s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 17:53:39 +02:00
T. Zehetbauer
c6b2824da8
feat: add update and delete functionality for courses, events, and species; enhance attendance tracking and category creation
Workflow / ʦ TypeScript (push) Failing after 4m53s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 16:03:50 +02:00
T. Zehetbauer
7b078f298b
feat: enhance API response handling and add new components for module management
Workflow / ʦ TypeScript (push) Failing after 4m50s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 15:18:24 +02:00
T. Zehetbauer
f82a366a52
Merge remote-tracking branch 'origin/main'
Workflow / ʦ TypeScript (push) Failing after 4m51s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 14:05:13 +02:00
Zaid Marzguioui
49fd6b65b9
fix(supabase): use internal URL for all server-side clients with cookie name matching
...
Workflow / ʦ TypeScript (push) Failing after 5m38s
Workflow / ⚫️ Test (push) Has been skipped
ROOT CAUSE FIX: All server-side Supabase clients (server-client, middleware-client,
server-admin-client) now use SUPABASE_INTERNAL_URL (http://supabase-kong:8000 )
when available, with cookieOptions.name set to match the external URL's cookie key
(e.g. sb-myeasycms-auth-token). This gives us:
- Reliable Docker-internal networking (no hairpin NAT through Traefik)
- Correct session cookie matching between browser and server
- No more 500 errors on SSR pages that query Supabase
Reverted per-page try/catch workarounds since root cause is now fixed.
2026-04-01 13:53:59 +02:00
T. Zehetbauer
5e1976f07b
Merge remote-tracking branch 'origin/main'
2026-04-01 13:48:10 +02:00
Zaid Marzguioui
4aa11cd408
fix: add error handling to meetings + verband dashboard pages
...
Workflow / ʦ TypeScript (push) Failing after 5m47s
Workflow / ⚫️ Test (push) Has been skipped
SSR pages crash with 500 when Supabase queries fail (expired session,
network issues). Now catch errors and render with empty data instead
of crashing the entire page.
2026-04-01 13:40:02 +02:00
T. Zehetbauer
a5baaae12f
Merge remote-tracking branch 'origin/main'
Workflow / ʦ TypeScript (push) Failing after 4m52s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 13:33:58 +02:00
T. Zehetbauer
c98cada7f6
refactor: improve code readability and consistency in api.ts and common.json
2026-04-01 13:33:43 +02:00
Zaid Marzguioui
9484ba91f8
fix(db): add explicit GRANT permissions for all CMS module tables
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
The REVOKE+GRANT pattern in migrations can fail if a previous migration run
partially succeeded. Adding explicit GRANTs to dev-bootstrap.sh ensures all
tables have correct permissions on every deploy. Fixes 500 error on
Sitzungsprotokolle (meeting_protocol_items permission denied).
2026-04-01 13:32:32 +02:00
T. Zehetbauer
2a9d543ee4
Merge remote-tracking branch 'origin/main'
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
# Conflicts:
# docker-compose.yml
2026-04-01 13:30:00 +02:00
Zaid Marzguioui
5294cfab61
feat: enable Fischerei, Sitzungsprotokolle, Verbandsverwaltung modules
...
Workflow / ʦ TypeScript (push) Failing after 5m44s
Workflow / ⚫️ Test (push) Has been skipped
- 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
2026-04-01 13:23:57 +02:00
T. Zehetbauer
98afe6aa5f
feat: enhance accessibility and testing with data-test attributes and improve error handling
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
2026-04-01 13:22:23 +02:00
T. Zehetbauer
da8a43a3b0
Merge remote-tracking branch 'origin/main'
...
# Conflicts:
# apps/web/app/[locale]/home/[account]/_components/team-account-layout-mobile-navigation.tsx
# packages/features/course-management/src/server/api.ts
# packages/features/event-management/src/server/api.ts
# packages/supabase/src/get-supabase-client-keys.ts
# pnpm-lock.yaml
2026-04-01 13:22:17 +02:00
Zaid Marzguioui
8d8f4e94ee
fix(api): convert empty strings to null for date/optional DB columns
...
Workflow / ʦ TypeScript (push) Failing after 5m37s
Workflow / ⚫️ Test (push) Has been skipped
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).
2026-04-01 13:14:53 +02:00
Zaid Marzguioui
72227b5aab
fix(auth): revert SUPABASE_INTERNAL_URL — cookie name mismatch
...
Workflow / ʦ TypeScript (push) Failing after 6m17s
Workflow / ⚫️ Test (push) Has been skipped
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.
2026-04-01 11:42:00 +02:00
Zaid Marzguioui
0aa2773086
fix(docker): fix EACCES on .next/cache/images — chown for nextjs user
Workflow / ʦ TypeScript (push) Failing after 5m35s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 11:33:06 +02:00
Zaid Marzguioui
08357f568e
fix(docker): actually use CACHE_BUST ARG to bust Docker layer cache
...
Workflow / ʦ TypeScript (push) Failing after 5m29s
Workflow / ⚫️ Test (push) Has been skipped
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.
2026-04-01 11:22:24 +02:00
Zaid Marzguioui
b2c9503749
fix(proxy): graceful error handling when Supabase is unreachable
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
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.
2026-04-01 11:18:44 +02:00
Zaid Marzguioui
1687735de0
fix: merge upstream, fix locale duplicate, add missing catalog deps
...
Workflow / ʦ TypeScript (push) Failing after 12m20s
Workflow / ⚫️ Test (push) Has been skipped
- Merged upstream/main (MakerKit latest fixes)
- Fixed locales.tsx: removed hardcoded 'de' duplicate (defaultLocale already = 'de')
- Added missing pnpm catalog entries for custom packages:
@measured/puck, @react-pdf/renderer, @tiptap/*, exceljs, iban, papaparse
- CACHE_BUST=7 for full rebuild
2026-04-01 11:02:06 +02:00
Zaid Marzguioui
8d9d62ca56
merge: upstream/main — latest MakerKit fixes and dependency updates
2026-04-01 10:56:45 +02:00
T. Zehetbauer
abac22feb1
feat: enhance accessibility and testing with data-test attributes and improve error handling
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
2026-04-01 10:46:44 +02:00
T. Zehetbauer
3bcc5c70a3
feat: add data-test attributes for improved testing in various components
2026-04-01 10:23:35 +02:00
T. Zehetbauer
fd8c2cc32a
feat: add cross-organization member search and template cloning functionality
2026-04-01 10:15:35 +02:00
T. Zehetbauer
d3db316a68
Merge remote-tracking branch 'origin/main'
2026-04-01 09:31:25 +02:00
Zaid Marzguioui
c9f8101698
fix(docker): add SUPABASE_INTERNAL_URL for server-side Supabase access
...
Workflow / ʦ TypeScript (push) Failing after 6m31s
Workflow / ⚫️ Test (push) Has been skipped
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).
2026-03-31 22:55:15 +02:00
Zaid Marzguioui
d27fab7505
fix: remove conflicting middleware.ts, proxy.ts already handles locale routing
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
Next.js 16 uses proxy.ts instead of middleware.ts. The existing proxy.ts
already includes next-intl locale routing + auth guards. CACHE_BUST=5.
2026-03-31 22:49:35 +02:00
Zaid Marzguioui
4450776826
fix(i18n): add next-intl middleware for locale routing
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
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.
2026-03-31 22:47:55 +02:00
Zaid Marzguioui
e263bd93f8
fix(docker): restore runtime NEXT_PUBLIC vars, add DEFAULT_LOCALE build arg
...
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
- 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
2026-03-31 22:44:06 +02:00
T. Zehetbauer
2f80d5cc4a
Merge remote-tracking branch 'origin/main'
...
# Conflicts:
# docker-compose.yml
2026-03-31 22:19:42 +02:00
Zaid Marzguioui
f3f54da726
fix(docker): remove runtime NEXT_PUBLIC_SUPABASE_URL override
...
Workflow / ʦ TypeScript (push) Failing after 5m36s
Workflow / ⚫️ Test (push) Has been skipped
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.
2026-03-31 22:18:05 +02:00
T. Zehetbauer
59546ad6d2
Add account hierarchy framework with migrations, RLS policies, and UI components
2026-03-31 22:18:04 +02:00
Zaid Marzguioui
7e7da0b465
fix(docker): bust cache to rebuild with correct SUPABASE_URL
...
Workflow / ʦ TypeScript (push) Failing after 5m33s
Workflow / ⚫️ Test (push) Has been skipped
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.
2026-03-31 21:59:23 +02:00
Zaid Marzguioui
1fbe8a630c
fix(docker): remove network_mode for Dokploy compatibility
...
Workflow / ʦ TypeScript (push) Failing after 5m32s
Workflow / ⚫️ Test (push) Has been skipped
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
2026-03-31 18:48:59 +02:00
Zaid Marzguioui
cae6657c53
fix(docker): simplify migrate command, remove heredoc
...
Workflow / ʦ TypeScript (push) Failing after 5m36s
Workflow / ⚫️ Test (push) Has been skipped
Replace shell heredoc with multiple -c flags for psql. Heredoc syntax
can cause issues in some Docker Compose implementations.
2026-03-31 18:39:25 +02:00