d8a4e43bcc
- Top header bar + narrow sidebar layout - Dashboard: calendar-style schedule with timeline cards - Clients: card-based layout with avatar initials and pet count - Services: grid cards with emoji indicators and pricing - Bookings: timeline cards with time slots, status chips, inline actions - Invoices: cards with status badges, action buttons - All pages: search bars, empty states, modal forms - Consistent color system: indigo primary, amber alerts, gray hierarchy
31 lines
524 B
Docker
31 lines
524 B
Docker
# Dockerfile for frontend
|
|
FROM node:22-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json yarn.lock* ./
|
|
RUN yarn install --frozen-lockfile 2>/dev/null || npm install
|
|
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
FROM node:22-alpine AS dev
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json yarn.lock* ./
|
|
COPY tsconfig.json ./
|
|
RUN yarn install
|
|
|
|
COPY . .
|
|
|
|
COPY . .
|
|
|
|
EXPOSE 3001
|
|
CMD ["npm", "run", "start", "--", "--port", "3001"]
|
|
|
|
FROM nginx:alpine
|
|
COPY --from=builder /app/build /usr/share/nginx/html
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
EXPOSE 3001
|