Piyush4521/OneKont
GitHub: Piyush4521/OneKont
基于角色的 AI 驱动灾难响应平台,整合市民 SOS 上报、实时事件地图、志愿者工作流和政府指挥中心于一体。
Stars: 0 | Forks: 0
# OneKont 2.0
OneKont 2.0 是一个基于角色的灾难响应 Web 平台,使用 Next.js、Supabase Realtime 和 Google Gemini API 构建。
它将 SOS 事件报告、实时行动地图、志愿者工作流和指挥中心监控整合在一个应用中。
## 核心功能
- 具有 OTP 验证的多角色登录:`public`(公众)、`volunteer`(志愿者)和 `gov`(政府)
- 针对事件、志愿者、避难所和医院的实时地图
- SOS 生存模式,包含面向离线的操作、媒体捕获和快速报告
- AI 辅助工具:
- 聊天助手 (`/api/ai/chat`)
- 语音转事件分析 (`/api/ai/audio`)
- 图像损害分析 (`/api/ai/vision`)
- 仅限政府人员的指挥仪表板,具备事件验证和解决工作流
- Supabase Realtime 订阅,用于事件和资源更新
- PWA 配置,支持可安装/离线可用的 Web 体验
## 技术栈
- Next.js 16 (App Router) + React 19 + TypeScript
- Tailwind CSS 4 + shadcn/ui + Radix primitives
- Supabase (Auth, Postgres, Realtime)
- Leaflet + React Leaflet (地图体验)
- Google Generative AI SDK (Gemini)
- Framer Motion + Recharts
## 项目结构
```
src/
app/ # Routes and API route handlers
components/custom/ # Domain UI (SOS, map, dashboard widgets)
components/ui/ # Reusable UI primitives
context/ # Shared realtime app state (DisasterContext)
lib/ # Types, auth/profile helpers, Supabase clients
supabase/
schema.sql # Base SQL schema + RLS + realtime publication
public/
manifest.json # PWA manifest
```
## 快速开始
### 1. 前置条件
- Node.js 20+(推荐使用当前 LTS 版本)
- npm 10+
- Supabase 项目
- Gemini API key
### 2. 安装依赖
```
npm install
```
### 3. 配置环境
从模板创建您的本地环境文件:
```
cp .env.example .env.local
```
然后填写所有必需的值(见下文环境变量)。
### 4. 应用数据库模式
在您的 Supabase SQL 编辑器中运行 [`supabase/schema.sql`](supabase/schema.sql)。
### 5. 启动开发服务器
```
npm run dev
```
打开 `http://localhost:3000`。
## 环境变量
使用 `.env.local`(切勿提交机密信息)。
必需:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `SUPABASE_SERVICE_ROLE_KEY`
- `GEMINI_API_KEY`
可选但支持:
- `GOV_ACCESS_CODE`
- `PUBLIC_ID_ALLOWLIST`(逗号分隔的 ID)
- `VOLUNTEER_BADGE_ALLOWLIST`(逗号分隔的 ID)
- `GOV_EMPLOYEE_ALLOWLIST`(逗号分隔的 ID)
- `NEXT_PUBLIC_VAPID_PUBLIC_KEY`
- `VAPID_PRIVATE_KEY`
- `VAPID_SUBJECT`
参考模板:[`.env.example`](.env.example)
## 可用脚本
- `npm run dev` - 运行本地开发服务器
- `npm run build` - 创建生产构建
- `npm run start` - 启动生产服务器
- `npm run lint` - 运行 ESLint
## 主要路由
- `/` - 公民着陆页 + SOS 操作
- `/login` - 基于角色的 OTP 访问流程
- `/profile` - 已认证的档案管理
- `/map` - 实时态势感知地图
- `/volunteers` - 志愿者门户(需 `volunteer` 权限)
- `/admin/dashboard` - 指挥中心(需 `gov` 权限)
- `/activity` - 活动日志概览
## API 概览
实现的 API 端点位于 `src/app/api` 下:
- `POST /api/auth/request-otp`
- `POST /api/auth/verify-otp`
- `GET /api/incidents`
- `POST /api/incidents`
- `POST /api/incidents/:id/verify`
- `POST /api/incidents/:id/resolve`
- `GET /api/metrics`
- `GET /api/volunteers`
- `GET /api/shelters`
- `GET /api/hospitals`
- `POST /api/ai/chat`
- `POST /api/ai/audio`
- `POST /api/ai/vision`
完整参考:[`docs/API.md`](docs/API.md)
## 部署
部署步骤和生产检查清单位于 [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md)。
## 文档索引
请参阅 [`docs/README.md`](docs/README.md) 获取完整的项目文档。
## 贡献
在提交 PR 之前,请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
## 安全
有关漏洞报告和安全预期,请参阅 [`SECURITY.md`](SECURITY.md)。
## 许可证
当前仓库中未声明许可文件。在开源分发之前请添加一个。
标签:AI智能助手, PWA, React, SOS求救, Supabase, Syscalls, Web平台, 公共服务, 公民报告, 地图可视化, 多模态识别, 实时态势感知, 应急指挥, 志愿协调, 政府管理系统, 救援科技, 测试用例, 灾难响应, 离线可用, 自动化攻击