Skip to content

CarAlert - 挪车通知系统 一个简洁优雅的挪车通知服务。用户通过网页输入车牌号,系统自动向 Telegram 群组发送挪车通知,并支持重复提醒直到车主响应。 核心特性: • 舒缓的青绿粉色渐变设计,缓解用户焦急情绪 • 响应式界面,完美适配 PC 和移动端 • 智能车牌输入,省份字块选择器避免输入法冲突 • 车牌格式验证和白名单验证 • 智能通知管理(授权车牌重复通知,非授权车牌单次通知) • 位置追踪(IP、地理位置、设备信息) • Telegram Bot 集成,实时推送通知 • SQLite 数据库记录通知历史 • Docker 一键部署 • 二维码生成,方便张贴车窗 适合有 Telegram 和服务器的车主使用。

Notifications You must be signed in to change notification settings

bg7iae/CarAlert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚗 CarAlert - 挪车通知系统

一个简洁优雅的挪车通知服务,通过网页输入车牌号,系统自动向 Telegram 群组发送挪车通知,并支持重复提醒直到车主响应。

License Docker Node

✨ 功能特性

  • 🎨 舒缓配色设计 - 青绿粉色渐变,缓解用户焦急情绪
  • 📱 响应式界面 - 完美适配 PC 端和移动端
  • 🔤 智能车牌输入 - 省份字块选择 + 车牌号输入,避免输入法冲突
  • 车牌验证 - 格式验证 + 白名单验证
  • 🔔 智能通知 - 授权车牌重复通知,非授权车牌单次通知
  • 📍 位置追踪 - 自动记录提交者 IP、地理位置、设备信息
  • 🤖 Telegram 集成 - 实时推送通知到 Telegram 群组
  • 📊 数据记录 - SQLite 数据库记录所有通知历史
  • 🐳 Docker 部署 - 一键启动,开箱即用
  • 🔗 二维码生成 - 方便生成网址二维码张贴车窗

🖼️ 界面预览

  • 省份字块选择器 - 31个省份字块,点击选择
  • 车牌输入框 - 省份显示 + 车牌号输入
  • 实时通知 - Telegram 推送包含位置和设备信息

🚀 快速开始

环境要求

  • Docker & Docker Compose
  • Telegram Bot Token
  • Telegram 群组/频道 ID

1. 克隆项目

git clone <repository-url>
cd CarAlert

2. 配置环境变量

cp .env.example .env

编辑 .env 文件:

# Telegram Bot配置
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_CHAT_ID=your_chat_id_here
TELEGRAM_BASEURL=https://api.telegram.org

# 有效车牌号列表(用逗号分隔)
VALID_LICENSE_PLATES=粤BB8888,京A12345

# 默认省份
DEFAULT_PROVINCE=

# 通知间隔(秒)
NOTIFICATION_INTERVAL=60

# 服务端口
PORT=3080

3. 启动服务

docker compose up -d

4. 访问服务

打开浏览器访问:http://localhost:3080

🤖 Telegram Bot 配置

创建 Bot

  1. 在 Telegram 中搜索 @BotFather
  2. 发送 /newbot 创建新 Bot
  3. 按提示设置 Bot 名称和用户名
  4. 复制获得的 Bot Token

获取群组 ID

方法1:使用 Bot

  1. 将 Bot 添加到目标群组
  2. 在群组中发送任意消息
  3. 访问:https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
  4. 在返回的 JSON 中找到 chat.id

方法2:使用第三方 Bot

  1. 添加 @userinfobot 到群组
  2. Bot 会自动显示群组 ID

设置 Bot 权限

确保 Bot 在群组中有以下权限:

  • ✅ 发送消息
  • ✅ 接收消息

📖 使用说明

发起挪车请求

  1. 访问网页
  2. 点击选择省份字块
  3. 输入车牌号码(如:B12345)
  4. 可选:填写联系电话
  5. 点击"发送通知"

响应挪车请求

在 Telegram 群组中回复:

/d

系统会停止重复通知并标记为已处理。

通知规则

  • 授权车牌:每隔设定时间重复通知,直到收到 /d 响应
  • 非授权车牌:用户侧报错,实际上也会发送通知,但发送一次通知,自动标记为已完成

🔧 配置说明

环境变量

