# Expo web static export (Node build stage only)
FROM node:22-alpine AS web-build
WORKDIR /src

COPY package.json ./
RUN npm install --legacy-peer-deps

COPY app.config.ts app.json babel.config.js metro.config.js tsconfig.json expo-env.d.ts eslint.config.js ./
COPY app ./app
COPY admin ./admin
COPY assets ./assets
COPY components ./components
COPY constants ./constants
COPY lib ./lib
COPY types ./types
COPY packages/design-system ./packages/design-system
COPY scripts/normalize-web-build.js scripts/obfuscate-sensitive-web.js ./scripts/

ENV NODE_ENV=production \
    EXPO_PUBLIC_APP_ENV=production \
    EXPO_PUBLIC_DEMO_MODE_ENABLED=false \
    EXPO_PUBLIC_API_BASE_URL=""
ENV NODE_OPTIONS=--max-old-space-size=2048

RUN npm run build:web

FROM nginx:alpine
COPY --from=web-build /src/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
