SystemApplication/docs/superpowers/specs/2026-06-18-deploy-design.md
cc a185e56c22 feat: 导航起始页 + 天气/定位 + 天气动态效果
起始页(StartPage)
- 极简玻璃风导航页作未登录首页:时段问候、Bing 默认可切换搜索、10 个快捷位、右下齿轮进登录
- 昼夜背景自动切换(light/dark),按天气图标码 + 本地时间判断
- 天气动态效果(WeatherFx canvas):雨/雪/雷,克制风格,尊重 reduced-motion

天气与定位(前后端)
- 后端 /api/web/weather:高德 IP 定位(城市+坐标) + 和风实时天气
- 和风用 JWT(EdDSA/Ed25519)认证,密钥走环境变量、仅后端持有
- 每日限流(高德 300、和风 900,北京 0 点归零) + 10 分钟按 IP 缓存
- 前端 useWeather + WeatherIcon(7 类极简 SVG)

导航与登录
- 浏览器返回键支持(History API);返回即登出
- 记住我:勾选存 localStorage、不勾存 sessionStorage,默认不勾

其他
- .gitignore 忽略 *.pem/*.env 等密钥
- 新增文档 docs/startpage-weather-location.md 及部署 spec/plan

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 20:13:18 +08:00

1.5 KiB

Deployment Design: InternetProject to 8.130.143.54

Summary

Deploy a React (Vite) frontend + Rust (Axum) backend to a remote Ubuntu 22.04 server. The Rust binary serves both the API and the static frontend files. Port 8548, manual start via nohup.

Architecture

Single-binary deployment. Rust binary at /opt/internet-project/RustServer serves:

  • GET /api/web/stats — system metrics for the React frontend
  • GET /api/client/health — health check for future .NET client
  • All other paths → static files from /opt/internet-project/static/ (SPA fallback to index.html)

Access: http://8.130.143.54:8548

Server Info

  • OS: Ubuntu 22.04.5 LTS, x86_64
  • RAM: 1.6 GB, Disk: 35 GB free
  • Tools pre-installed: git only (no Rust, no Node)

Build Strategy

Cross-compile locally via WSL (mirrored network mode + autoProxy=true — no manual proxy config needed).

  • React: npm run build in Windows PowerShell or WSL → Client/dist/
  • Rust: cargo build --release in WSL → Server/target/release/RustServer
  • Port is read from PORT env var (default 8080); code change already applied to main.rs

Deploy Steps

  1. Build React frontend (npm run build)
  2. Build Rust binary in WSL (cargo build --release)
  3. Upload via scp: binary + Client/dist/*/opt/internet-project/
  4. Start: nohup PORT=8548 ./RustServer > server.log 2>&1 &

Process Management

Manual start (nohup). Stop with pkill RustServer. Logs at /opt/internet-project/server.log.