57800f2123de98cbc9ab7991e972ac02b8d8205c
Moving Helper
这是一个面向可信家庭内网环境的小型搬家记录工具,当前采用轻量技术栈:
- FastAPI
- Jinja2 服务端渲染
- SQLAlchemy
- SQLite
- pytest / FastAPI TestClient
- Docker / Docker Compose
项目目标是小而稳、容易继续扩展。目前已经从“纯脚手架”进入第二阶段,支持固定三层的数据结构和基础 CRUD,但还没有开始做图片、搜索和复杂界面。
当前数据模型
这个项目不是无限树结构,而是固定最多 3 级:
BoxItemSubItem
关系如下:
- 一个
Box包含多个Item - 一个
Item属于一个Box Item通过is_container区分是否为“小容器”- 只有
is_container = true的Item才允许拥有SubItem SubItem是最后一级,不允许继续向下嵌套
换句话说,结构固定为:
Box
└── Item
└── SubItem
当前已支持
目前已支持的基础能力:
- Box 列表、详情、新建、编辑、删除
- Item 新建、详情、编辑、删除
- SubItem 新建、编辑、删除
/重定向到/boxes- Jinja2 模板渲染
- 静态文件挂载
- SQLite 持久化
- Docker 长期运行
- 基础自动化测试
删除规则:
- 删除
Box时,会级联删除其下全部Item和对应SubItem - 删除容器型
Item时,会级联删除其下SubItem
当前未实现
这一阶段仍然没有实现以下内容:
- 图片上传
- 图片字段
- 图片处理
- 搜索
- 登录 / 鉴权
- 标签系统
- 前后端分离
- 复杂 UI
项目结构
.
├── app
│ ├── __init__.py
│ ├── config.py
│ ├── db.py
│ ├── main.py
│ ├── models.py
│ ├── static
│ │ └── style.css
│ └── templates
│ ├── base.html
│ ├── boxes
│ ├── items
│ └── subitems
├── data
├── tests
│ ├── conftest.py
│ └── test_app.py
├── docker-compose.yml
├── Dockerfile
├── pytest.ini
├── README.md
└── requirements.txt
轻量配置
项目通过环境变量支持以下配置项:
DATABASE_URLHOSTPORT
默认值:
DATABASE_URL=sqlite:///./data/app.dbHOST=0.0.0.0PORT=10000
本地开发模式
推荐使用本地 Python venv 开发和调试。
1. 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
2. 安装依赖
pip install -r requirements.txt
3. 启动开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 10000
访问:
http://localhost:10000
本地默认数据库位置:
./data/app.db
Docker 部署模式
Docker / Compose 是这个项目面向长期运行环境的方式。
启动:
docker compose up --build
访问:
http://localhost:10000
说明:
- 默认暴露
10000端口 restart: unless-stopped- 容器使用
1000:1000运行 - SQLite 文件持久化到宿主机
./data/app.db - 容器重建不会丢失数据
备份时直接复制 SQLite 文件即可:
./data/app.db
测试
运行测试:
python -m pytest
测试使用独立测试数据库,不会污染真实开发数据。
当前测试覆盖包括:
- Box / Item / SubItem 基础 CRUD
- 404 返回
- 非容器 Item 不能创建 SubItem
- Box / Item 删除后的级联删除
- 关键 POST 请求后的重定向行为
Description
Releases
4
Release v1.0.3
Latest
Languages
Python
69.2%
HTML
19.2%
CSS
5.8%
Shell
5.4%
Dockerfile
0.3%
Other
0.1%