FROM node:24-slim AS base

WORKDIR /usr/src/webserver

# needed for prisma
RUN apt-get update -y && apt-get install openssl -y


FROM base AS install

# Install packages: dev and then build
RUN mkdir -p /temp/dev
COPY package.json package-lock.json /temp/dev/
RUN cd /temp/dev && npm ci

RUN mkdir -p /temp/prod
COPY package.json package-lock.json /temp/prod/
RUN cd /temp/prod && npm ci --omit=dev


FROM base AS prebuild

# copy installed dev packages
COPY --from=install /temp/dev/node_modules node_modules

# Copy source files
COPY . .

# Initialize prisma
RUN npx prisma generate 


FROM prebuild AS build

# Build project
RUN npm run build


FROM base AS release

# Copy release files
COPY --from=install /temp/prod/node_modules node_modules
COPY --from=build /usr/src/webserver/build .

EXPOSE 3000/tcp

CMD ["node", "."]


FROM prebuild AS dev

RUN npx svelte-kit sync

EXPOSE 5173/tcp

CMD ["npm", "run", "dev", "--", "--host"]
