AstroCorporate Website

monarda — Astro Business Template

By lentago

Monarda is an Astro fundraising campaign website template published by Lentago Labs. It generates static pages from a single configuration file and deploys to the user's own GitHub Pages or AWS account.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-01View source

What stands out

A quick read of the recorded project description.

01

Astro-based static fundraising campaign page with four sections: hero, story, donation, and contact/volunteer

02

Campaign information is edited in a single file, campaign.config.ts

03

Donations are completed via the payment processor's hosted page or embed component; the template does not handle card data

04

Deploys by default to GitHub Pages for free; optionally S3 + CloudFront with GitHub OIDC, avoiding long-term keys

05

Includes INTAKE.md questionnaire and DRY-RUN.md timed rehearsal document for operators to follow during delivery

06

PR gates include type checking, build, and pa11y-based WCAG 2 AA checks

Template Details

Monarda is a static website template for fundraising campaigns, built with Astro. The page contains four sections: a hero area showing the campaign name, tagline, goal, deadline, and an optional progress bar; the campaign story; a donation button or embed component hosted by a payment processor; and a contact/volunteer section. The site outputs pure static HTML, uses system fonts, includes no trackers, and runs no JavaScript in the browser.

The template is designed around "client ownership": the code, website, domain, payment processor account, and funds all belong to the user. Lentago does not host the site, hold funds, or touch donor data. The donation portion does not handle card data; payment is completed on the payment processor's own page.

In use, campaign information is centralized in a single file, campaign.config.ts, including name, tagline, goal, deadline, story, colors, donation component, and contact information. Deployment offers two paths: by default, free hosting on GitHub Pages, published via the repository's GitHub Actions workflow; optionally, S3 + CloudFront, authenticating to the user's own AWS account via GitHub OIDC for short-term credentials without storing long-term AWS keys. That workflow is disabled by default and requires filling in four placeholders before enabling.

The repository also includes an INTAKE.md questionnaire and a DRY-RUN.md timed rehearsal document for operators, plus ADR documents recording design decisions about donation embeds and client ownership. The README states that the code, prompts, and documentation were written by the author together with Claude, and the author describes themselves as an infrastructure operator rather than a software engineer.

AstroCorporate Website

Is it right for your project?

Use Cases

  • Build a single-page campaign website that accepts donations for a nonprofit or community event
  • An operator collects information via the INTAKE questionnaire and deploys to the client's own GitHub or AWS account
  • Host the campaign page for free on GitHub Pages and bind a custom domain
  • Use S3 + CloudFront to provide a custom domain and CDN distribution for the campaign page
  • Use the DRY-RUN timed rehearsal to work through time-consuming steps such as DNS and AWS OIDC roles before final delivery

Suitable For

  • Teams that need to launch a single-page fundraising campaign quickly and want to own the code and accounts themselves
  • Users willing to edit a TypeScript configuration file and run npm commands
  • Operators who accept that the donation flow is hosted by a third-party payment processor and that payments are not handled on this site
  • Campaign pages that need static hosting and have no backend form-receiving capability of their own

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Run npm install first, then npm run dev for local preview, and npm run build to generate the static site in ./dist

  2. 2

    Fill in the campaign name, tagline, goal, deadline, story, colors, donation, and contact information in campaign.config.ts

  3. 3

    For donations, choose a payment processor that supports embed code or a donation link, and set donate.embedHtml or donate.buttonUrl

  4. 4

    The contact section has no built-in backend; set contact.email to generate a mailto button, or paste a hosted form embed code

  5. 5

    For GitHub Pages deployment, set Source to GitHub Actions in the repository's Settings → Pages; for project sites, set base: "/repo/"

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • The optional S3 + CloudFront deployment option incurs costs on the user's AWS account; the default GitHub Pages deployment is free.
  • The donation feature depends on third-party payment processors (such as Givebutter, Zeffy, PayPal, Donorbox/Stripe); users must confirm current rates, eligibility, and settlement terms with the processor themselves.
  • The template includes no backend and cannot receive form submissions on its own; the contact section can only use a mailto link or paste embed code from a third-party hosted form (such as Google Forms, Tally, Jotform).
  • The S3 + CloudFront deployment workflow is disabled by default and must be enabled after filling in four clearly marked placeholders and configuring an AWS OIDC role.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone cannot be used to judge them.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

This option costs money on AWS; Pages doesn't.

Original README

Confirm current fees, eligibility, and payout terms directly with them.

Original README

This kit doesn't ship a backend — there's no server of its own to receive a form submission.

Original README

It ships switched off until you fill in four clearly-marked placeholders.

Original README
https://github.com/lentago/monarda/blob/main/LICENSEhttps://github.com/lentago/monarda/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
Astro
Website type
Corporate Website
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-10-01
Screenshot last checked
2026-10-01

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 2a6e4e32850553491c3369bca511bb57780a17cbc2b43f327bb7a5f3b01e7d6b

2026-10-01T15:28:55.014Z

Source file / repository
<!-- 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>

[![main](https://img.shields.io/github/check-runs/lentago/monarda/main?style=flat-square&labelColor=0e2b1a&color=1b4b2e&label=main)](https://github.com/lentago/monarda/actions) [![License](https://img.shields.io/github/license/lentago/monarda?style=flat-square&labelColor=0e2b1a&color=1b4b2e)](https://github.com/lentago/monarda/blob/main/LICENSE) [![Ask DeepWiki](https://img.shields.io/badge/Ask-DeepWiki-1b4b2e?style=flat-square&labelColor=0e2b1a&logo=readthedocs&logoColor=E0A81C)](https://deepwiki.com/lentago/monarda)

![Template](https://img.shields.io/badge/Template-1b4b2e?style=flat-square&labelColor=0e2b1a) ![Astro](https://img.shields.io/badge/Astro-1b4b2e?style=flat-square&labelColor=0e2b1a) ![MIT](https://img.shields.io/badge/MIT-1b4b2e?style=flat-square&labelColor=0e2b1a)

# 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.
-->
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.