全栈 React FastAPI SQLite 已上线
Share Board 共享展板
2026-06
访问项目提出背景
我在日常协作中经常遇到这样的场景:想把手机上一段文字发到电脑、想临时给同事分享一串链接、想在会议室的大屏上贴几条信息——
这些需求的共同点是**「临时、轻量、多人可见」**,但我发现现有工具都太重了:微信/IM 需要加好友或拉群,在线文档需要注册账号,AirDrop 又只能在苹果设备之间用。
Share Board 就是我为这个场景做的:不需要注册、不需要登录,只要约定好一个 boardName + 口令(passphrase),任何人打开网页就能进入同一个共享展板,往里贴文本或链接纸条。口令不存浏览器本地,展板只记住你最近用过的名字,兼顾便利与隐私。
主要功能
- 通过
boardName + passphrase创建或进入共享展板 - 支持文本和链接两种纸条
- 支持新增、编辑、删除、搜索、一键复制、手动刷新
- 我把它挂载在了个人域名的子路径下(
/apps/share-board),与主站共存
技术架构
⚠️ 声明:本节技术架构内容完全由 AI 生成,仅供参考。
整体采用前后端分离架构:
浏览器
│ HTTPS
▼
Nginx(反向代理,挂载到 /apps/share-board 子路径)
├── 静态资源 → 前端构建产物(/var/www/share-board)
└── /api 请求 → 后端服务(127.0.0.1:8100)
│
▼
FastAPI + SQLite(systemd 常驻)
- 前端:React 19 + Vite + Tailwind CSS v4,构建为纯静态文件,由 Nginx 直接服务;
- 后端:FastAPI + SQLite,轻量单进程即可支撑,通过 uvicorn 运行、systemd 守护,崩溃自动重启;
- 部署:前后端各有独立的
deploy.py一键部署脚本(代码 rsync 增量同步);Nginx 路由由独立的 nginx-configuration 仓库统一生成与管理; - 安全:口令仅在创建/进入展板时用于鉴权,不写入浏览器本地存储;后端统一通过环境变量配置,密钥与代码分离。
在技术选型上我刻意保持轻量:没有引入用户系统、没有用重型数据库,整个后端一个 SQLite 文件就是全部状态,非常契合「临时共享」这个产品定位。