基于 Astro 的静态筹款活动页面,包含 hero、故事、捐赠、联系/志愿者四个区块
monarda — Astro 企业官网模板
作者 lentago
Monarda 是 Lentago Labs 发布的 Astro 筹款活动网站模板,通过单个配置文件生成静态页面,并部署到使用者自己的 GitHub Pages 或 AWS 账户。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
活动信息集中在 campaign.config.ts 单个文件中编辑
捐赠通过支付处理商的托管页面或嵌入组件完成,模板不接触银行卡数据
默认使用 GitHub Pages 免费部署,可选 S3 + CloudFront 并通过 GitHub OIDC 免长期密钥
附带 INTAKE.md 问卷和 DRY-RUN.md 计时演练文档,供运营者按流程交付
PR 门禁包含类型检查、构建和基于 pa11y 的 WCAG 2 AA 检查
模板详细介绍
Monarda 是一个面向筹款活动的静态网站模板,基于 Astro 构建。页面包含四个区块:展示活动名称、标语、目标、截止日期和可选进度条的 hero 区,活动故事,由支付处理商托管的捐赠按钮或嵌入组件,以及联系/志愿者区。站点输出为纯静态 HTML,使用系统字体,不包含跟踪器,也不在浏览器中运行 JavaScript。
模板的设计围绕“客户自有”展开:代码、网站、域名、支付处理商账户和资金都归使用者所有,Lentago 不托管站点、不持有资金,也不接触捐赠者数据。捐赠部分不接触银行卡数据,支付在支付处理商自己的页面上完成。
使用方式上,活动信息集中在 campaign.config.ts 一个文件中,包括名称、标语、目标、截止日期、故事、颜色、捐赠组件和联系信息。部署提供两条路径:默认使用 GitHub Pages 免费托管,通过仓库的 GitHub Actions 工作流发布;可选使用 S3 + CloudFront,通过 GitHub OIDC 向使用者自己的 AWS 账户进行短期身份验证,不存储长期 AWS 密钥,该工作流默认关闭,需要填写四个占位符后启用。
仓库还包含面向运营者的 INTAKE.md 问卷和 DRY-RUN.md 计时演练文档,以及记录捐赠嵌入和客户所有权设计决策的 ADR 文档。README 说明代码、提示词和文档由作者与 Claude 共同撰写,作者自述为基础设施运营者而非软件工程师。
适合你的项目吗?
适用场景
- 为公益组织或社区活动搭建一个接受捐赠的单页活动网站
- 由运营者按 INTAKE 问卷收集信息后,为客户部署到客户自己的 GitHub 或 AWS 账户
- 使用 GitHub Pages 免费托管活动页面,并绑定自定义域名
- 使用 S3 + CloudFront 为活动页面提供自定义域名和 CDN 分发
- 在正式交付前通过 DRY-RUN 计时演练梳理 DNS 和 AWS OIDC 角色等耗时步骤
适合人群
- 需要快速上线单页筹款活动、且希望自行持有代码和账户的团队
- 愿意编辑 TypeScript 配置文件并运行 npm 命令的使用者
- 接受捐赠流程由第三方支付处理商托管、不在本站处理支付的运营方
- 需要静态托管、无自有后端表单接收能力的活动页面
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
先运行 npm install,再用 npm run dev 本地预览,npm run build 生成 ./dist 静态站点
- 2
在 campaign.config.ts 中填写活动名称、标语、目标、截止日期、故事、颜色、捐赠和联系信息
- 3
捐赠需选择支持嵌入代码或捐赠链接的支付处理商,并设置 donate.embedHtml 或 donate.buttonUrl
- 4
联系区没有自带后端,需设置 contact.email 生成 mailto 按钮,或粘贴托管表单嵌入代码
- 5
GitHub Pages 部署需在仓库 Settings → Pages 中将 Source 设为 GitHub Actions;项目站点需设置 base: "/repo/"
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 可选的 S3 + CloudFront 部署方案会在使用者的 AWS 账户上产生费用;默认的 GitHub Pages 部署则免费。
- 捐赠功能依赖第三方支付处理商(如 Givebutter、Zeffy、PayPal、Donorbox/Stripe),使用者需自行向处理商确认当前费率、资格与结算条款。
- 模板不包含后端,无法自行接收表单提交;联系区只能使用 mailto 链接或粘贴第三方托管表单(如 Google Forms、Tally、Jotform)的嵌入代码。
- S3 + CloudFront 部署工作流默认关闭,需先填写四个明确标记的占位符并配置 AWS OIDC 角色后才能启用。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
This option costs money on AWS; Pages doesn't.
README 原文
Confirm current fees, eligibility, and payout terms directly with them.
README 原文
This kit doesn't ship a backend — there's no server of its own to receive a form submission.
README 原文
https://github.com/lentago/monarda/blob/main/LICENSEhttps://github.com/lentago/monarda/blob/main/README.mdIt ships switched off until you fill in four clearly-marked placeholders.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Astro
- 网站类型
- 企业官网
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-01
- 截图检查日期
- 2026-10-01
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: 2a6e4e32850553491c3369bca511bb57780a17cbc2b43f327bb7a5f3b01e7d6b
2026-10-01T15:28:55.014Z
来源文件 / 仓库<!-- Lentago Labs brand header — generated by lentago/.github → brand/generate.py.
Regenerate there; do not hand-edit the banner or badge URLs. -->
<a href="https://lentago.dev"><img src="./assets/banner.svg" alt="monarda — campaign-site kit: fast static Astro site + timed deploy runbook, into your own account" width="100%"></a>
[](https://github.com/lentago/monarda/actions) [](https://github.com/lentago/monarda/blob/main/LICENSE) [](https://deepwiki.com/lentago/monarda)
  
# monarda — campaign-site kit
A ready-to-run **fundraising campaign website**: a fast, static, accessible
page you set up by editing **one file**. Workflows deploy it to **your own**
GitHub Pages or AWS account — no server to run, no card data to handle, and
nothing hosted by anyone but you.
**Authorship:** The code, prompts, and documentation in this repo are co-written
with [Claude](https://claude.ai) (Anthropic). I direct the work and review the
output; Claude writes the code and prose. I'm an infrastructure operator, not a
software engineer — please don't read this repo as a portfolio of coding ability.
---
This README has two readers. Find yours:
- **[For the client](#for-the-client--what-you-get-and-what-you-own)** — this
is your campaign, and this site will be yours.
- **[For the operator](#for-the-operator--running-the-dry-run)** — you're
standing the site up for someone else's campaign.
---
## For the client — what you get, and what you own
**New here?** Start with [`ADOPTION.md`](ADOPTION.md) — it walks through
everything you need in one place: what you'll need before you start, the intake
questions, the deploy drill, and how to take the site down later if you ever
need to.
**What you get:** one page for your campaign, with four sections — a hero (your
campaign name, tagline, goal, deadline, and an optional progress bar), your
story, a **donate** button or widget hosted by your payment processor, and a
**contact / volunteer** section. It's built as plain static HTML with system
fonts, no trackers, and no JavaScript running in anyone's browser, so it loads
fast and scores well on Lighthouse — Google's page-speed and accessibility
checker.
**What you own — everything:**
| Thing | Who owns it |
|---|---|
| This GitHub repository | **You** |
| The live website + domain | **You** |
| Your payment processor account + the money | **You** |
| Your AWS account (only if you choose the S3 option) | **You** |
The site lives **in your account** and runs from there. It doesn't depend on us
to keep working, and we don't host it, hold your funds, or see your donor data.
**A note on payments and safety.** This kit **never touches card data.** The
donate section either links to your processor's hosted donate page or embeds
their widget, so the payment itself happens on the processor's own secure,
PCI-compliant pages — PCI being the card industry's security standard.
That's deliberate: your money and your compliance obligations stay with the
processor, not with this website.
### Edit one file
Everything about your campaign lives in [`campaign.config.ts`](campaign.config.ts):
name, tagline, goal, deadline, story, colors, donate widget, and contact info.
Open it, fill in your details, save. The full field reference is in
[`src/config.ts`](src/config.ts).
```bash
npm install # once
npm run dev # preview locally at the printed URL
npm run build # produce the static site in ./dist
```
### Choosing a processor
Pick any processor that can give you either an **embed snippet** (a block of
HTML you paste in) or a **donate link**. Set the matching field —
`donate.embedHtml` or `donate.buttonUrl` — in the config. A few common,
no-backend options, as examples only — choose whatever fits your campaign, we
don't endorse any one of them:
| Processor | How you wire it | Notes |
|---|---|---|
| **Givebutter** | Paste their widget/embed code into `donate.embedHtml`, or use your campaign URL as `donate.buttonUrl`. | Popular for nonprofits/campaigns; hosted forms + embeds. |
| **Zeffy** | Paste the embed `<iframe>` into `donate.embedHtml`, or link the form URL. | Advertises zero platform fees. |
| **PayPal** | Use a PayPal donate-button link or hosted button as `donate.buttonUrl`. | Widely recognized; simple link-button. |
| **Donorbox / Stripe Payment Link** | Paste the embed into `donate.embedHtml`, or link the hosted page. | Both provide hosted, embeddable donation pages. |
Whichever you pick, the payment itself happens on the processor's pages, not
here. Confirm current fees, eligibility, and payout terms directly with them.
### Contact & volunteers
This kit doesn't ship a backend — there's no server of its own to receive a
form submission. In the config, set `contact.email` (renders a `mailto:`
button, the kind that opens the visitor's email app) and/or paste a hosted
form embed (Google Forms, Tally, Jotform) into `contact.formEmbedHtml`.
### Deploying (your account, your choice)
- **GitHub Pages — free, the default.** GitHub's own free static-site hosting.
In your repo, go to Settings → Pages → Source = *GitHub Actions*, then push
to `main`. [`deploy-pages.yml`](.github/workflows/deploy-pages.yml) builds
and publishes it for you. For a project site (`you.github.io/repo/`), set
`base: "/repo/"` in the config.
- **S3 + CloudFront — the paid variant.** Amazon's storage and
content-delivery services, for a custom domain with a CDN — a network of
servers that serve your site from somewhere close to each visitor. See
[`deploy-s3.yml`](.github/workflows/deploy-s3.yml): it proves its identity to
**your** AWS account with short-lived GitHub OIDC — a sign-in method that
needs no stored password or key — so there are **no long-lived AWS keys**
anywhere in this kit. It syncs to S3 and optionally clears the CloudFront
cache. It ships switched off until you fill in four clearly-marked
placeholders. This option costs money on AWS; Pages doesn't.
## For the operator — running the dry-run
Two documents drive an engagement with a client:
1. [`INTAKE.md`](INTAKE.md) — the one-page questionnaire. Every answer maps to a
`campaign.config.ts` field or a setup step. Fill it in with the client first.
2. [`DRY-RUN.md`](DRY-RUN.md) — the timed drill: from a filled intake to a live
site on the client's own account, with a checklist and a table to record the
elapsed time. **The recorded time is the receipt.** Run it once before a real
engagement to surface the slow steps (DNS, the AWS OIDC role).
The delivery rule (ADR-0007, fleet-wide): kits deploy into **client-owned**
repos/accounts — never Lentago-hosted. That's why both deploy workflows target
the client's own GitHub/AWS. See [`docs/adr/`](docs/adr/) for the decisions
behind the donate-embed and client-ownership design.
## What's here
- [`campaign.config.ts`](campaign.config.ts) — the one file a client edits
- [`src/`](src/) — the Astro site (layout, four section components, styles)
- [`.github/workflows/deploy-pages.yml`](.github/workflows/deploy-pages.yml) — free GitHub Pages deploy
- [`.github/workflows/deploy-s3.yml`](.github/workflows/deploy-s3.yml) — opt-in S3 + CloudFront deploy (OIDC, no static keys)
- [`.github/workflows/build-check.yml`](.github/workflows/build-check.yml) — PR gate: type check, build, WCAG 2 AA (pa11y)
- [`INTAKE.md`](INTAKE.md) · [`DRY-RUN.md`](DRY-RUN.md) — intake questionnaire and timed runbook
- [`docs/adr/`](docs/adr/) — architecture decision records
---
> 🌱 **Lentago Labs** is a pro-bono operations practice for organizations that
> run on volunteers, donations, and one overworked tech person. Everything here
> is free to take, and we practice what we publish: our own estate runs this
> way, in the open. Start at the [org profile](https://github.com/lentago), and
> read this repo on [DeepWiki](https://deepwiki.com/lentago/monarda).
<!--
This is a GitHub template repo. "Use this template" copies these FILES into a
new client repo; it does not copy repo settings. Fleet settings (merge button,
topics, branch ruleset) are applied separately — see the fleet's ops docs.
-->
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客

astro-landing-page
An Astro + Tailwind CSS Example/Template for Landing Pages
Astro · 企业官网

Tailcast
Dark-themed website template built on Astro and Tailwind CSS
Astro · 企业官网

Positivus
A stunning and versatile Astro theme designed for digital marketing agencies.
Astro · 企业官网

qwind
⭕️ Qwind: A template to make your website using Qwik + Tailwind CSS.
Astro · 工具站

agency-landing-page-Astrojs
A simple agency landing page made with astrojs and tailwindcss
Astro · 企业官网
