Skip to content

Commit 84c7008

Browse files
CopilotTechQuery
andauthored
Migrate GoodAction Hub to standalone data repository API (#4)
Co-authored-by: South Drifter <shiy2008@gmail.com>
1 parent 7505498 commit 84c7008

24 files changed

Lines changed: 1427 additions & 4032 deletions

README.md

Lines changed: 61 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@
22

33
GoodAction Hub 是一个聚合公益活动信息与无障碍餐饮指南的开源站点,包含两大模块:
44

5-
- 公益慈善活动截止日期(路径:`/deadlines`):基于 [hust-open-atom-club/open-source-deadlines](https://github.com/hust-open-atom-club/open-source-deadlines) 改造与扩展,汇总会议、竞赛与活动的关键时间节点,帮助公益从业者、志愿者和爱心人士不再错过参与机会。
5+
[![CI & CD][1]][2]
6+
7+
[![Open in GitHub Codespaces][3]][4]
8+
[![Open in Gitpod][5]][6]
9+
10+
- 公益慈善活动截止日期(路径:`/deadlines`):基于 [hust-open-atom-club/open-source-deadlines][7] 改造与扩展,汇总会议、竞赛与活动的关键时间节点,帮助公益从业者、志愿者和爱心人士不再错过参与机会。
611
- 无障碍友好美食指南(路径:`/Barrier-Free-Bites`):原创功能模块,聚焦无障碍就餐体验与友好餐饮空间,提供更易获取的线索与导航入口(路径大小写需一致)。
712

813
## 模块来源说明
914

1015
为便于理解项目结构与来源,现对两大模块的来源说明如下:
1116

1217
- 公益慈善活动截止日期(改造自开源项目)
13-
- 基于 [hust-open-atom-club/open-source-deadlines](https://github.com/hust-open-atom-club/open-source-deadlines) 改造开发
18+
- 基于 [hust-open-atom-club/open-source-deadlines][7] 改造开发
1419
- 我们的改动:
1520
- 🎯 主题转换:从开源技术活动切换为公益慈善活动
1621
- 🎨 UI 增强:视觉与交互优化
@@ -28,141 +33,55 @@ GoodAction Hub 是一个聚合公益活动信息与无障碍餐饮指南的开
2833
- 公益慈善活动截止日期(路径:`/deadlines`
2934
- 汇总公益会议、竞赛与活动的关键时间节点,支持时区展示与人类可读日期
3035
- 提供「日历添加」与「倒计时」等便捷功能(组件参考:`components/AddToCalendar.tsx``components/CountdownTimer.tsx``components/TimelineItem.tsx`
31-
- 活动来源数据在 `data/activities.yml``data/competitions.yml``data/conferences.yml`,通过统一数据模型渲染
36+
- 活动数据由独立数据仓库统一维护并提供
3237

3338
- 无障碍友好美食指南(路径:`/Barrier-Free-Bites`
3439
- 聚焦无障碍就餐体验与友好餐饮空间,提供更易获取的线索与导航入口
3540
- 建议使用「大小写一致」的路径访问:`/Barrier-Free-Bites`(注意大小写),以保证在不同托管平台上的最佳路由兼容性
3641

42+
## 数据贡献指引
3743

38-
## 如何添加活动
39-
40-
我们非常欢迎社区贡献!如果您发现有未收录的公益慈善会议、竞赛及活动,或者信息有误,请通过提交 Pull Request 的方式来帮助我们更新。
41-
42-
我们会定期查看并处理这些提交,感谢您对公益事业的支持!
43-
44-
所有活动数据都存储在 `/data` 目录下的 YAML 文件中。
45-
46-
- **会议**: 请添加到 `data/conferences.yml`
47-
- **竞赛**: 请添加到 `data/competitions.yml`
48-
- **活动**: 请添加到 `data/activities.yml`
49-
50-
### 数据结构
51-
52-
请在对应的 YAML 文件中,仿照以下格式添加新条目:
53-
54-
```yaml
55-
- title: 活动名称 (例如:第三届老龄志愿与公益服务学术论坛)
56-
description: 探讨AI时代应对人口老龄化的新策略,推动我国老龄志愿与公益服务事业多元发展
57-
category: conference # 会议请使用 "conference",竞赛请使用 "competition",活动请使用 "activity"
58-
tags:
59-
- 老龄服务
60-
- 志愿公益
61-
- 人工智能
62-
- 学术论坛
63-
events:
64-
- year: 2025 # 年份
65-
id: aging-volunteer-forum-2025 # 全局唯一的ID
66-
link: https://mp.weixin.qq.com/s/qi9gF1ETgk6UvFnnGNSVlg # 链接
67-
timeline:
68-
- deadline: '2025-10-19T23:59:00' # 关键日期 (ISO 8601 格式)
69-
comment: '论文征集截止' # 日期说明
70-
- deadline: '2025-11-15T09:00:00'
71-
comment: '学术年会开始'
72-
- deadline: '2025-11-16T17:00:00'
73-
comment: '学术年会结束'
74-
timezone: Asia/Shanghai # 所在时区
75-
date: 2025年11月15日-11月16日 # 人类可读的日期范围
76-
place: 中国,北京 # 地点
77-
```
78-
79-
**注意事项:**
80-
81-
- `category`: 必须是 `conference` 、 `competition` 或 `activity`
82-
- `timeline.deadline`: 请使用 ISO 8601 标准格式 - `YYYY-MM-DDTHH:mm:ss`
83-
- `timezone`: 请使用标准的 IANA 时区名称(例如 `Asia/Shanghai`),否则会影响时区转换
84-
- `date`: 请使用人类可读的单个日期或日期范围,如 `2025 年 4 月 30 日` 或 `2025 年 4 月 30 日 - 9 月 30 日`
85-
- `place`: 活动地址,如 `中国,上海`(`国家,城市`);如果是线上活动,直接写 `线上`
86-
87-
💡 **新手友好提示**:如果您不熟悉 Pull Request 流程,也可以通过Discussions和Issues方式提交活动信息,我们来帮您添加
88-
>
89-
> 🎉 **每一份贡献都很珍贵,欢迎您的参与!**
44+
我们非常欢迎社区贡献。活动数据与无障碍友好美食数据现已统一迁移到独立数据仓库维护,请在以下仓库提交与更新:
45+
46+
- https://github.com/GoodAction-Hub/GoodAction-data
47+
48+
适用范围:
9049

91-
## 如何添加美食地(无障碍友好美食指南)
92-
93-
我们欢迎社区补充无障碍友好餐饮空间的信息。暂时数据以页面内配置与文案翻译驱动(`app/Barrier-Free-Bites/page.tsx` 与 `public/locales/*/translation.json`)。
94-
95-
### 数据放置位置
96-
97-
- 页面组件:`app/Barrier-Free-Bites/page.tsx`
98-
- 可在 `restaurantCoords` 中为餐厅添加坐标与地址(用于导航按钮),键需与文案 key 对齐
99-
- 在页面 JSX 中增添一张餐厅卡片,引用对应的 i18n 文案 key
100-
- 文案翻译:`public/locales/zh-CN/translation.json` 与 `public/locales/en/translation.json`
101-
- 在 `bites.restaurants.<your_key>` 下新增:
102-
- `name`: 餐厅名称
103-
- `description`: 简介
104-
- `features`: 特色服务(数组)
105-
- `food`: 特色美食
106-
- `experience` / `highlights`(可选):特色体验/亮点
107-
- `value`: 社会价值或人均消费等
108-
- `address`: 地址
109-
110-
### 最小示例(翻译 JSON)
111-
112-
```json
113-
"bites": {
114-
"restaurants": {
115-
"your_place_key": {
116-
"name": "示例餐厅",
117-
"description": "简短介绍",
118-
"features": ["手语服务", "无障碍通道"],
119-
"food": "咖啡、甜品",
120-
"value": "提供残障友好服务与就业机会",
121-
"address": "示例市示例区示例路"
122-
}
123-
}
124-
}
125-
```
126-
127-
### 最小示例(页面坐标)
128-
129-
```ts
130-
// app/Barrier-Free-Bites/page.tsx
131-
const restaurantCoords = {
132-
your_place_key: { lat: 39.9, lng: 116.4, address: "示例市示例区示例路" }
133-
}
134-
```
135-
136-
### 注意事项
137-
138-
- 路径大小写:页面路径为 `/Barrier-Free-Bites`,请使用一致大小写
139-
- key 一致性:`restaurantCoords` 的 key 应与 `translation.json` 中 `bites.restaurants.<key>` 一致
140-
- 信息准确:尽可能提供官方链接或来源,便于核验
141-
- 无障碍要素:优先补充实际可用的设施与服务(如通道、菜单、手语、导视、情绪支持等)
142-
- 多语言支持:建议同时更新 `zh-CN` 与 `en` 两个翻译文件
143-
144-
如对页面结构或数据流程有改进建议,欢迎提交 PR 或在 Discussions 中讨论。
50+
- 新增或修正公益活动(会议、竞赛、活动)信息
51+
- 新增或修正无障碍友好美食地信息
52+
- 补充无障碍要素、来源链接与说明
53+
54+
提交方式:
55+
56+
- 在数据仓库发起 Pull Request
57+
- 或在数据仓库提交 Issue,由维护者协助跟进
58+
59+
如对本仓库页面结构或展示逻辑有改进建议,欢迎在本仓库继续提交 PR 或在 Discussions 讨论。
60+
61+
💡 **新手友好提示**:如果您不熟悉 Pull Request 流程,也可以通过 Discussions 和 Issues 提交信息,我们来协助整理。
62+
63+
> 🎉 **每一份贡献都很珍贵,欢迎您的参与!**
14564
14665
## 开发指南
14766

14867
### 环境准备
14968

150-
**Bun**: 本项目使用 [Bun](https://bun.sh/) 作为包管理器和运行时。
69+
**Bun**: 本项目使用 [Bun][8] 作为包管理器和运行时。
15170

15271
### 本地启动
15372

15473
1. **克隆项目**
15574

156-
```bash
157-
git clone <your-repository-url>
158-
cd GoodAction-Hub
159-
```
75+
```bash
76+
git clone <your-repository-url>
77+
cd GoodAction-Hub
78+
```
16079

16180
2. **安装依赖**
16281

163-
```bash
164-
bun install
165-
```
82+
```bash
83+
bun install
84+
```
16685

16786
3. **激活 Git Hook(此步骤会在安装依赖后自动执行)**
16887

@@ -172,17 +91,17 @@ const restaurantCoords = {
17291

17392
4. **启动开发服务器**
17493

175-
```bash
176-
bun run dev
177-
```
94+
```bash
95+
bun run dev
96+
```
17897

17998
5. **(可选)剪枝**
18099

181-
```bash
182-
bun run knip
183-
```
100+
```bash
101+
bun run knip
102+
```
184103

185-
现在,在浏览器中打开 [http://localhost:3000](http://localhost:3000) 即可看到项目页面。
104+
现在,在浏览器中打开 http://localhost:3000 即可看到项目页面。
186105

187106
### 部署与运维
188107

@@ -199,7 +118,21 @@ const restaurantCoords = {
199118

200119
### 技术栈
201120

202-
- **框架**: [Next.js](https://nextjs.org/)
203-
- **UI**: [Tailwind CSS](https://tailwindcss.com/) & [shadcn/ui](https://ui.shadcn.com/)
204-
- **状态管理**: [Zustand](https://github.com/pmndrs/zustand)
205-
- **搜索**: [Fuse.js](https://github.com/krisk/fuse)
121+
- **框架**: [Next.js][9]
122+
- **UI**: [Tailwind CSS][10] & [shadcn/ui][11]
123+
- **状态管理**: [Zustand][12]
124+
- **搜索**: [Fuse.js][13]
125+
126+
[1]: https://github.com/GoodAction-Hub/GoodAction-Hub.github.io/actions/workflows/deploy.yml/badge.svg
127+
[2]: https://github.com/GoodAction-Hub/GoodAction-Hub.github.io/actions/workflows/deploy.yml
128+
[3]: https://github.com/codespaces/badge.svg
129+
[4]: https://codespaces.new/GoodAction-Hub/GoodAction-Hub.github.io
130+
[5]: https://gitpod.io/button/open-in-gitpod.svg
131+
[6]: https://gitpod.io/?autostart=true#https://github.com/GoodAction-Hub/GoodAction-Hub.github.io
132+
[7]: https://github.com/hust-open-atom-club/open-source-deadlines
133+
[8]: https://bun.sh/
134+
[9]: https://nextjs.org/
135+
[10]: https://tailwindcss.com/
136+
[11]: https://ui.shadcn.com/
137+
[12]: https://github.com/pmndrs/zustand
138+
[13]: https://github.com/krisk/fuse

0 commit comments

Comments
 (0)