Files
zeekayandHanzo Dev c66bd4bce6 feat: email/password admin login + live bankd data source
- Login now accepts [email protected] / IloveLux2026!!! (env-gated sandbox admin
  gate) alongside 'Sign in with Lux ID' (IAM OIDC). Sandbox-only, never open.
- Data provider is live-first: one cached dataset reads bankd public-read
  collections (accounts/transactions/wallets) and derives the gated bits
  (balances/cards/compliance) over the live records; whole-dataset sandbox
  fallback when the shared DB is empty so the demo never blanks.
- Image bakes VITE_DATA_SOURCE=live; auto-shows the seed the moment it lands.
- Live/sandbox-aware environment banner.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-17 17:25:39 -07:00

23 lines
761 B
Docker

# Build the SPA, then serve it with a tiny zero-dep Node static server.
# No nginx / caddy (Hanzo stack rule). Single-arch linux/amd64 (DOKS).
FROM node:22-alpine AS builder
WORKDIR /src
RUN corepack enable
COPY package.json pnpm-lock.yaml* ./
RUN pnpm install --frozen-lockfile || pnpm install
COPY . .
# Bake the production config into the static bundle (Vite reads VITE_* at build).
# Live data source binds bankd; the sandbox mirror remains the graceful fallback.
ENV VITE_DATA_SOURCE=live
ENV VITE_BANK_API_URL=https://api.lux.financial
RUN pnpm build
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3000
COPY --from=builder /src/dist ./dist
COPY --from=builder /src/serve.mjs ./serve.mjs
EXPOSE 3000
CMD ["node", "serve.mjs"]