Sello 是面向电商卖家的智能 SaaS 助手,域名暂定为 sellohub.com。系统采用前后端分离架构,前端由多个 Next.js + Tailwind CSS 应用组成,后端使用 FastAPI 提供统一 API,数据存储选择 PostgreSQL。
website:产品介绍与宣传站点,承担注册、试用申请、线索收集、公开内容展示。portal:客户使用的 SaaS Portal,支持多租户、团队协作、店铺接入、智能助手工作台。admin:Sello 内部后台管理系统,用于统一管理客户、用户、租户、订阅和系统配置。api:统一后端 API 服务,供website、portal、admin共同调用。
- Frontend:Next.js、React、Tailwind CSS、TypeScript
- Backend:FastAPI、Python
- Database:PostgreSQL
- Architecture:Monorepo、前后端分离、多租户 SaaS
sellohub/
apps/
website/
portal/
admin/
services/
api/
packages/
ui/
config/
types/
docs/
前端工作区使用 pnpm workspace,四个应用服务分别位于独立目录:
apps/website:产品宣传站点,默认端口3000。apps/portal:客户 SaaS Portal,默认端口3001。apps/admin:平台后台管理系统,默认端口3002。services/api:FastAPI 统一后端 API,默认端口8000。
安装前端依赖:
corepack enable pnpm
pnpm install浏览器端 portal/admin 登录页会读取 NEXT_PUBLIC_SELLO_API_URL 调用 API。默认本地值为:
NEXT_PUBLIC_SELLO_API_URL=http://localhost:8000
启动前端应用:
pnpm dev:all也可以分别启动:
pnpm dev:website
pnpm dev:portal
pnpm dev:admin初始化 API 数据库:
cd services/api
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"确保本机 PostgreSQL 已启动,并创建和 .env.example 中 DATABASE_URL 对应的用户与数据库。默认开发配置使用:
postgresql+psycopg://sello:sello@localhost:5432/sello
如果使用默认配置,可以在本机 PostgreSQL 中执行:
psql postgres -c "create role sello with login password 'sello';"
psql postgres -c "create database sello owner sello;"如果角色或数据库已存在,可以忽略对应错误,或按本机实际情况修改 .env 中的 DATABASE_URL。
执行数据库初始化迁移:
alembic upgrade head开发阶段如果需要重置数据库,可以执行:
alembic downgrade base
alembic upgrade headdowngrade base 会删除所有 Sello 业务表和数据;upgrade head 会重新创建表并写入默认测试数据。
如需重新同步默认测试数据,也可以重复执行:
python -m app.seed迁移和 seed 命令都会确保存在一个内置平台 owner 和一个 demo 租户及其 tenant owner:
Admin: platform-owner@sello.local / PlatformOwner123!
Portal: tenant-owner@sello.local / TenantOwner123!
Tenant: demo
平台 owner 是内置用户,可直接登录 admin。demo tenant owner 是默认测试账号,可直接登录 portal,方便本地测试。后续通过 admin 或 portal 创建的非内置用户仍会要求首次登录后修改初始密码。
当前项目仍处于开发阶段,数据库 schema 只维护初始化迁移 services/api/alembic/versions/00001_initial_core_tables.py。发布首个生产版本前,如需改表,直接修改 SQLAlchemy model 和 00001 初始化迁移,不新增补丁迁移。
启动 API 服务:
cd services/api
source .venv/bin/activate
uvicorn app.main:app --reload --port 8000API 健康检查:
curl http://localhost:8000/health