变量名 说明 默认值 必填
TELEGRAM_BOT_TOKEN Telegram Bot Token -
TELEGRAM_CHAT_ID 群组/频道 ID -
TELEGRAM_BASEURL Telegram API 地址 https://api.telegram.org
VALID_LICENSE_PLATES 有效车牌列表(逗号分隔) -
DEFAULT_PROVINCE 默认省份
NOTIFICATION_INTERVAL 通知间隔(秒) 60
PORT 服务端口 3080

车牌白名单

.env 中配置有效车牌号:

VALID_LICENSE_PLATES=粤BB8888,京A12345,沪C67890

只有白名单中的车牌才会触发重复通知。

📊 数据存储

系统使用 SQLite 数据库存储通知记录:

data/notifications.db

数据表结构:

  • id - 记录ID
  • license_plate - 车牌号
  • is_valid - 是否为授权车牌
  • created_at - 创建时间
  • responded_at - 响应时间
  • status - 状态(pending/completed)
  • ip_address - 提交者IP
  • location_info - 地理位置信息
  • user_agent - 浏览器信息
  • device_info - 设备信息

🛠️ 开发指南

项目结构

CarAlert/
├── public/              # 前端静态文件
│   ├── index.html      # 主页面
│   ├── style.css       # 样式文件
│   └── script.js       # 前端逻辑
├── utils/              # 工具类
│   └── locationService.js  # 地理位置服务
├── data/               # 数据目录
│   └── notifications.db    # SQLite 数据库
├── server.js           # 后端服务
├── package.json        # 依赖配置
├── Dockerfile          # Docker 镜像
├── docker-compose.yml  # Docker Compose 配置
├── .env                # 环境变量
└── README.md           # 项目文档

本地开发

# 安装依赖
npm install

# 启动开发服务器
npm start

# 或使用 nodemon 自动重启
npm run dev

API 接口

提交车牌通知

POST /api/notify
Content-Type: application/json

{
  "licensePlate": "粤BB8888",
  "contactPhone": "13800138000"  // 可选
}

获取通知历史

GET /api/notifications

获取系统配置

GET /api/config

🐳 Docker 部署

构建镜像

docker compose build

启动服务

docker compose up -d

查看日志

docker compose logs -f

停止服务

docker compose down

重启服务

docker compose restart

🔍 故障排除

Bot 无法发送消息

  • ✅ 检查 TELEGRAM_BOT_TOKEN 是否正确
  • ✅ 确认 Bot 已添加到群组
  • ✅ 验证 TELEGRAM_CHAT_ID 是否正确
  • ✅ 确保 Bot 有发送消息权限

数据库错误

  • ✅ 确保 data 目录存在
  • ✅ 检查目录写权限
  • ✅ 查看容器日志排查错误

端口冲突

# 修改 .env 中的 PORT 配置
PORT=8080

# 重启服务
docker compose restart

地理位置获取失败

  • ✅ 检查网络连接
  • ✅ 确认 IP-API 服务可访问
  • ✅ 查看后端日志

📝 更新日志

v1.0.0 (2024-12-30)

  • ✨ 初始版本发布
  • 🎨 舒缓配色设计
  • 📱 响应式界面
  • 🔤 省份字块选择器
  • 📍 位置信息追踪
  • 🤖 Telegram 集成
  • 🐳 Docker 支持

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

📄 开源协议

MIT License

🙏 致谢

🤔 适合谁用?

有 Telegram 和服务器的车主。


⭐ 如果这个项目对你有帮助,请给个 Star!

About

CarAlert - 挪车通知系统 一个简洁优雅的挪车通知服务。用户通过网页输入车牌号,系统自动向 Telegram 群组发送挪车通知,并支持重复提醒直到车主响应。 核心特性: • 舒缓的青绿粉色渐变设计,缓解用户焦急情绪 • 响应式界面,完美适配 PC 和移动端 • 智能车牌输入,省份字块选择器避免输入法冲突 • 车牌格式验证和白名单验证 • 智能通知管理(授权车牌重复通知,非授权车牌单次通知) • 位置追踪(IP、地理位置、设备信息) • Telegram Bot 集成,实时推送通知 • SQLite 数据库记录通知历史 • Docker 一键部署 • 二维码生成,方便张贴车窗 适合有 Telegram 和服务器的车主使用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published