feat: spin 프론트엔드 전체 구현 (React+TS+Vite+Tailwind)
build-and-push / build (push) Successful in 36s

- AppShell·사이드바(역할별 네비)·탑바·UI킷, react-query·axios·recharts·dnd-kit
- SP 디자인 토큰 재사용(navy/canvas/Noto Sans KR) + 회계용 고밀도 확장
- 페이지: 대시보드, 근무(타임시트·휴가/초과 신청), 프로젝트 목록/상세
  (간트·칸반·캘린더·작업자portion·업체담당자·계약/분할입금 admin),
  인센티브(유저 대시보드), 인센티브 관리 콘솔(단계 stepper·시뮬레이터·오버라이드),
  회계(현금-인센티브 갭·원장·세금), 구성원·설정·승인·프로필
- 권한 가드: 관리자 전용 라우트, ?as=user 로 구성원 시점 미리보기

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49
2026-06-28 08:57:50 +09:00
co-authored by Claude Opus 4.8
parent 69e641e271
commit 7cab590fe2
40 changed files with 6992 additions and 5 deletions
+15 -5
View File
@@ -1,8 +1,18 @@
# Placeholder Dockerfile — nginx-unprivileged 기반 static serve, port 8080.
# 실제 코드 추가 후 본인 stack(Node/Python/Go 등)으로 교체 권장.
FROM nginxinc/nginx-unprivileged:1.27-alpine
# syntax=docker/dockerfile:1
# 정적 파일 (html/css/js) 또는 SPA build output 을 root 에 복사.
COPY --chown=nginx:nginx . /usr/share/nginx/html/
# --- Stage 1: build ---
FROM node:20-alpine AS build
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci || npm install
COPY . .
RUN npm run build
# --- Stage 2: serve ---
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
# The image entrypoint runs envsubst over /etc/nginx/templates/*.template at
# startup. Only SPIN_BACKEND_URL is substituted so nginx's own $vars survive.
ENV NGINX_ENVSUBST_FILTER=SPIN_BACKEND_URL
COPY nginx.conf.template /etc/nginx/templates/default.conf.template
EXPOSE 8080