Metadata-Version: 2.4
Name: fasthtml-base
Version: 0.1.3
Summary: FastHTML 核心库 + 脚手架
Author: Home
Author-email: Home <wsbad@qq.com>
License-Expression: MIT
License-File: LICENSE
Requires-Dist: python-fasthtml>=0.14.13
Requires-Dist: fastlite>=0.2.4
Requires-Dist: python-dotenv>=1.0
Requires-Python: >=3.12
Description-Content-Type: text/markdown

# fasthtml-base

FastHTML 核心库 + 项目脚手架。用一条命令生成带前台页面、后台登录、网站信息管理的 FastHTML 站点骨架。

## 安装（推荐一条命令）

```bash
uv tool install fasthtml-base
```

`uv tool` 会自动建隔离环境并拉齐 python-fasthtml 等依赖，装完直接就能敲 `fasthtml-base`，
不需要手动创建虚拟环境，用完也不用清理。

> 若提示 `...\.local\bin is not on your PATH`，执行 `uv tool update-shell` 后重开终端。

只想临时用一次：

```bash
uvx fasthtml-base new MySite
```

或者用 pip：

```bash
pip install fasthtml-base
```

**离线 / 内网分发**：在本仓库根目录执行 `uv build` 生成 wheel，再用本地 wheel 安装：

```bash
uv build
uv tool install dist\fasthtml_base-<版本>-py3-none-any.whl
```

## 使用

```bash
# 在当前目录下创建项目 MySite
fasthtml-base new MySite

# 指定父目录
fasthtml-base new MySite -p D:\Projects

# 显式指定随项目附带的 wheel（离线分发用）
fasthtml-base new MySite --wheel D:\dist\fasthtml_base-<版本>-py3-none-any.whl

# 只生成骨架，不自动安装依赖
fasthtml-base new MySite --no-sync
```

生成完成后：

```bash
cd MySite
uv run python main.py
```

浏览器打开 <http://127.0.0.1:5001>。

## 生成的项目结构

```
MySite/
├── main.py           # 应用入口与路由注册
├── models.py         # 数据模型（User / Admin / SiteInfo）
├── db.py             # fastlite 数据库连接与初始化
├── pages/            # 页面模块，每个模块导出 ar (APIRouter)
│   ├── home.py
│   ├── about.py
│   ├── admin_login.py
│   ├── admin.py
│   └── siteinfo.py
├── .env.example      # SECRET_KEY 示例，复制为 .env 后填写
└── pyproject.toml
```

## 注意事项

- **默认管理员账号 `admin` / 密码 `admin`**，上线前务必修改（写入 `db.py` 初始化逻辑或直接改库）。
- 会话签名密钥从环境变量 `SECRET_KEY` 读取；未设置时每次启动随机生成，会导致重启后登录态失效。生产环境请复制 `.env.example` 为 `.env` 并填入：

  ```bash
  python -c "import secrets;print(secrets.token_hex(32))"
  ```

- 新增页面：在 `pages/` 下新建模块并导出 `ar`，然后在 `main.py` 中 `xxx.ar.to_app(app)` 注册。

## 许可

MIT License，详见 [LICENSE](LICENSE)。
