Files
Commilitia-Drop/Justfile
T
admin f21fa5b5e8 cdrop — 跨 OS 剪贴板与文件传输服务
Commilitia Drop:自托管的跨设备剪贴板同步与点对点文件传输。

- 后端 Go(chi / SQLite WAL / SSE Hub / WebRTC signaling + 状态机 / Relay ring buffer),编译进单个 distroless 镜像(前端 go:embed)。
- 前端 React + TanStack Router + Zustand,自实现 SSE + WebRTC P2P,NAT 受阻时回退服务端中继;聚珍(Juzhen)CJK 综合排版。
- 桌面端 Wails v2(macOS / Windows),瘦客户端复用 web。
- 鉴权 OIDC PKCE(自建 Casdoor 等),refresh_token 信封加密存系统密钥库;iOS Shortcut 用 HS256 scoped token。

架构文档与变更记录见 docs 分支(PROJECT_BRIEF / FRONTEND_DESIGN / CHANGELOG)。

本次为公开发布初始提交:完整开发历史(含部署细节)留存于私有归档,公开仓库自此干净起步。
2026-06-15 21:38:28 +08:00

84 lines
2.8 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
set dotenv-load := true
default:
@just --list
dev-back:
go run ./cmd/cdropd
dev-front:
cd web && npm run dev
build-back:
mkdir -p dist
go build -o dist/cdropd ./cmd/cdropd
build-front:
cd web && npm run build
build: build-back build-front
test:
go test ./...
typecheck-front:
cd web && npm run typecheck
fmt:
gofmt -w .
vet:
go vet ./...
# ---- desktop client (Wails · macOS 主开发,Windows 在 Parallels 验证) ----
# wails CLI 在 go install 后落在 $(go env GOPATH)/bin/wails
# 用绝对路径避免依赖 shell PATH 配置。
wails := `go env GOPATH` + "/bin/wails"
# 起 wails dev 热重载,前端走 Vite dev server。
desktop-dev:
cd desktop && {{wails}} dev
# 构建 macOS universal .app(含 darwin/arm64 + darwin/amd64)。
# 不加 -clean,让 mac/win 产物在 build/bin/ 共存;清理走 desktop-clean。
#
# ⚠️ 先手动构建前端再 `wails build -s`(跳过 wails 自带前端步骤):wails build 的
# frontend:build 在本仓库结构下不可靠(不实际重建 web/ → 嵌入旧 JS)。显式构建
# web → desktop/frontend/dist,再用 -s 让 go:embed 嵌入这份新 dist。
desktop-build-mac:
cd web && npm run build -- --outDir ../desktop/frontend/dist --emptyOutDir
cd desktop && {{wails}} build -s -platform darwin/universal
# 交叉编译 Windows amd64 .exe。macOS 原生即可——Windows 侧无 cgodarwin 的
# NSStatusBar/NSPasteboard CGO 走 build tag 排除,WebView2 是纯 Go),不需 mingw。
# 与 mac 同:先手动构建前端再 -swails 自带 frontend:build 在本仓库不可靠)。
# 产物 build/bin/desktop.exe;真测试经 RDP 到 Windows 机器跑。
desktop-build-win:
cd web && npm run build -- --outDir ../desktop/frontend/dist --emptyOutDir
cd desktop && {{wails}} build -s -platform windows/amd64
# 清空 build/bin/ 产物。
desktop-clean:
rm -rf desktop/build/bin
# 环境自检。
desktop-doctor:
{{wails}} doctor
# ---- deploy plumbing ----
# 一次性预热:把 Go modules + node_modules 烤进 cdrop-base:latest。
# 仅 go.mod/go.sum 或 web/package*.json 改动时需要重跑。
# 用宿主原生 archmacOS arm64 → linux/arm64),让 BUILDPLATFORM 跨编译走原生。
docker-base:
docker buildx build -f docker/Dockerfile.base -t cdrop-base:latest --load .
# 应用镜像:从 cdrop-base 起步只编译源码,最终落 linux/amd64 distroless。
# dev mode 部署时 export VITE_CDROP_DEV_TOKEN=<同后端 token> 把它烤进前端 bundle。
docker-image:
docker buildx build --platform linux/amd64 \
--build-arg VITE_CDROP_DEV_TOKEN="${VITE_CDROP_DEV_TOKEN:-}" \
--build-arg VITE_CDROP_STUN_URLS="${VITE_CDROP_STUN_URLS:-}" \
-f docker/Dockerfile -t cdrop:latest --load .