managarten/apps-archived/uload/Dockerfile
Till-JS ee42b6cc76 feat: major update with network graphs, themes, todo extensions, and more
## New Features

### Network Graph Visualization (Contacts, Calendar, Todo)
- D3.js force simulation for physics-based layout
- Zoom & pan with mouse/touchpad
- Keyboard shortcuts: +/- zoom, 0 reset, Esc deselect, / search, F focus
- Filtering by tags, company/location/project, connection strength
- Shared components in @manacore/shared-ui

### Central Tags API (mana-core-auth)
- CRUD endpoints for tags
- Schema: tags table with userId, name, color, app
- Shared tag components in @manacore/shared-ui

### Custom Themes System
- Theme editor with live preview and color picker
- Community theme gallery
- Theme sharing (public, unlisted, private)
- Backend API in mana-core-auth

### Todo App Extensions
- Glass-pill design for task input and items
- Settings page with 20+ preferences
- Task edit modal with inline editing
- Statistics page with visualizations
- PWA support with offline capabilities
- Multiple kanban boards

### Contacts App Features
- Duplicate detection
- Photo upload
- Batch operations
- Enhanced favorites page with multiple view modes
- Alphabet view improvements
- Search modal

### Help System
- @manacore/shared-help-content
- @manacore/shared-help-ui
- @manacore/shared-help-types

### Other Features
- Themes page for all apps
- Referral system frontend
- CommandBar (global search)
- Skeleton loaders
- Settings page improvements

## Bug Fixes
- Network graph simulation initialization
- Database schema TEXT for user_id columns (Better Auth compatibility)
- Various styling fixes

## Documentation
- Daily report for 2025-12-10
- CI/CD deployment guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 02:37:46 +01:00

73 lines
2.3 KiB
Docker

# =============================================================================
# uload Web Application Dockerfile
# Multi-stage build for production deployment with Coolify
#
# IMPORTANT: This Dockerfile must be built from the MONOREPO ROOT, not from uload/
# docker build -f uload/Dockerfile -t uload-web .
#
# =============================================================================
# -----------------------------------------------------------------------------
# Stage 1: Builder
# -----------------------------------------------------------------------------
FROM node:20-alpine AS builder
# Install pnpm
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
WORKDIR /app
# Copy workspace configuration
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
# Copy the uload web app
COPY uload/apps/web/ ./uload/apps/web/
# Copy required shared packages
COPY packages/shared-auth-ui/ ./packages/shared-auth-ui/
COPY packages/shared-branding/ ./packages/shared-branding/
# Install dependencies with flat structure for Docker compatibility
RUN pnpm install --filter @uload/web... --shamefully-hoist
# Build the app
WORKDIR /app/uload/apps/web
# Note: RESEND_API_KEY is needed at build time for SvelteKit prerendering
ENV RESEND_API_KEY=build_placeholder
RUN pnpm build
# -----------------------------------------------------------------------------
# Stage 2: Production Runner
# -----------------------------------------------------------------------------
FROM node:20-alpine AS runner
# Security: Run as non-root user
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 sveltekit
WORKDIR /app
# Copy built app from the correct path
COPY --from=builder --chown=sveltekit:nodejs /app/uload/apps/web/build ./build
COPY --from=builder --chown=sveltekit:nodejs /app/uload/apps/web/package.json ./
# Copy hoisted node_modules from root (contains all deps with flat structure)
COPY --from=builder --chown=sveltekit:nodejs /app/node_modules ./node_modules
# Environment
ENV NODE_ENV=production
ENV PORT=3000
ENV HOST=0.0.0.0
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1
# Switch to non-root user
USER sveltekit
EXPOSE 3000
# Start Node server
CMD ["node", "build"]