在中国文化中,“落叶归根,魂归故里” 是一种根深蒂固的情感。无论一个人走得多远、在外漂泊多少年,家乡始终是心里最柔软的地方。家乡不仅仅是一个地理坐标,更是一段童年的记忆、一种熟悉的味道、一份难以割舍的情感连接。
对很多在外求学、工作、生活的人来说,离开家乡往往意味着新的机会与成长,但同时也伴随着思念与牵挂。时间一天天过去,人们在城市中奔波忙碌,却常常会在某个瞬间想起家乡的街道、熟悉的方言、家人的笑脸,以及那些再普通不过却无比温暖的日常。
“思乡签到(HomeSignin)” 正是基于这样的情感而诞生的一个小应用。它为离开家乡的人提供一个简单而温暖的方式,记录自己离家生活的每一天。通过每日签到,用户可以看到自己离开家乡的时间、坚持打卡的记录,以及最近一段时间的生活轨迹。
在签到的同时,系统会随机生成一句“思乡话语”,或是用户自己写下的一句心情,让每一次签到都不仅仅是一次简单的记录,而是一种情绪的表达与释放。随着时间的累积,这些记录会逐渐成为一段属于自己的“离乡日记”。
- 用户系统: 注册/登录、个人资料管理(家乡、当前城市、离家日期)
- 签到打卡: 每日签到、记录签到时间
- 数据统计: 离家天数、累计签到、连续签到、最长连续签到
- 周日历视图: 直观展示最近 7 天签到情况
- 思乡话语: 内置 20 条思乡话语,打卡后自动生成
- 自定义话语: 用户可添加自己的思乡话语
- AI 思乡话语生成: 支持多模型(Claude/通义千问/OpenAI 等),签到时根据用户家乡自动生成方言风格思乡话语
- 徽章系统: 14 种徽章(时间徽章、连续徽章、特殊徽章),记录签到成就
- 家庭问候: 配置家庭成员称呼,签到时生成家庭问候语
- Vue 3 前端: 现代化 SPA 应用,响应式设计,支持移动端
- 后端: Python + Flask + SQLAlchemy
- 前端: Vue 3 + Vite + Pinia + Vue Router + Axios + TailwindCSS
- 数据库: SQLite
- 包管理: pixi (Python), npm (Node.js)
后端(Python):
cd GoHomeWeb
pip install -r requirements.txt前端(Node.js):
cd frontend
npm install如果需要使用 AI 生成功能,请复制 .env.example 文件并配置 API Key:
cp .env.example .env编辑 .env 文件,填入你的 API 配置。支持多种模型提供商:
Anthropic Claude:
AI_API_KEY=sk-ant-xxxxx
AI_API_BASE_URL=https://api.anthropic.com/v1
AI_MODEL=claude-sonnet-4-20250514
阿里云百炼(通义千问):
AI_API_KEY=sk-xxxxx
AI_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
AI_MODEL=qwen-plus
OpenAI:
AI_API_KEY=sk-xxxxx
AI_API_BASE_URL=https://api.openai.com/v1
AI_MODEL=gpt-4o-mini
本项目包含前后端,需要分别启动:
启动后端(Flask):
python app.py或指定端口:
PORT=5001 python app.py启动前端(Vite + Vue 3):
cd frontend
npm run dev启动完成后,访问 http://localhost:3000 使用应用。
前端开发服务器(port 3000)会自动代理 API 请求到后端(port 5001)
项目包含预配置的测试账号,可用于快速体验:
| 用户名 | 密码 | 说明 |
|---|---|---|
demo |
demo123 |
默认测试账号(家乡:湖南长沙,当前城市:北京) |
你也可以在登录页面注册新账号。
HomeSignin/
├── app.py # Flask 应用入口
├── config.py # 配置文件
├── pixi.toml # Pixi 配置
├── requirements.txt # Python 依赖
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── main.js # 应用入口
│ │ ├── App.vue # 根组件
│ │ ├── views/ # 页面组件
│ │ │ ├── Dashboard.vue # 仪表盘
│ │ │ ├── Checkin.vue # 签到页
│ │ │ ├── Badges.vue # 徽章墙
│ │ │ └── Profile.vue # 个人资料
│ │ ├── components/ # 可复用组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ └── api/ # API 客户端
│ ├── package.json # 前端依赖
│ ├── vite.config.js # Vite 配置
│ └── tailwind.config.js # TailwindCSS 配置
├── data/
│ └── homesignin.db # SQLite 数据库
├── models/
│ ├── __init__.py
│ └── database.py # 数据库模型
├── routes/
│ ├── __init__.py
│ ├── auth.py # 认证路由
│ ├── checkin.py # 签到路由
│ ├── dashboard.py # 仪表盘路由
│ ├── quotes.py # 话语管理路由
│ ├── ai_hometown.py # AI 思乡话语生成路由
│ ├── badges.py # 徽章路由
│ └── api.py # JSON API 路由
├── utils/
│ ├── __init__.py
│ ├── db_init.py # 数据库初始化
│ ├── quote_generator.py # 话语生成器
│ └── ai_hometown_generator.py # AI 思乡话语生成器
└── scripts/
└── migrate_json_to_sqlite.py # 数据迁移脚本
- 古诗: 经典思乡诗词
- 现代: 现代思乡散文
- 亲情: 关于父母家人的牵挂
- 感悟: 游子心得感悟
- 注册账号,填写家乡、当前城市、离家日期
- 登录后可在首页查看离家天数和签到统计
- 点击"签到"进行每日打卡
- 签到后自动生成一句思乡话语
- 可在"话语"页面查看和添加自定义话语
- 可在"AI 生成"页面使用 AI 生成方言风格思乡话语
AI 生成功能支持多种大模型 API,可通过配置切换:
| 提供商 | 模型示例 | 配置方式 |
|---|---|---|
| Anthropic | claude-sonnet-4-20250514 | 原生支持 |
| 阿里云百炼 | qwen-plus | 兼容模式 |
| OpenAI | gpt-4o-mini | 原生支持 |
| 其他 | 任意 OpenAI 兼容 API | 自定义配置 |
每次签到时,系统会:
- 读取用户的家乡信息
- 自动匹配方言风格(如四川话、粤语等)
- 调用 AI 生成具有地方特色的思乡话语
- 如果没有配置 API,则使用内置话语
手动生成功能支持以下分类:
- 饮食关怀: 用家乡方言风格生成关于美食的关怀话语
- 天气问候: 结合家乡天气的问候语
- 节日思念: 节日思乡话语
- 日常问候: 日常思乡问候(如"娃吃饭了吗")
- 思乡诗句: 创作思乡诗句或顺口溜
- 童年回忆: 唤起童年家乡回忆的话语
系统会根据你输入的家乡地点自动匹配对应的方言风格(如四川话、粤语、北京话等)。
- 添加地图模块,显示当前位置离家的距离
- 添加用户头像上传功能
- 实现多语言支持
- 增加移动端推送提醒
- 开发桌面端应用
- 签到分享功能(生成海报图片)
- 家庭群组成员管理(添加多个家庭成员)
- 签到历史记录页面
将前端部署到 GitHub Pages,后端部署到 Render 云平台(免费额度)。
步骤:
-
访问 render.com 并注册账号
-
点击 "New +" → "Web Service"
-
连接你的 GitHub 仓库,选择
GoHome项目 -
配置如下:
- Name:
homesignin-api - Branch:
main - Root Directory: 留空
- Runtime:
Python 3 - Build Command:
pip install -r requirements.txt -r requirements-prod.txt - Start Command:
gunicorn app:app --bind 0.0.0.0:$PORT
- Name:
-
设置环境变量(在 Render 控制台):
PORT=5001 SECRET_KEY=<生成一个随机密钥> AI_API_KEY=<你的 AI API 密钥>(可选) AI_API_BASE_URL=<你的 AI API 地址>(可选) AI_MODEL=<你使用的模型>(可选) -
点击 "Create Web Service",等待部署完成
-
部署完成后,你会得到一个类似
https://homesignin-api.onrender.com的 URL
步骤:
-
在
frontend/.env文件中配置后端 API 地址:VITE_API_BASE_URL=https://homesignin-api.onrender.com -
构建前端:
cd frontend npm install npm run build -
在 GitHub 仓库页面,进入 Settings → Pages
-
在 Source 下拉框选择 GitHub Actions
-
提交代码到
main分支,GitHub Actions 会自动构建并部署 -
部署完成后,访问
https://<你的用户名>.github.io/GoHome/即可使用
由于前端和后端分离,需要在后端添加 CORS 支持。编辑 app.py:
from flask_cors import CORS
def create_app():
app = Flask(__name__)
# ...
CORS(app, supports_credentials=True)
# ...如果你有支持 Docker 的服务器,可以使用 Docker 部署。
构建镜像:
docker build -t homesignin .运行容器:
docker run -d -p 5001:5001 -v $(pwd)/data:/app/data -e SECRET_KEY=your-secret-key homesignin适合本地开发或内网使用。
启动后端:
pixi run dev启动前端(新终端):
cd frontend
npm run devMIT License