Skip to content

nightt5879/DoubleDuckLab

Repository files navigation

🦆🦆 DoubleDuckLab (DDLab)

中文 | English

一个基于 Astro 构建的现代化课题组官网模板, 为科研团队设计。

项目特点

  • 基于 Astro 构建,静态生成,速度极快
  • JSON / Markdown 内容驱动,无需后端
  • 专为 科研团队官网 场景设计
  • 响应式布局
  • 深色 / 浅色模式
  • 可直接部署到 Cloudflare Pages / Vercel

在线访问

👉 https://doubleducklab.com

项目预览

Preview (Light) Preview (Dark)

左:Light / 右:Dark(点击图片可直接访问 doubleducklab.com)


快速开始

克隆项目:

git clone https://github.com/nightt5879/doubleducklab.git cd doubleducklab

安装依赖:

npm install

构建项目:

npm run build

本地预览:

npm run preview

访问:

http://localhost:4321 

内容编辑

网站主要内容存储在:

src/content/ 

例如:

members/*.md papers/*.md news/*/*_cn.md news/*/*_en.md project/ join/*/overview_cn.md join/*/overview_en/md 

修改这些文件即可更新网站内容。接下来将从主页开始讲解能修改的内容:

修改站点品牌与网站名称

  • brand:用于左上角品牌(Header)
  • siteName:用于首页 Hero 标题和浏览器标签页标题(<title>

请编辑文件:

src/data/site.zh.json  src/data/site.en.json

示例:

{ "brand": "DOUBLEDUCK·LAB", "siteName": "DoubleDuckLab" }

修改后效果:

  • Header 左上角显示 brand
  • 首页主标题显示 siteName
  • 页面标题显示为 页面名 · siteName(例如:新闻 · DoubleDuckLab

执行验证:

npm run build npm run preview

首页文案配置(中英文)

首页 Hero、Highlights、Featured Projects 标题都来自:

  • src/data/site.zh.json(中文)
  • src/data/site.en.json(英文)

重点字段(两份文件都建议保持同结构):

{ "siteName": "DoubleDuckLab", "home": { "intro": "首页 Hero 副标题文案", "sections": { "highlights": "Highlights/重点信息 标题", "featuredProjects": "Featured Projects/精选项目 标题" }, "highlights": [ { "title": "研究方向", "desc": "研究方向描述" }, { "title": "近期成果", "desc": "近期成果描述" }, { "title": "招生与合作", "desc": "招生方向、合作方式、联系方式描述" } ] } }

招生与合作(Join)内容配置(双语 Markdown)

/join/en/join 采用 Markdown 内容驱动,路径如下:

src/content/join/recruitment/ overview_cn.md overview_en.md 

说明:

  • 中文页读取 overview_cn.md
  • 英文页读取 overview_en.md
  • frontmatter.title 可选,用于页面主标题
  • 正文支持完整 Markdown(列表、图片、代码块等)

Members 内容配置(含头像)

成员内容使用 Astro Content Collections,文件位置:

src/content/members/*.md 

头像资源目录:

public/member/images/ 

默认头像(未匹配到成员头像时使用):

public/images/avatar-default.png 

1) 最小模板(必填字段)

--- id: "zhang-wei" name: zh: "张伟" en: "Wei Zhang" role: zh: "博士生" en: "PhD" area: zh: "多模态智能体" en: "Multimodal Agents"

2) 完整模板(含可选字段)

--- id: "li-ming" name: zh: "李明" en: "Ming Li" role: zh: "硕士生" en: "Master" status: zh: "在读" en: "Current" area: zh: "机器人规划" en: "Robot Planning" bio: zh: "研究方向聚焦于机器人规划与控制。" en: "Focused on robot planning and control." avatar: "/member/images/custom-li-ming.png" links: scholar: "https://scholar.google.com/" github: "https://github.com/yourname" homepage: "https://example.com" email: "liming@xxx.com" ---

字段说明:

  • 必填:idname.zh/enrole.zh/enarea.zh/en
  • 可选:statusbioavatarlinks
  • links 子字段可选:scholargithubhomepageemail

显示规则(不填即不显示):

  • 不写 bio:详情页不显示简介区块
  • links 四项都不写:详情页不显示 Links 区块
  • links.email 写了:详情页显示完整邮箱文本,可点击复制。
  • 不写 status:列表卡片右上角不显示状态角标(PI 默认也不显示)

3) 头像自动匹配规则

系统会自动按 name 去找同名头像:

public/member/images/<name>.png public/member/images/<name>.jpg public/member/images/<name>.svg 

示例:

  • name.zh: "张教授" -> public/member/images/张教授.png
  • name.en: "Prof. Zhang" -> public/member/images/Prof. Zhang.jpg

支持中文文件名。

4) 成员排序规则(默认)

列表页默认按以下顺序展示:

  1. PI(负责人)
  2. 在组成员:PhD -> Master -> RA
  3. 离组成员:PhD -> Master -> RA

状态角标颜色:

  • 蓝色:在读 / 在职Current / Active
  • 绿色:已毕业 / 已离开Alumni / Former

项目(project)内容配置(双语 Markdown)

项目模块采用“每个项目一个目录 + 中英文各两篇 Markdown(概览/背景)”的结构。

目录结构:

src/content/projects/<slug>/ overview_cn.md overview_en.md background_cn.md background_en.md 

说明:

  • <slug> 会作为项目详情页路径:/projects/<slug>//en/projects/<slug>/
  • overview_* 用于“项目概览”区块
  • background_* 用于“背景与目标”区块
  • 正文是标准 Markdown,支持图片、列表、代码块等

overview 文件支持可选 frontmatter(建议写):

title: "Project Orion" tag: "Embodied AI" status: "进行中" links: repo: "https://github.com/xxx" demo: "https://example.com/demo" paper: "https://example.com/paper"

显示逻辑:

  • 详情页固定保留:项目概览、背景与目标
  • links 三项(repo/demo/paper)全部可选
  • 三项都不写:Links 区块不显示
  • 只写某几项:只显示对应按钮
  • 列表卡片只显示上方 badge 状态,不再重复显示“项目状态:xxx”文案

项目图片建议(prj)

将项目图片放到:

public/prj/ 

在项目 markdown 里引用:

![项目配图](/prj/prj_template.png)

或者也可以单独一个项目创建一个文件夹方便管理

新增一个项目(最短步骤)

  1. 新建目录:src/content/projects/my-new-project/
  2. 放四个文件:overview_cn.mdoverview_en.mdbackground_cn.mdbackground_en.md
  3. overview_cn.md / overview_en.md 顶部填 title/tag/status/links(可选)
  4. 正文写 Markdown,图片放 public/prj 后用 /prj/xxx.png 引用
  5. 运行 npm run buildnpm run preview 验证

Papers 内容配置

论文内容使用 Astro Content Collections,文件位置:

src/content/papers/*.md 

每篇 paper 的 frontmatter 最小模板(仅必填):

year: 2025 title: "Embodied Skill Transfer with Sparse Demo" venue: "ICRA"

完整模板(可选字段全部展示):

--- year: 2025 title: "Embodied Skill Transfer with Sparse Demo" venue: "ICRA" abstract: |  We study skill transfer with sparse demonstrations and propose a lightweight pipeline  that improves generalization across tasks. links: online: "https://example.com/paper" pdf: "/papers/embodied-skill-transfer.pdf" project: "https://doubleducklab.com/projects/embodied-skill-transfer" code: "https://github.com/nightt5879/DoubleDuckLab" bibtex: |  @inproceedings{demo2025,  title={Embodied Skill Transfer with Sparse Demo},  author={First Author and Second Author},  booktitle={ICRA},  year={2025}  } ---

字段说明:

  • 必填:yeartitlevenue
  • 可选:abstractlinksbibtex
  • links 子字段全部可选:onlinepdfprojectcode

详情页显示规则:

  • 不写 abstract:不显示 Abstract/摘要 区块
  • links 四项都不写:不显示 Links 区块
  • links 只写某一项:仅显示对应按钮
  • 不写 bibtex:不显示 Citation (BibTeX) 区块

links.pdf 支持两种写法:

  • 外链:https://...
  • 站内静态路径:/papers/xxx.pdf

如果使用站内路径,请把 PDF 文件放到:

public/papers/xxx.pdf 

News 内容配置(双语 Markdown)

新闻模块采用“每条新闻一个目录 + 中英文各一篇 Markdown”的逻辑。
你只要按下面 4 步操作,就会自动出现在新闻列表和详情页。

1) 新建新闻目录(决定详情页 URL)

src/content/news/<slug>/ 

<slug> 会直接作为详情页路径:

  • 中文:/news/<slug>/
  • 英文:/en/news/<slug>/

示例:

src/content/news/2026-02-20/ 

2) 在目录内放中英文两个文件(必须成对)

src/content/news/<slug>/ 实验室春季招新启动_cn.md Spring_recruitment_started_en.md 

命名规则:

  • 中文文件必须以 _cn.md 结尾
  • 英文文件必须以 _en.md 结尾
  • 文件名前半部分会作为该语言标题(_ 会自动转空格)

也就是说,上面示例最终标题会是:

  • 中文标题:实验室春季招新启动
  • 英文标题:Spring recruitment started

3) 写正文(支持完整 Markdown)

正文可以直接使用 Markdown 语法:

  • 段落、标题、列表
  • 图片、链接
  • 代码块、引用等

可选 frontmatter(推荐保留 date):

date: "2026-02-20"

说明:

  • date 可选;不写时会尝试从目录名推断(如 2026-02-20
  • 中英文正文互相独立,可分别编辑

4) 图片资源放 public/news 并在正文引用

建议目录:

public/news/ 

在 Markdown 里这样写:

![配图说明](/news/news_template.png)

与project一样,是可以分具体的小文件,方便进行管理

news模块常见问题

  • 只放了 _cn.md 或只放了 _en.md:该新闻不完整。
  • 文件名后缀写成 _zh.md:不会被识别,必须是 _cn.md
  • 图片不显示:确认路径是 /news/xxx.png,并且文件真实位于 public/news/xxx.png

部署

推荐使用 Cloudflare Pages

构建命令:

npm run build 

输出目录:

dist 

上面指令就完成了网站的静态编译,接下来会从0开始完成使用cloudflare pages进行配置,具体请点这里

🗺 Roadmap

计划中的功能:

  • 可视化编辑主页元素
  • 自动通过Google scholar抓取论文
  • 更加0代码基础的可视化编辑后台(优先本地)

贡献

欢迎提交 Issue 或 Pull Request。

开源协议

MIT License

关于项目名称

DoubleDuckLab 来源于中山大学的一个网络昵称 “双鸭山大学”。

项目旨在为科研团队提供一个简单、现代、易维护的官网模板。

Releases

No releases published

Packages

 
 
 

Contributors