- login page (Supabase email/password sign-in + sign-up) - onboarding: create first tenant, redirects into /dashboard once a membership exists - dashboard shell: sidebar nav, tenant switcher (x-tenant-id header, never in body/query -- matches ceo-api's TenantGuard), sign out - Organizations, Tasks, and Team (members/RBAC) pages wired to ceo-api via a thin apiFetch wrapper that attaches the Supabase bearer token - executive "paper & ink" design tokens (Tailwind) replacing defaults - Dockerfile: declare NEXT_PUBLIC_* as build ARGs so Coolify's existing build-time env vars actually get inlined (was previously silently dropped, which would have crashed prerendering)
24 lines
867 B
Docker
24 lines
867 B
Docker
FROM node:22-alpine AS build
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --legacy-peer-deps --include=dev
|
|
COPY . .
|
|
# NEXT_PUBLIC_* sunt inlinite in bundle la build time, nu citite la runtime;
|
|
# Coolify le are configurate ca build-time variables (is_buildtime=true) si le
|
|
# injecteaza automat ca --build-arg pentru un Dockerfile care le declara ARG.
|
|
ARG NEXT_PUBLIC_SUPABASE_URL
|
|
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
|
|
ARG NEXT_PUBLIC_API_URL
|
|
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL
|
|
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY
|
|
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
|
|
RUN npm run build
|
|
|
|
FROM node:22-alpine
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
COPY --from=build /app/public ./public
|
|
COPY --from=build /app/.next/standalone ./
|
|
COPY --from=build /app/.next/static ./.next/static
|
|
EXPOSE 3000
|
|
CMD ["node", "server.js"]
|