#!/bin/bash echo "🔨 Building CatSave Single Binary..." # Colors GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' NC='\033[0m' # Step 1: Build Next.js static export echo -e "${BLUE}Step 1: Building Next.js...${NC}" cd apps/web npm run build if [ ! -d "out" ]; then echo -e "${YELLOW}❌ Next.js build failed${NC}" exit 1 fi cd ../.. # Step 2: Copy static files to Go project echo -e "${BLUE}Step 2: Copying static files to Go...${NC}" rm -rf apps/server-go/static mkdir -p apps/server-go/static cp -r apps/web/out/* apps/server-go/static/ echo " ✅ Copied $(ls -1 apps/server-go/static | wc -l) items" # Step 3: Build Go binary echo -e "${BLUE}Step 3: Building Go binary...${NC}" cd apps/server-go # Get dependencies go mod download # Build for Linux GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../../dist/catsave-linux main.go echo " ✅ Built: dist/catsave-linux" # Build for current OS go build -ldflags="-s -w" -o ../../dist/catsave main.go echo " ✅ Built: dist/catsave" cd ../.. # Get file sizes SIZE_LINUX=$(du -h dist/catsave-linux 2>/dev/null | cut -f1) SIZE_LOCAL=$(du -h dist/catsave 2>/dev/null | cut -f1) echo "" echo -e "${GREEN}✅ Build complete!${NC}" echo "" echo "📦 Output:" echo " - dist/catsave (${SIZE_LOCAL:-N/A})" echo " - dist/catsave-linux (${SIZE_LINUX:-N/A})" echo "" echo -e "${YELLOW}To run:${NC}" echo " ./dist/catsave" echo "" echo -e "${YELLOW}To deploy to Linux server:${NC}" echo " scp dist/catsave-linux user@server:/opt/catsave" echo " ssh user@server '/opt/catsave'" echo ""