From ea5ecb7b70aced5f72d1ede7783aa1077050f466 Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Tue, 16 Jun 2026 18:14:25 +0800 Subject: [PATCH 1/9] feat(docs): add in-app documentation system Signed-off-by: Efren Lim --- docs/user/backers/index.md | 33 +++ docs/user/donations/index.md | 44 ++++ docs/user/donations/make-donation/index.md | 48 ++++ docs/user/donations/manage-donations/index.md | 17 ++ docs/user/getting-started/index.md | 38 +++ .../initiatives/browsing-initiatives/index.md | 50 ++++ .../initiatives/create-initiative/index.md | 75 ++++++ docs/user/initiatives/index.md | 34 +++ .../initiatives/manage-initiative/index.md | 29 +++ docs/user/payment-account/index.md | 17 ++ docs/user/reimbursements/index.md | 34 +++ frontend/.gitignore | 3 + frontend/app/assets/styles/utils/_docs.scss | 75 ++++++ frontend/app/assets/styles/utils/index.scss | 1 + .../documentation/components/docs-search.vue | 152 ++++++++++++ .../documentation/components/docs-sidebar.vue | 85 +++++++ .../documentation/view/docs-article.vue | 220 ++++++++++++++++++ .../documentation/view/docs-landing.vue | 100 ++++++++ .../documentation/useDocumentation.ts | 24 ++ .../documentation/useDocumentationNav.ts | 20 ++ frontend/app/config/menu/header.ts | 1 + frontend/app/config/routes.ts | 1 + frontend/app/pages/docs/[...slug].vue | 23 ++ frontend/app/pages/docs/index.vue | 28 +++ frontend/package.json | 9 +- frontend/pnpm-lock.yaml | 38 +++ .../images/docs/donation-step-amount.png | Bin 0 -> 24829 bytes .../images/docs/donation-step-payment.png | Bin 0 -> 24798 bytes .../images/docs/fundraising-details-form.png | Bin 0 -> 34695 bytes .../images/docs/fundraising-type-select.png | Bin 0 -> 35746 bytes .../public/images/docs/initiatives-browse.png | Bin 0 -> 85974 bytes .../public/images/docs/initiatives-detail.png | Bin 0 -> 73155 bytes frontend/scripts/build-docs.mjs | 84 +++++++ frontend/server/api/docs/[...slug].get.ts | 135 +++++++++++ frontend/server/api/docs/index.get.ts | 89 +++++++ frontend/shared/types/documentation.types.ts | 40 ++++ 36 files changed, 1545 insertions(+), 2 deletions(-) create mode 100644 docs/user/backers/index.md create mode 100644 docs/user/donations/index.md create mode 100644 docs/user/donations/make-donation/index.md create mode 100644 docs/user/donations/manage-donations/index.md create mode 100644 docs/user/getting-started/index.md create mode 100644 docs/user/initiatives/browsing-initiatives/index.md create mode 100644 docs/user/initiatives/create-initiative/index.md create mode 100644 docs/user/initiatives/index.md create mode 100644 docs/user/initiatives/manage-initiative/index.md create mode 100644 docs/user/payment-account/index.md create mode 100644 docs/user/reimbursements/index.md create mode 100644 frontend/app/assets/styles/utils/_docs.scss create mode 100644 frontend/app/components/modules/documentation/components/docs-search.vue create mode 100644 frontend/app/components/modules/documentation/components/docs-sidebar.vue create mode 100644 frontend/app/components/modules/documentation/view/docs-article.vue create mode 100644 frontend/app/components/modules/documentation/view/docs-landing.vue create mode 100644 frontend/app/composables/documentation/useDocumentation.ts create mode 100644 frontend/app/composables/documentation/useDocumentationNav.ts create mode 100644 frontend/app/pages/docs/[...slug].vue create mode 100644 frontend/app/pages/docs/index.vue create mode 100644 frontend/public/images/docs/donation-step-amount.png create mode 100644 frontend/public/images/docs/donation-step-payment.png create mode 100644 frontend/public/images/docs/fundraising-details-form.png create mode 100644 frontend/public/images/docs/fundraising-type-select.png create mode 100644 frontend/public/images/docs/initiatives-browse.png create mode 100644 frontend/public/images/docs/initiatives-detail.png create mode 100644 frontend/scripts/build-docs.mjs create mode 100644 frontend/server/api/docs/[...slug].get.ts create mode 100644 frontend/server/api/docs/index.get.ts create mode 100644 frontend/shared/types/documentation.types.ts diff --git a/docs/user/backers/index.md b/docs/user/backers/index.md new file mode 100644 index 00000000..bdbc0562 --- /dev/null +++ b/docs/user/backers/index.md @@ -0,0 +1,33 @@ +--- +title: Backers +description: Understand how supporters are listed on initiative pages on LFX Crowdfunding. +tags: [backers, supporters, donors, donations, anonymous] +last_updated: 2026-06-16 +display_order: 6 +--- + +Every initiative publicly recognises the people and organisations that have contributed to it. Backers are listed in two places on each initiative page. + +## Recent donations sidebar + +The initiative overview shows the most recent donations in a sidebar, including each backer's name, avatar, amount, and how long ago the donation was made. + +## Financials tab + +The **Financials** tab contains a full donations table with each backer's: + +- Name and avatar +- Donor type — **Individual** or **Company** +- Donation amount +- Date + +Use the **Load more** button at the bottom of the table to see older donations. + +## Anonymous donations + +If a donor's information is not available, their name is shown as **Anonymous**. There is no way to filter or exclude anonymous donations from the list. + +## Related sections + +- [Donations](../donations/) — how to make a donation +- [Initiatives](../initiatives/) — browse campaigns diff --git a/docs/user/donations/index.md b/docs/user/donations/index.md new file mode 100644 index 00000000..ae6a2129 --- /dev/null +++ b/docs/user/donations/index.md @@ -0,0 +1,44 @@ +--- +title: Donations +description: Learn how to donate to open source initiatives and manage your giving history on LFX Crowdfunding. +tags: [donations, giving, payments, recurring] +last_updated: 2026-06-16 +display_order: 3 +--- + +Donating to an initiative supports open source projects directly. All payments are processed securely through Stripe. + +> **Sign in required** — Making a donation requires an [LF ID](https://openprofile.dev/) account. You will be prompted to log in before your payment is processed. + +## Making a donation + +1. Open any published [initiative](../initiatives/) page +2. Click the **Donate** button +3. Choose a donation amount or enter a custom amount +4. Select **One-time** or **Monthly** recurring +5. Enter your payment details and confirm + +For a detailed walkthrough, see [Making a Donation](./make-donation/). + +## One-time vs. monthly donations + +**One-time** donations are a single charge processed immediately. + +**Monthly** donations are charged on the same date each month. You can cancel at any time — see [Managing Your Donations](./manage-donations/). + +## Donation history and managing subscriptions + +Your past donations and active monthly subscriptions are managed through the LFX platform. See [Managing Your Donations](./manage-donations/) for details. + +## Email acknowledgement and tax information + +All donations are made to the Linux Foundation, a 501(c)(6) non-profit organisation. An email acknowledgement is sent automatically after each payment. For tax purposes, please consult your tax adviser regarding the deductibility of your donations. + +## Payment security + +Payments are processed by [Stripe](https://stripe.com). LFX Crowdfunding never stores your full card details. + +## Related sections + +- [Getting Started](../getting-started/) — overview of the platform +- [Initiatives](../initiatives/) — browse campaigns to donate to diff --git a/docs/user/donations/make-donation/index.md b/docs/user/donations/make-donation/index.md new file mode 100644 index 00000000..b174c569 --- /dev/null +++ b/docs/user/donations/make-donation/index.md @@ -0,0 +1,48 @@ +--- +title: Making a Donation +description: How to make a one-time or monthly donation to an open source initiative on LFX Crowdfunding. +tags: [donations, one-time, monthly, payment, stripe] +last_updated: 2026-06-16 +display_order: 1 +--- + +> **Sign in required** — You must be signed in with your [LF ID](https://openprofile.dev/) to make a donation. + +## Starting a donation + +Open any published initiative page and click the **Donate** button. A drawer will open with the donation form. + +## Step 1 — Choose an amount and frequency + +![Donation amount selection](/images/docs/donation-step-amount.png) + +Select a preset amount or enter a custom amount in the input field. + +Then choose your donation frequency: + +- **One-time** — a single charge processed immediately +- **Monthly** — a recurring charge on the same date each month + +Optionally, you can allocate your donation to a specific funding goal (e.g. Development, Marketing, Travel) if the initiative has defined funding categories. By default your donation goes toward all project needs. + +## Step 2 — Payment + +![Donation payment step](/images/docs/donation-step-payment.png) + +Enter your card details: + +- Card number +- Expiry date +- CVC + +If you have previously saved a card, it will be shown here. You can use it directly or click **Use a different card** to enter new details. + +**Order summary** — The drawer shows a breakdown of your donation amount and total. The Linux Foundation underwrites all transaction fees, so 100% of your donation goes to the initiative. + +Click **Donate** to process your payment. For cards that require additional verification (3D Secure), you may be prompted to authenticate with your bank. + +## After donating + +Once your payment is processed, you will see a confirmation screen with the initiative name and amount. From there you can share your donation on X or LinkedIn, or go to [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations) to view your giving history. + +An email acknowledgement is sent automatically after each successful payment. diff --git a/docs/user/donations/manage-donations/index.md b/docs/user/donations/manage-donations/index.md new file mode 100644 index 00000000..46bd9111 --- /dev/null +++ b/docs/user/donations/manage-donations/index.md @@ -0,0 +1,17 @@ +--- +title: Managing Your Donations +description: How to view your donation history and manage recurring subscriptions on LFX Crowdfunding. +tags: [donations, history, subscriptions, recurring, cancel] +last_updated: 2026-06-16 +display_order: 2 +--- + +Your donation history and recurring subscriptions are managed through the LFX platform. Visit [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations) to access them. + +## Donation history + +The donations page lists all your past one-time and monthly donations, including the initiative name, amount, date, and payment status. + +## Managing recurring donations + +From the same page you can view all active monthly subscriptions and cancel any that you no longer want. Cancellation takes effect immediately and you will not be charged again. diff --git a/docs/user/getting-started/index.md b/docs/user/getting-started/index.md new file mode 100644 index 00000000..ee38f652 --- /dev/null +++ b/docs/user/getting-started/index.md @@ -0,0 +1,38 @@ +--- +title: Getting Started +description: Learn how to use LFX Crowdfunding to support open source projects and communities. +tags: [getting-started, overview, introduction] +last_updated: 2026-06-16 +display_order: 1 +--- + +LFX Crowdfunding is the Linux Foundation's platform for funding open source initiatives. Whether you want to support a project you care about or raise funds for your own community, this guide will help you get started. + +## What is LFX Crowdfunding? + +LFX Crowdfunding connects open source projects with donors and sponsors. Projects can create fundraising initiatives to cover development costs, events, infrastructure, and more. + +## How it works + +1. **Browse initiatives** — explore active fundraising campaigns across the open source ecosystem +2. **Choose a project** — find a project that aligns with your interests or business goals +3. **Make a donation** — contribute one-time or set up a recurring monthly donation +4. **Track your impact** — see how funds are being used through transparent financial reporting + +## For donors + +You can donate to any published initiative directly from its page. Donations are processed securely via Stripe and you will receive an email receipt. + +- One-time donations are accepted in any amount +- Recurring (monthly) donations can be set up and cancelled at any time +- Donations are made to the Linux Foundation, which disburses funds to projects + +## For projects + +If you manage an open source project and want to raise funds, visit the [Create an Initiative](../initiatives/create-initiative/) section to learn how. + +## Related sections + +- [Initiatives](../initiatives/) — browse and understand active campaigns +- [Donations](../donations/) — manage your giving history +- [Create an Initiative](../initiatives/create-initiative/) — start a fundraiser for your project or event diff --git a/docs/user/initiatives/browsing-initiatives/index.md b/docs/user/initiatives/browsing-initiatives/index.md new file mode 100644 index 00000000..169843e3 --- /dev/null +++ b/docs/user/initiatives/browsing-initiatives/index.md @@ -0,0 +1,50 @@ +--- +title: Browsing Initiatives +description: How to find and explore active fundraising campaigns on LFX Crowdfunding. +tags: [initiatives, browse, search, filter] +last_updated: 2026-06-16 +display_order: 1 +--- + +Go to the **Initiatives** page from the top navigation to see all active campaigns. You can search by name or filter by category. + +![Browse initiatives page](/images/docs/initiatives-browse.png) + +Each initiative card shows: + +- Project name and logo +- Fundraising goal and amount raised so far +- Number of supporters + +## Initiative detail page + +Click any initiative to view its full detail page. + +![Initiative detail page](/images/docs/initiatives-detail.png) + +The detail page includes: + +- **Overview** — the project's mission and how funds will be used +- **Financials** — a breakdown of income and expenses +- **Supporters** — a list of donors (anonymised where requested) + +## Initiative status + +| Status | Description | +|--------|-------------| +| **Submitted** | Application received and awaiting review | +| **Pending** | Under review by the LFX team | +| **Published** | Approved and active — accepting donations | +| **Declined** | Application was not approved | +| **Hidden** | Temporarily removed from public view | + +Only **Published** initiatives are visible to the public. + +## Donating to an initiative + +Use the **Donate** button on any initiative page to make a contribution. See [Donations](../../donations/) for details on the donation process. + +## Related sections + +- [Create an Initiative](../create-initiative/) — start your own campaign +- [Backers](../../backers/) — how supporters are listed on initiative pages diff --git a/docs/user/initiatives/create-initiative/index.md b/docs/user/initiatives/create-initiative/index.md new file mode 100644 index 00000000..a54659fb --- /dev/null +++ b/docs/user/initiatives/create-initiative/index.md @@ -0,0 +1,75 @@ +--- +title: Create an Initiative +description: How to create a fundraising initiative for your open source project or event on LFX Crowdfunding. +tags: [initiatives, create, fundraising, project, event] +last_updated: 2026-06-16 +display_order: 2 +--- + +> **Sign in required** — Creating an initiative requires an [LF ID](https://openprofile.dev/) account. + +## Eligibility + +Your project must be related to or affiliated with the Linux Foundation. If you are unsure whether your project qualifies, contact your Linux Foundation programme manager. + +## Starting the form + +Click **Start a Fundraiser** in the header navigation to open the creation form. The form walks you through a series of steps. + +### Step 1 — Choose an initiative type + +![Initiative type selection](/images/docs/fundraising-type-select.png) + +Select the type that best describes your initiative: + +| Type | When to use | +|------|-------------| +| **Project** | An open source software project seeking ongoing funding | +| **Security Audit** | A project seeking funds for a third-party security audit | +| **Event** | A conference, meetup, or community event | +| **General Fund** | General-purpose fundraising not tied to a specific project or event | + +### Step 2 — Initiative details + +Fill in the details for your initiative. Fields vary by type, but all types ask for: + +- **Name** — the public name of your campaign (max 100 characters) +- **Elevator pitch** — a short description of what the funds will support (max 1500 characters) +- **Topic / category** — one or more categories that describe your initiative +- **Logo** — your project or event logo (JPG, PNG, GIF, or WebP; max 2 MB; 600×600 px recommended) +- **Funding goal** — your target amount in USD + +**Project** and **General Fund** initiatives additionally ask for: + +- **Beneficiaries** — the people who will receive the funds (you are added automatically as the primary beneficiary) +- **Fund distribution** — an optional breakdown of how funds will be allocated (e.g. Development, Marketing, Travel) + +**Security Audit** initiatives ask for: + +- **Repository URL** — the codebase to be audited +- **Contact information** — primary, secondary, and technical lead contacts + +**Event** initiatives ask for: + +- **Event dates** — start and end date +- **Registration URL** — link to where attendees can register +- **Location** — city and country (optional) +- **Budget distribution** — an optional breakdown across categories such as Venue, Travel, and Marketing + +![Initiative details form](/images/docs/fundraising-details-form.png) + +### Step 3 — Compliance and terms + +Before submitting, you must confirm: + +- **OFAC compliance** — that your initiative complies with US sanctions regulations +- **Terms of service** — acceptance of the LFX Platform Use Agreement + +## After submission + +Once submitted, your initiative enters a review queue. The Linux Foundation team will review your application and notify you by email once it is approved and live. You can track the status of your initiative on [My Initiatives on LFX](https://app.lfx.dev/crowdfunding/initiatives). + +## Related sections + +- [Manage Your Initiative](../manage-initiative/) — update your initiative after it is published +- [Reimbursements](../../reimbursements/) — how to set up expense reimbursements for your team diff --git a/docs/user/initiatives/index.md b/docs/user/initiatives/index.md new file mode 100644 index 00000000..93dfb75d --- /dev/null +++ b/docs/user/initiatives/index.md @@ -0,0 +1,34 @@ +--- +title: Initiatives +description: Learn about fundraising initiatives on LFX Crowdfunding — browse campaigns, create your own, and manage your initiative. +tags: [initiatives, campaigns, projects, fundraising] +last_updated: 2026-06-16 +display_order: 2 +--- + +Initiatives are fundraising campaigns created by open source projects, events, and organisations affiliated with the Linux Foundation. Each initiative has a goal, a description of how funds will be used, and a transparent record of donations received. + +## Initiative types + +| Type | Description | +|------|-------------| +| **Project** | An open source software project seeking ongoing community funding | +| **Security Audit** | A project seeking funds for a third-party security audit | +| **Event** | A conference, meetup, or community event | +| **General Fund** | General-purpose fundraising not tied to a specific project or event | + +## In this section + +- [Browsing Initiatives](./browsing-initiatives/) — find and explore active campaigns +- [Create an Initiative](./create-initiative/) — start a fundraiser for your project or event +- [Manage Your Initiative](./manage-initiative/) — update details and track financial reporting + +## For companies and sponsors + +Companies looking to sponsor open source projects can donate to any published initiative. See [For Companies](/for-companies) for more information on sponsorship packages. + +## Related sections + +- [Donations](../donations/) — how to donate and manage your giving +- [Backers](../backers/) — how supporters are listed on initiative pages +- [Reimbursements](../reimbursements/) — how expense reimbursements work diff --git a/docs/user/initiatives/manage-initiative/index.md b/docs/user/initiatives/manage-initiative/index.md new file mode 100644 index 00000000..57177ef0 --- /dev/null +++ b/docs/user/initiatives/manage-initiative/index.md @@ -0,0 +1,29 @@ +--- +title: Manage Your Initiative +description: How to update and manage a published initiative on LFX Crowdfunding. +tags: [initiatives, manage, edit, financials, reporting] +last_updated: 2026-06-16 +display_order: 3 +--- + +Once your initiative is approved and published, you can manage it through the LFX platform. Visit [My Initiatives on LFX](https://app.lfx.dev/crowdfunding/initiatives) to update your initiative's details. + +## What you can update + +From the LFX platform you can update your initiative's name, description, logo, funding goal, beneficiaries, and fund distribution at any time. + +## Financial reporting + +All income and expenses are visible on your initiative's **Financials** tab on LFX Crowdfunding. This includes: + +- Total funds raised +- A breakdown of donations by supporter +- Approved expenses by category + +Financial data is automatically synced from the Linux Foundation's ledger system. + +## Related sections + +- [Create an Initiative](../create-initiative/) — how to submit a new initiative +- [Reimbursements](../../reimbursements/) — how expense reimbursements work for your team +- [Backers](../../backers/) — how supporters are listed on your initiative page diff --git a/docs/user/payment-account/index.md b/docs/user/payment-account/index.md new file mode 100644 index 00000000..8cb519c6 --- /dev/null +++ b/docs/user/payment-account/index.md @@ -0,0 +1,17 @@ +--- +title: Payment Account +description: How to manage your saved payment method and billing details on LFX Crowdfunding. +tags: [payment, card, billing, stripe] +last_updated: 2026-06-16 +display_order: 5 +--- + +Payment account management — including updating or removing your saved card — is handled through the LFX platform. Visit [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations) to manage your payment details. + +## Saving a card + +Your card is saved automatically the first time you complete a donation. You do not need to set anything up in advance. + +## Updating your card + +To update your saved card, visit [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations). Your new card will be used for all future donations and active monthly subscriptions. diff --git a/docs/user/reimbursements/index.md b/docs/user/reimbursements/index.md new file mode 100644 index 00000000..35cbafba --- /dev/null +++ b/docs/user/reimbursements/index.md @@ -0,0 +1,34 @@ +--- +title: Reimbursements +description: How expense reimbursements work for initiative owners and beneficiaries on LFX Crowdfunding. +tags: [reimbursements, expenses, beneficiaries, expensify] +last_updated: 2026-06-16 +display_order: 7 +--- + +Reimbursements allow initiative owners and their designated beneficiaries to claim expenses against initiative funds. The process is managed through an external expense service — LFX Crowdfunding handles the setup and approval flow. + +## Who can submit expenses + +Anyone listed as a **beneficiary** on an initiative can submit expense reports. The initiative owner is automatically a beneficiary. Additional beneficiaries can be added during initiative creation or editing by providing their name and email address. + +## Submitting an expense + +Expense submission is handled externally through the reimbursement service. Once you have been added as a beneficiary on a published initiative, you will receive access to submit expense reports outside of LFX Crowdfunding. + +Expenses are categorised based on the funding goals defined on the initiative (e.g. Development, Marketing, Travel). + +## Approving or rejecting expenses + +When a beneficiary submits an expense report, the initiative owner receives an email with **Approve** and **Reject** links. Clicking either link processes the action immediately — no login is required. + +Approved expenses are reflected in the initiative's **Financials** tab under the expenses breakdown. + +## Viewing expenses + +All approved expenses are visible to anyone on the initiative's **Financials** tab, showing the date, category, description, and amount of each expense. + +## Related sections + +- [Create an Initiative](../initiatives/create-initiative/) — set up an initiative and add beneficiaries +- [Initiatives](../initiatives/) — understand the initiative detail page diff --git a/frontend/.gitignore b/frontend/.gitignore index 7813df43..a3340558 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -22,3 +22,6 @@ node_modules # Playwright playwright-report/ test-results/ + +# Generated docs search index +public/assets/docs/search-index.json diff --git a/frontend/app/assets/styles/utils/_docs.scss b/frontend/app/assets/styles/utils/_docs.scss new file mode 100644 index 00000000..3a785bbb --- /dev/null +++ b/frontend/app/assets/styles/utils/_docs.scss @@ -0,0 +1,75 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +// Extra styles applied to markdown rendered inside documentation article pages. +// Extends .lfx-rich-text with table support and documentation-appropriate heading scale. +.docs-article-body { + @apply text-base leading-7; + + h1 { + @apply text-2xl mt-8 mb-3; + } + + h2 { + @apply text-xl mt-8 mb-2; + } + + h3 { + @apply text-lg mt-6 mb-2; + } + + h4 { + @apply mt-4 mb-1; + } + + p { + @apply mb-4; + } + + ul, + ol { + @apply mb-4 space-y-1.5; + } + + // Callout blockquotes (e.g. "> **Note** — ...") + blockquote { + @apply not-italic border-l-4 border-brand-400 bg-brand-50 text-brand-900 px-4 py-3 my-5 rounded-r-md; + + p { + @apply mb-0; + } + } + + // Markdown tables + table { + @apply w-full border-collapse mb-6 text-sm; + + thead { + th { + @apply border-b-2 border-neutral-200 px-4 py-2.5 text-left font-semibold text-neutral-700 bg-neutral-50; + + &:first-child { + @apply rounded-tl-lg; + } + + &:last-child { + @apply rounded-tr-lg; + } + } + } + + tbody { + tr { + @apply border-b border-neutral-100 transition-colors hover:bg-neutral-50; + + &:last-child { + @apply border-b-0; + } + } + + td { + @apply px-4 py-3 text-neutral-700; + } + } + } +} diff --git a/frontend/app/assets/styles/utils/index.scss b/frontend/app/assets/styles/utils/index.scss index 4d78d9ef..414bba96 100644 --- a/frontend/app/assets/styles/utils/index.scss +++ b/frontend/app/assets/styles/utils/index.scss @@ -6,3 +6,4 @@ @use 'dependency-display'; @use 'badge-shine'; @use 'rich-text'; +@use 'docs'; diff --git a/frontend/app/components/modules/documentation/components/docs-search.vue b/frontend/app/components/modules/documentation/components/docs-search.vue new file mode 100644 index 00000000..6ad872c3 --- /dev/null +++ b/frontend/app/components/modules/documentation/components/docs-search.vue @@ -0,0 +1,152 @@ + + + + + + diff --git a/frontend/app/components/modules/documentation/components/docs-sidebar.vue b/frontend/app/components/modules/documentation/components/docs-sidebar.vue new file mode 100644 index 00000000..6ab6eadb --- /dev/null +++ b/frontend/app/components/modules/documentation/components/docs-sidebar.vue @@ -0,0 +1,85 @@ + + + + + + diff --git a/frontend/app/components/modules/documentation/view/docs-article.vue b/frontend/app/components/modules/documentation/view/docs-article.vue new file mode 100644 index 00000000..32e497f7 --- /dev/null +++ b/frontend/app/components/modules/documentation/view/docs-article.vue @@ -0,0 +1,220 @@ + + + + + + diff --git a/frontend/app/components/modules/documentation/view/docs-landing.vue b/frontend/app/components/modules/documentation/view/docs-landing.vue new file mode 100644 index 00000000..4849e93c --- /dev/null +++ b/frontend/app/components/modules/documentation/view/docs-landing.vue @@ -0,0 +1,100 @@ + + + + + + diff --git a/frontend/app/composables/documentation/useDocumentation.ts b/frontend/app/composables/documentation/useDocumentation.ts new file mode 100644 index 00000000..088f6284 --- /dev/null +++ b/frontend/app/composables/documentation/useDocumentation.ts @@ -0,0 +1,24 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { onServerPrefetch } from 'vue'; +import { useQuery } from '@tanstack/vue-query'; +import type { MaybeRefOrGetter } from 'vue'; +import type { DocArticle } from '#shared/types/documentation.types'; + +export function useDocumentation(slug: MaybeRefOrGetter) { + const slugRef = toRef(slug); + + const query = useQuery({ + queryKey: ['docs', 'article', slugRef] as const, + queryFn: () => $fetch(`/api/docs/${slugRef.value}`), + staleTime: 5 * 60 * 1000, + retry: false, + }); + + onServerPrefetch(async () => { + await query.suspense(); + }); + + return query; +} diff --git a/frontend/app/composables/documentation/useDocumentationNav.ts b/frontend/app/composables/documentation/useDocumentationNav.ts new file mode 100644 index 00000000..e8856a97 --- /dev/null +++ b/frontend/app/composables/documentation/useDocumentationNav.ts @@ -0,0 +1,20 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { onServerPrefetch } from 'vue'; +import { useQuery } from '@tanstack/vue-query'; +import type { DocSectionsResponse } from '#shared/types/documentation.types'; + +export function useDocumentationNav() { + const query = useQuery({ + queryKey: ['docs', 'nav'] as const, + queryFn: () => $fetch('/api/docs'), + staleTime: 5 * 60 * 1000, + }); + + onServerPrefetch(async () => { + await query.suspense(); + }); + + return query; +} diff --git a/frontend/app/config/menu/header.ts b/frontend/app/config/menu/header.ts index 3f36ee7e..b5f22fe3 100644 --- a/frontend/app/config/menu/header.ts +++ b/frontend/app/config/menu/header.ts @@ -26,6 +26,7 @@ export const lfxHeaderMenu: HeaderMenuItem[] = [ { label: 'For Projects', icon: 'laptop-code', to: AppRoute.ForProjects }, { label: 'For Companies', icon: 'buildings', to: AppRoute.ForCompanies }, { label: 'About', icon: 'circle-info', to: AppRoute.About }, + { label: 'Documentation', icon: 'book-open', to: AppRoute.Docs }, ], }, ]; diff --git a/frontend/app/config/routes.ts b/frontend/app/config/routes.ts index 3cbfbb10..fde6f6c8 100644 --- a/frontend/app/config/routes.ts +++ b/frontend/app/config/routes.ts @@ -5,6 +5,7 @@ export enum AppRoute { Home = '/', Initiatives = '/initiatives', Statistics = '/statistics', + Docs = '/docs', ForProjects = '/for-projects', ForCompanies = '/for-companies', About = '/about', diff --git a/frontend/app/pages/docs/[...slug].vue b/frontend/app/pages/docs/[...slug].vue new file mode 100644 index 00000000..27b423b3 --- /dev/null +++ b/frontend/app/pages/docs/[...slug].vue @@ -0,0 +1,23 @@ + + + + diff --git a/frontend/app/pages/docs/index.vue b/frontend/app/pages/docs/index.vue new file mode 100644 index 00000000..84f3552f --- /dev/null +++ b/frontend/app/pages/docs/index.vue @@ -0,0 +1,28 @@ + + + + diff --git a/frontend/package.json b/frontend/package.json index b5c33a73..5c9b0606 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,8 +4,9 @@ "type": "module", "packageManager": "pnpm@11.1.2", "scripts": { - "build": "nuxt build", - "dev": "nuxt dev", + "docs:build": "node scripts/build-docs.mjs", + "build": "node scripts/build-docs.mjs && nuxt build", + "dev": "node scripts/build-docs.mjs && nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", @@ -34,7 +35,10 @@ "chart.js": "^4.5.1", "isomorphic-dompurify": "^2.36.0", "jose": "^6.1.3", + "js-yaml": "^4.2.0", "luxon": "^3.7.2", + "marked": "^18.0.5", + "minisearch": "^7.2.0", "nuxt": "^4.4.8", "ofetch": "^1.5.1", "openid-client": "^6.8.1", @@ -51,6 +55,7 @@ "@eslint/js": "^9.39.2", "@nuxt/test-utils": "^3.23.0", "@playwright/test": "^1.50.0", + "@types/js-yaml": "^4.0.9", "@types/luxon": "^3.7.1", "@types/pluralize": "^0.0.33", "@typescript-eslint/eslint-plugin": "^8.53.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 273c6fee..15151e36 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -64,9 +64,18 @@ importers: jose: specifier: ^6.1.3 version: 6.2.3 + js-yaml: + specifier: ">=4.2.0" + version: 4.2.0 luxon: specifier: ^3.7.2 version: 3.7.2 + marked: + specifier: ^18.0.5 + version: 18.0.5 + minisearch: + specifier: ^7.2.0 + version: 7.2.0 nuxt: specifier: ^4.4.8 version: 4.4.8(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@parcel/watcher@2.5.6)(@types/node@25.6.2)(@vue/compiler-sfc@3.5.34)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.39.4(jiti@2.7.0))(ioredis@5.11.1)(magicast@0.5.3)(optionator@0.9.4)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.34(typescript@5.9.3)))(rolldown@1.0.3)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.3)(rollup@4.62.0))(rollup@4.62.0)(sass@1.99.0)(srvx@0.11.16)(terser@5.48.0)(typescript@5.9.3)(vite@8.0.16(@types/node@25.6.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.99.0)(terser@5.48.0)(yaml@2.9.0))(yaml@2.9.0) @@ -110,6 +119,9 @@ importers: "@playwright/test": specifier: ^1.50.0 version: 1.60.0 + "@types/js-yaml": + specifier: ^4.0.9 + version: 4.0.9 "@types/luxon": specifier: ^3.7.1 version: 3.7.1 @@ -2979,6 +2991,12 @@ packages: integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, } + "@types/js-yaml@4.0.9": + resolution: + { + integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==, + } + "@types/jsesc@2.5.1": resolution: { @@ -7245,6 +7263,14 @@ packages: integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==, } + marked@18.0.5: + resolution: + { + integrity: sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==, + } + engines: { node: ">= 20" } + hasBin: true + math-intrinsics@1.1.0: resolution: { @@ -7395,6 +7421,12 @@ packages: } engines: { node: ">=16 || 14 >=14.17" } + minisearch@7.2.0: + resolution: + { + integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==, + } + minizlib@3.1.0: resolution: { @@ -12414,6 +12446,8 @@ snapshots: "@types/estree@1.0.9": {} + "@types/js-yaml@4.0.9": {} + "@types/jsesc@2.5.1": {} "@types/json-schema@7.0.15": {} @@ -15156,6 +15190,8 @@ snapshots: "@babel/types": 7.29.7 source-map-js: 1.2.1 + marked@18.0.5: {} + math-intrinsics@1.1.0: {} mdn-data@2.0.28: {} @@ -15215,6 +15251,8 @@ snapshots: minipass@7.1.3: {} + minisearch@7.2.0: {} + minizlib@3.1.0: dependencies: minipass: 7.1.3 diff --git a/frontend/public/images/docs/donation-step-amount.png b/frontend/public/images/docs/donation-step-amount.png new file mode 100644 index 0000000000000000000000000000000000000000..ddee3ff61b0a40bfb00d39348dc23a5f696d7f01 GIT binary patch literal 24829 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�zvhYX}HEWRnCYzuoMci*-mXkZd|lf5mYFUe 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

OKKI5J80d<69QKAT4(x8h67raj=XR@@X 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 literal 0 HcmV?d00001 diff --git a/frontend/public/images/docs/fundraising-type-select.png b/frontend/public/images/docs/fundraising-type-select.png new file mode 100644 index 0000000000000000000000000000000000000000..d81c21b6ee0a915b2ea0ba73f296f578ee598216 GIT binary patch literal 35746 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 literal 0 HcmV?d00001 diff --git a/frontend/public/images/docs/initiatives-detail.png b/frontend/public/images/docs/initiatives-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..f02e53531f2600fa0aa79b2425bd454dd1c897ef GIT binary patch literal 73155 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�lyNqVcD8;w2W83> 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 */ (parseYaml(match[1]) ?? {}); + return { data, content: match[2] }; +} + +function stripMarkdown(md) { + return md + .replace(/!\[.*?\]\(.*?\)/g, '') // images + .replace(/\[([^\]]+)\]\(.*?\)/g, '$1') // links → text only + .replace(/`{1,3}[^`\n]*`{1,3}/g, '') // inline code + .replace(/^```[\s\S]*?^```/gm, '') // fenced code blocks + .replace(/^#+\s+/gm, '') // headings + .replace(/[*_~]{1,3}([^*_~\n]+)[*_~]{1,3}/g, '$1') // bold / italic / strikethrough + .replace(/^\s*[-*+>|]\s*/gm, '') // lists, blockquotes, table pipes + .replace(/\n{2,}/g, ' ') + .replace(/\s+/g, ' ') + .trim(); +} + +/** + * @param {string} dir + * @param {string} parentSlug + * @returns {Array<{slug: string, title: string, description: string, content: string}>} + */ +function walk(dir, parentSlug = '') { + const docs = []; + + if (!existsSync(dir)) return docs; + + for (const entry of readdirSync(dir, { withFileTypes: true })) { + if (!entry.isDirectory()) continue; + + const slug = parentSlug ? `${parentSlug}/${entry.name}` : entry.name; + const indexPath = join(dir, entry.name, 'index.md'); + + if (!existsSync(indexPath)) continue; + + const raw = readFileSync(indexPath, 'utf-8'); + const { data: fm, content } = parseFrontmatter(raw); + + docs.push({ + slug, + title: String(fm.title ?? entry.name), + description: String(fm.description ?? ''), + content: stripMarkdown(content), + }); + + // recurse into sub-sections + docs.push(...walk(join(dir, entry.name), slug)); + } + + return docs; +} + +const docs = walk(DOCS_DIR); + +const outDir = resolve(OUT_FILE, '..'); +if (!existsSync(outDir)) mkdirSync(outDir, { recursive: true }); + +writeFileSync(OUT_FILE, JSON.stringify(docs)); + +process.stdout.write( + `✓ docs:build — ${docs.length} documents → public/assets/docs/search-index.json\n`, +); diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts new file mode 100644 index 00000000..e6a1012a --- /dev/null +++ b/frontend/server/api/docs/[...slug].get.ts @@ -0,0 +1,135 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { readFileSync, existsSync } from 'node:fs'; +import { resolve, join } from 'node:path'; +import { load as parseYaml } from 'js-yaml'; +import { marked, Renderer } from 'marked'; +import DOMPurify from 'isomorphic-dompurify'; +import type { DocArticle } from '#shared/types/documentation.types'; + +// Rewrite relative doc links to absolute /docs/* paths. +// slugDir is the directory context of the current article: +// - for index.md files (slug = 'donations') → slugDir = 'donations' +// - for direct .md files (slug = 'donations/history') → slugDir = 'donations' +function rewriteDocLink(href: string, slugDir: string): string { + if ( + href.startsWith('#') || + href.startsWith('/') || + href.startsWith('http://') || + href.startsWith('https://') + ) { + return href; + } + + let path = href; + + if (path.startsWith('./')) { + // Same-directory: ./make-donation/ → donations/make-donation + path = slugDir ? `${slugDir}/${path.slice(2)}` : path.slice(2); + } else if (path.startsWith('../')) { + // Parent-relative: ../initiatives/ → initiatives + const parentDir = slugDir.includes('/') ? slugDir.split('/').slice(0, -1).join('/') : ''; + path = parentDir ? `${parentDir}/${path.slice(3)}` : path.slice(3); + } else if (slugDir) { + // Bare relative (no prefix): treat as same-directory + path = `${slugDir}/${path}`; + } + + const cleaned = path + .replace(/\/index\.md$/, '') + .replace(/\.md$/, '') + .replace(/\/$/, ''); + + return `/docs/${cleaned}`; +} + +function buildRenderer(slugDir: string): Renderer { + const renderer = new Renderer(); + renderer.link = ({ href, title, text }) => { + const rewritten = rewriteDocLink(href ?? '', slugDir); + const isExternal = rewritten.startsWith('http://') || rewritten.startsWith('https://'); + const attrs = [ + `href="${rewritten}"`, + title ? `title="${title}"` : '', + isExternal ? 'target="_blank" rel="noopener noreferrer"' : '', + ] + .filter(Boolean) + .join(' '); + return `${text}`; + }; + return renderer; +} + +function getDocsDir(): string { + return resolve(process.cwd(), '../docs/user'); +} + +function parseFrontmatter(raw: string): { data: Record; content: string } { + const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); + if (!match) return { data: {}, content: raw }; + const data = (parseYaml(match[1]) ?? {}) as Record; + return { data, content: match[2] }; +} + +export default defineEventHandler(async (event): Promise => { + const slugParts = getRouterParam(event, 'slug'); + + if (!slugParts) { + throw createError({ statusCode: 400, message: 'Missing slug' }); + } + + const normalised = slugParts.toLowerCase().replace(/^\/|\/$/g, ''); + const docsDir = getDocsDir(); + + // Try direct .md file first, then index.md inside a folder + const candidates = [join(docsDir, `${normalised}.md`), join(docsDir, normalised, 'index.md')]; + + let raw: string | null = null; + let isIndex = false; + for (const [i, candidate] of candidates.entries()) { + if (existsSync(candidate)) { + raw = readFileSync(candidate, 'utf-8'); + isIndex = i === 1; + break; + } + } + + if (!raw) { + throw createError({ statusCode: 404, message: `Documentation page not found: ${normalised}` }); + } + + // Directory context for resolving relative links: + // index.md files (slug = 'donations') → slugDir = 'donations' + // direct .md files (slug = 'donations/history') → slugDir = 'donations' + const slugDir = isIndex ? normalised : normalised.split('/').slice(0, -1).join('/'); + + const { data: fm, content } = parseFrontmatter(raw); + const renderedHtml = await marked.parse(content, { + renderer: buildRenderer(slugDir), + async: true, + }); + const bodyHtml = DOMPurify.sanitize(renderedHtml); + + return { + slug: normalised, + title: + (fm.title as string | undefined) ?? toTitleCase(normalised.split('/').pop() ?? normalised), + description: (fm.description as string | undefined) ?? '', + bodyHtml, + tags: (fm.tags as string[] | undefined) ?? [], + lastUpdated: fm.last_updated != null ? formatDate(fm.last_updated) : null, + }; +}); + +function formatDate(val: unknown): string { + if (val instanceof Date) return val.toISOString().slice(0, 10); + return String(val).slice(0, 10); +} + +function toTitleCase(slug: string): string { + return slug + .split('-') + .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) + .join(' '); +} diff --git a/frontend/server/api/docs/index.get.ts b/frontend/server/api/docs/index.get.ts new file mode 100644 index 00000000..bd42ed17 --- /dev/null +++ b/frontend/server/api/docs/index.get.ts @@ -0,0 +1,89 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { readdirSync, readFileSync, existsSync } from 'node:fs'; +import { resolve, join } from 'node:path'; +import { load as parseYaml } from 'js-yaml'; +import type { DocSection, DocSectionsResponse } from '#shared/types/documentation.types'; + +function getDocsDir(): string { + return resolve(process.cwd(), '../docs/user'); +} + +function parseFrontmatter(raw: string): { data: Record; content: string } { + const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); + if (!match) return { data: {}, content: raw }; + const data = (parseYaml(match[1]) ?? {}) as Record; + return { data, content: match[2] }; +} + +export default defineEventHandler((): DocSectionsResponse => { + const docsDir = getDocsDir(); + + if (!existsSync(docsDir)) { + return { sections: [] }; + } + + const entries = readdirSync(docsDir, { withFileTypes: true }); + const sectionDirs = entries.filter((e) => e.isDirectory()); + + const sections: DocSection[] = []; + + for (const dir of sectionDirs) { + const indexPath = join(docsDir, dir.name, 'index.md'); + if (!existsSync(indexPath)) continue; + + const raw = readFileSync(indexPath, 'utf-8'); + const { data: fm } = parseFrontmatter(raw); + + // Scan sub-directories for child sections + const subEntries = readdirSync(join(docsDir, dir.name), { withFileTypes: true }); + const children: DocSection[] = []; + + for (const subDir of subEntries.filter((e) => e.isDirectory())) { + const subIndexPath = join(docsDir, dir.name, subDir.name, 'index.md'); + if (!existsSync(subIndexPath)) continue; + + const subRaw = readFileSync(subIndexPath, 'utf-8'); + const { data: subFm } = parseFrontmatter(subRaw); + + children.push({ + slug: `${dir.name}/${subDir.name}`, + title: (subFm.title as string | undefined) ?? toTitleCase(subDir.name), + description: (subFm.description as string | undefined) ?? '', + displayOrder: (subFm.display_order as number | undefined) ?? 99, + tags: (subFm.tags as string[] | undefined) ?? [], + lastUpdated: subFm.last_updated != null ? formatDate(subFm.last_updated) : null, + children: [], + }); + } + + children.sort((a, b) => a.displayOrder - b.displayOrder || a.title.localeCompare(b.title)); + + sections.push({ + slug: dir.name, + title: (fm.title as string | undefined) ?? toTitleCase(dir.name), + description: (fm.description as string | undefined) ?? '', + displayOrder: (fm.display_order as number | undefined) ?? 99, + tags: (fm.tags as string[] | undefined) ?? [], + lastUpdated: fm.last_updated != null ? formatDate(fm.last_updated) : null, + children, + }); + } + + sections.sort((a, b) => a.displayOrder - b.displayOrder || a.title.localeCompare(b.title)); + + return { sections }; +}); + +function formatDate(val: unknown): string { + if (val instanceof Date) return val.toISOString().slice(0, 10); + return String(val).slice(0, 10); +} + +function toTitleCase(slug: string): string { + return slug + .split('-') + .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) + .join(' '); +} diff --git a/frontend/shared/types/documentation.types.ts b/frontend/shared/types/documentation.types.ts new file mode 100644 index 00000000..5dfe3a2b --- /dev/null +++ b/frontend/shared/types/documentation.types.ts @@ -0,0 +1,40 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +export interface DocSection { + slug: string; + title: string; + description: string; + displayOrder: number; + tags: string[]; + lastUpdated: string | null; + children: DocSection[]; +} + +export interface DocSectionsResponse { + sections: DocSection[]; +} + +export interface DocSearchDocument { + slug: string; + title: string; + description: string; + content: string; +} + +export interface DocSearchResult { + id: string; + score: number; + slug: string; + title: string; + description: string; +} + +export interface DocArticle { + slug: string; + title: string; + description: string; + bodyHtml: string; + tags: string[]; + lastUpdated: string | null; +} From 9fa2a77629a16630e7b5189fa1ce995350b1f407 Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Tue, 16 Jun 2026 18:44:53 +0800 Subject: [PATCH 2/9] fix(docs): address copilot-pull-request-reviewer feedback on PR #166 Signed-off-by: Efren Lim --- .mlc_config.json | 8 ++ frontend/app/pages/docs/index.vue | 4 +- frontend/package.json | 6 +- frontend/server/api/docs/[...slug].get.ts | 80 +++-------- frontend/server/api/docs/index.get.ts | 27 +--- frontend/server/utils/doc-utils.test.ts | 167 ++++++++++++++++++++++ frontend/server/utils/doc-utils.ts | 73 ++++++++++ 7 files changed, 273 insertions(+), 92 deletions(-) create mode 100644 frontend/server/utils/doc-utils.test.ts create mode 100644 frontend/server/utils/doc-utils.ts diff --git a/.mlc_config.json b/.mlc_config.json index a507116f..83904693 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -8,6 +8,14 @@ }, { "pattern": "^https://github\\.com/mlehotskylf" + }, + { + "pattern": "^/images/", + "comment": "App-relative image paths served by the Nuxt frontend (frontend/public/images/) — not resolvable by offline link checkers" + }, + { + "pattern": "^/for-companies", + "comment": "Planned page not yet implemented — ignore until the route exists" } ], "timeout": "20s", diff --git a/frontend/app/pages/docs/index.vue b/frontend/app/pages/docs/index.vue index 84f3552f..4ac38d52 100644 --- a/frontend/app/pages/docs/index.vue +++ b/frontend/app/pages/docs/index.vue @@ -18,11 +18,11 @@ useSeoMeta({ ogDescription: 'Learn how to use LFX Crowdfunding — browse initiatives, make donations, manage your account, and more.', ogType: 'website', - ogUrl: url.href, + ogUrl: url.origin + url.pathname, twitterCard: 'summary', twitterTitle: 'Documentation — LFX Crowdfunding', twitterDescription: 'Learn how to use LFX Crowdfunding — browse initiatives, make donations, manage your account, and more.', }); -useHead({ link: [{ rel: 'canonical', href: url.href }] }); +useHead({ link: [{ rel: 'canonical', href: url.origin + url.pathname }] }); diff --git a/frontend/package.json b/frontend/package.json index 5c9b0606..7510c9d5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,8 +5,10 @@ "packageManager": "pnpm@11.1.2", "scripts": { "docs:build": "node scripts/build-docs.mjs", - "build": "node scripts/build-docs.mjs && nuxt build", - "dev": "node scripts/build-docs.mjs && nuxt dev", + "prebuild": "node scripts/build-docs.mjs", + "predev": "node scripts/build-docs.mjs", + "build": "nuxt build", + "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts index e6a1012a..79683a27 100644 --- a/frontend/server/api/docs/[...slug].get.ts +++ b/frontend/server/api/docs/[...slug].get.ts @@ -3,47 +3,17 @@ import { readFileSync, existsSync } from 'node:fs'; import { resolve, join } from 'node:path'; -import { load as parseYaml } from 'js-yaml'; import { marked, Renderer } from 'marked'; import DOMPurify from 'isomorphic-dompurify'; +import { + getDocsDir, + parseFrontmatter, + rewriteDocLink, + formatDate, + toTitleCase, +} from '../../utils/doc-utils'; import type { DocArticle } from '#shared/types/documentation.types'; -// Rewrite relative doc links to absolute /docs/* paths. -// slugDir is the directory context of the current article: -// - for index.md files (slug = 'donations') → slugDir = 'donations' -// - for direct .md files (slug = 'donations/history') → slugDir = 'donations' -function rewriteDocLink(href: string, slugDir: string): string { - if ( - href.startsWith('#') || - href.startsWith('/') || - href.startsWith('http://') || - href.startsWith('https://') - ) { - return href; - } - - let path = href; - - if (path.startsWith('./')) { - // Same-directory: ./make-donation/ → donations/make-donation - path = slugDir ? `${slugDir}/${path.slice(2)}` : path.slice(2); - } else if (path.startsWith('../')) { - // Parent-relative: ../initiatives/ → initiatives - const parentDir = slugDir.includes('/') ? slugDir.split('/').slice(0, -1).join('/') : ''; - path = parentDir ? `${parentDir}/${path.slice(3)}` : path.slice(3); - } else if (slugDir) { - // Bare relative (no prefix): treat as same-directory - path = `${slugDir}/${path}`; - } - - const cleaned = path - .replace(/\/index\.md$/, '') - .replace(/\.md$/, '') - .replace(/\/$/, ''); - - return `/docs/${cleaned}`; -} - function buildRenderer(slugDir: string): Renderer { const renderer = new Renderer(); renderer.link = ({ href, title, text }) => { @@ -61,17 +31,6 @@ function buildRenderer(slugDir: string): Renderer { return renderer; } -function getDocsDir(): string { - return resolve(process.cwd(), '../docs/user'); -} - -function parseFrontmatter(raw: string): { data: Record; content: string } { - const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); - if (!match) return { data: {}, content: raw }; - const data = (parseYaml(match[1]) ?? {}) as Record; - return { data, content: match[2] }; -} - export default defineEventHandler(async (event): Promise => { const slugParts = getRouterParam(event, 'slug'); @@ -80,10 +39,17 @@ export default defineEventHandler(async (event): Promise => { } const normalised = slugParts.toLowerCase().replace(/^\/|\/$/g, ''); - const docsDir = getDocsDir(); + const safeDocsDir = resolve(getDocsDir()); - // Try direct .md file first, then index.md inside a folder - const candidates = [join(docsDir, `${normalised}.md`), join(docsDir, normalised, 'index.md')]; + // Build candidate paths then guard against path traversal before any disk access + const candidates = [ + resolve(join(safeDocsDir, `${normalised}.md`)), + resolve(join(safeDocsDir, normalised, 'index.md')), + ]; + + if (candidates.some((c) => !c.startsWith(safeDocsDir + '/'))) { + throw createError({ statusCode: 400, message: 'Invalid slug' }); + } let raw: string | null = null; let isIndex = false; @@ -121,15 +87,3 @@ export default defineEventHandler(async (event): Promise => { lastUpdated: fm.last_updated != null ? formatDate(fm.last_updated) : null, }; }); - -function formatDate(val: unknown): string { - if (val instanceof Date) return val.toISOString().slice(0, 10); - return String(val).slice(0, 10); -} - -function toTitleCase(slug: string): string { - return slug - .split('-') - .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) - .join(' '); -} diff --git a/frontend/server/api/docs/index.get.ts b/frontend/server/api/docs/index.get.ts index bd42ed17..89da7166 100644 --- a/frontend/server/api/docs/index.get.ts +++ b/frontend/server/api/docs/index.get.ts @@ -2,21 +2,10 @@ // SPDX-License-Identifier: MIT import { readdirSync, readFileSync, existsSync } from 'node:fs'; -import { resolve, join } from 'node:path'; -import { load as parseYaml } from 'js-yaml'; +import { join } from 'node:path'; +import { getDocsDir, parseFrontmatter, formatDate, toTitleCase } from '../../utils/doc-utils'; import type { DocSection, DocSectionsResponse } from '#shared/types/documentation.types'; -function getDocsDir(): string { - return resolve(process.cwd(), '../docs/user'); -} - -function parseFrontmatter(raw: string): { data: Record; content: string } { - const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); - if (!match) return { data: {}, content: raw }; - const data = (parseYaml(match[1]) ?? {}) as Record; - return { data, content: match[2] }; -} - export default defineEventHandler((): DocSectionsResponse => { const docsDir = getDocsDir(); @@ -75,15 +64,3 @@ export default defineEventHandler((): DocSectionsResponse => { return { sections }; }); - -function formatDate(val: unknown): string { - if (val instanceof Date) return val.toISOString().slice(0, 10); - return String(val).slice(0, 10); -} - -function toTitleCase(slug: string): string { - return slug - .split('-') - .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) - .join(' '); -} diff --git a/frontend/server/utils/doc-utils.test.ts b/frontend/server/utils/doc-utils.test.ts new file mode 100644 index 00000000..7e69fcb0 --- /dev/null +++ b/frontend/server/utils/doc-utils.test.ts @@ -0,0 +1,167 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { resolve, join } from 'node:path'; +import { describe, it, expect } from 'vitest'; +import { rewriteDocLink, parseFrontmatter, formatDate, toTitleCase } from './doc-utils'; + +// ── rewriteDocLink ───────────────────────────────────────────────────────── + +describe('rewriteDocLink', () => { + describe('pass-through cases', () => { + it('leaves anchor links unchanged', () => { + expect(rewriteDocLink('#overview', 'initiatives')).toBe('#overview'); + }); + + it('leaves root-relative paths unchanged', () => { + expect(rewriteDocLink('/about', 'initiatives')).toBe('/about'); + }); + + it('leaves http URLs unchanged', () => { + expect(rewriteDocLink('http://example.com', 'initiatives')).toBe('http://example.com'); + }); + + it('leaves https URLs unchanged', () => { + expect(rewriteDocLink('https://example.com/page', 'donations')).toBe( + 'https://example.com/page', + ); + }); + + it('leaves mailto: links unchanged', () => { + expect(rewriteDocLink('mailto:support@example.com', 'initiatives')).toBe( + 'mailto:support@example.com', + ); + }); + + it('leaves tel: links unchanged', () => { + expect(rewriteDocLink('tel:+15551234567', 'initiatives')).toBe('tel:+15551234567'); + }); + }); + + describe('./ same-directory links', () => { + it('rewrites ./child/ inside a section', () => { + expect(rewriteDocLink('./make-donation/', 'donations')).toBe('/docs/donations/make-donation'); + }); + + it('rewrites ./child with no trailing slash', () => { + expect(rewriteDocLink('./make-donation', 'donations')).toBe('/docs/donations/make-donation'); + }); + + it('rewrites ./child.md stripping the extension', () => { + expect(rewriteDocLink('./make-donation.md', 'donations')).toBe( + '/docs/donations/make-donation', + ); + }); + }); + + describe('../ parent-relative links', () => { + it('rewrites single ../ to a sibling of the parent', () => { + // From donations/make-donation, ../ pops make-donation → donations/initiatives + expect(rewriteDocLink('../initiatives/', 'donations/make-donation')).toBe( + '/docs/donations/initiatives', + ); + }); + + it('rewrites double ../../ correctly (two levels up)', () => { + // slug = initiatives/manage-initiative → slugDir = initiatives/manage-initiative (index) + // ../../reimbursements/ should resolve to /docs/reimbursements + expect(rewriteDocLink('../../reimbursements/', 'initiatives/manage-initiative')).toBe( + '/docs/reimbursements', + ); + }); + + it('handles ../ from a top-level section (no parent)', () => { + // Going above the root — parts stack empties gracefully + expect(rewriteDocLink('../other/', 'initiatives')).toBe('/docs/other'); + }); + }); + + describe('bare relative links (no prefix)', () => { + it('treats bare names as same-directory', () => { + expect(rewriteDocLink('make-donation', 'donations')).toBe('/docs/donations/make-donation'); + }); + }); + + describe('cleaning', () => { + it('strips trailing /index.md', () => { + expect(rewriteDocLink('./sub/index.md', 'initiatives')).toBe('/docs/initiatives/sub'); + }); + + it('strips trailing slash', () => { + expect(rewriteDocLink('./sub/', 'initiatives')).toBe('/docs/initiatives/sub'); + }); + }); +}); + +// ── path traversal guard ──────────────────────────────────────────────────── +// This reproduces the guard logic from [...slug].get.ts so the safety property +// is covered by a fast pure test (no filesystem access needed). + +function isSlugSafe(slug: string, docsDir: string): boolean { + const safe = resolve(docsDir); + return [resolve(join(safe, `${slug}.md`)), resolve(join(safe, slug, 'index.md'))].every((c) => + c.startsWith(safe + '/'), + ); +} + +describe('slug path traversal guard', () => { + const docsDir = '/srv/docs/user'; + + it('allows a simple top-level slug', () => { + expect(isSlugSafe('initiatives', docsDir)).toBe(true); + }); + + it('allows a nested slug', () => { + expect(isSlugSafe('initiatives/create-initiative', docsDir)).toBe(true); + }); + + it('rejects a slug containing ../', () => { + expect(isSlugSafe('../../etc/passwd', docsDir)).toBe(false); + }); + + it('rejects a slug that escapes docsDir by one level', () => { + expect(isSlugSafe('../other-dir/secret', docsDir)).toBe(false); + }); +}); + +// ── parseFrontmatter ──────────────────────────────────────────────────────── + +describe('parseFrontmatter', () => { + it('extracts YAML data and body', () => { + const raw = `---\ntitle: Hello\n---\nBody text`; + const { data, content } = parseFrontmatter(raw); + expect(data.title).toBe('Hello'); + expect(content).toBe('Body text'); + }); + + it('returns empty data and full text when there is no frontmatter', () => { + const raw = 'Just plain content'; + const { data, content } = parseFrontmatter(raw); + expect(data).toEqual({}); + expect(content).toBe('Just plain content'); + }); +}); + +// ── formatDate ────────────────────────────────────────────────────────────── + +describe('formatDate', () => { + it('formats a Date object to YYYY-MM-DD', () => { + expect(formatDate(new Date('2026-06-16T12:00:00Z'))).toBe('2026-06-16'); + }); + + it('passes through a string date', () => { + expect(formatDate('2026-01-01')).toBe('2026-01-01'); + }); +}); + +// ── toTitleCase ───────────────────────────────────────────────────────────── + +describe('toTitleCase', () => { + it('capitalises each hyphen-separated word', () => { + expect(toTitleCase('getting-started')).toBe('Getting Started'); + }); + + it('handles a single word', () => { + expect(toTitleCase('donations')).toBe('Donations'); + }); +}); diff --git a/frontend/server/utils/doc-utils.ts b/frontend/server/utils/doc-utils.ts new file mode 100644 index 00000000..339fd7b4 --- /dev/null +++ b/frontend/server/utils/doc-utils.ts @@ -0,0 +1,73 @@ +// Copyright The Linux Foundation and each contributor to LFX. +// SPDX-License-Identifier: MIT + +import { existsSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { load as parseYaml } from 'js-yaml'; + +export function getDocsDir(): string { + // Try both common launch points so the server works regardless of CWD: + // dev (pnpm dev from frontend/): process.cwd() = …/frontend → ../docs/user is correct + // repo root / CI: process.cwd() = …/repo-root → docs/user is correct + const fromFrontend = resolve(process.cwd(), '../docs/user'); + const fromRoot = resolve(process.cwd(), 'docs/user'); + return existsSync(fromFrontend) ? fromFrontend : fromRoot; +} + +export function parseFrontmatter(raw: string): { data: Record; content: string } { + const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); + if (!match) return { data: {}, content: raw }; + const data = (parseYaml(match[1]) ?? {}) as Record; + return { data, content: match[2] }; +} + +// Rewrite relative doc links to absolute /docs/* paths. +// slugDir is the directory context of the current article: +// - for index.md files (slug = 'donations') → slugDir = 'donations' +// - for sub-page files (slug = 'donations/make-donation') → slugDir = 'donations' +export function rewriteDocLink(href: string, slugDir: string): string { + // Anchors and root-relative paths pass through unchanged + if (href.startsWith('#') || href.startsWith('/')) { + return href; + } + + // Any URL scheme (http:, https:, mailto:, tel:, etc.) passes through unchanged + if (/^[a-z][a-z0-9+.-]*:/i.test(href)) { + return href; + } + + let path = href; + + if (path.startsWith('../')) { + // Walk up the directory stack for each ../ segment — handles multi-level + const parts = slugDir ? slugDir.split('/') : []; + while (path.startsWith('../')) { + parts.pop(); + path = path.slice(3); + } + path = parts.length ? `${parts.join('/')}/${path}` : path; + } else if (path.startsWith('./')) { + path = slugDir ? `${slugDir}/${path.slice(2)}` : path.slice(2); + } else if (slugDir) { + path = `${slugDir}/${path}`; + } + + const cleaned = path + .replace(/\/index\.md$/, '') + .replace(/\.md$/, '') + .replace(/\/$/, ''); + + return `/docs/${cleaned}`; +} + +export function formatDate(val: unknown): string { + if (val instanceof Date) return val.toISOString().slice(0, 10); + return String(val).slice(0, 10); +} + +export function toTitleCase(slug: string): string { + return slug + .split('-') + .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) + .join(' '); +} From 0ca646b3ccbaad8160880ac7c964aa228c87dcfa Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Tue, 16 Jun 2026 19:24:01 +0800 Subject: [PATCH 3/9] fix(docs): address second round of copilot-pull-request-reviewer feedback on PR #166 Signed-off-by: Efren Lim --- .mlc_config.json | 2 +- .../documentation/components/docs-search.vue | 2 ++ .../modules/documentation/view/docs-article.vue | 14 ++++++++------ .../composables/documentation/useDocumentation.ts | 2 +- frontend/app/pages/docs/[...slug].vue | 4 ---- frontend/server/api/docs/[...slug].get.ts | 4 ++-- frontend/server/utils/doc-utils.test.ts | 4 ++-- frontend/server/utils/doc-utils.ts | 7 ++++--- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.mlc_config.json b/.mlc_config.json index 83904693..1cd48004 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -15,7 +15,7 @@ }, { "pattern": "^/for-companies", - "comment": "Planned page not yet implemented — ignore until the route exists" + "comment": "App-relative route (frontend/app/pages/for-companies.vue) — not resolvable by offline link checkers" } ], "timeout": "20s", diff --git a/frontend/app/components/modules/documentation/components/docs-search.vue b/frontend/app/components/modules/documentation/components/docs-search.vue index 6ad872c3..51484f42 100644 --- a/frontend/app/components/modules/documentation/components/docs-search.vue +++ b/frontend/app/components/modules/documentation/components/docs-search.vue @@ -116,6 +116,8 @@ async function ensureIndex(): Promise { idField: 'slug', }); searchIndex.addAll(docs); + } catch { + // Search index unavailable — leave searchIndex null so results stay empty } finally { isIndexLoading.value = false; } diff --git a/frontend/app/components/modules/documentation/view/docs-article.vue b/frontend/app/components/modules/documentation/view/docs-article.vue index 32e497f7..0af2f00c 100644 --- a/frontend/app/components/modules/documentation/view/docs-article.vue +++ b/frontend/app/components/modules/documentation/view/docs-article.vue @@ -68,12 +68,14 @@ SPDX-License-Identifier: MIT - - {{ article?.title }} + diff --git a/frontend/app/composables/documentation/useDocumentation.ts b/frontend/app/composables/documentation/useDocumentation.ts index 088f6284..925f45bf 100644 --- a/frontend/app/composables/documentation/useDocumentation.ts +++ b/frontend/app/composables/documentation/useDocumentation.ts @@ -17,7 +17,7 @@ export function useDocumentation(slug: MaybeRefOrGetter) { }); onServerPrefetch(async () => { - await query.suspense(); + await query.suspense().catch(() => {}); }); return query; diff --git a/frontend/app/pages/docs/[...slug].vue b/frontend/app/pages/docs/[...slug].vue index 27b423b3..f1e485b0 100644 --- a/frontend/app/pages/docs/[...slug].vue +++ b/frontend/app/pages/docs/[...slug].vue @@ -16,8 +16,4 @@ const slug = computed(() => { const parts = route.params.slug; return Array.isArray(parts) ? parts.join('/') : (parts ?? ''); }); - -useHead({ - title: computed(() => `Docs — ${slug.value}`), -}); diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts index 79683a27..2afcccf5 100644 --- a/frontend/server/api/docs/[...slug].get.ts +++ b/frontend/server/api/docs/[...slug].get.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: MIT import { readFileSync, existsSync } from 'node:fs'; -import { resolve, join } from 'node:path'; +import { resolve, join, sep } from 'node:path'; import { marked, Renderer } from 'marked'; import DOMPurify from 'isomorphic-dompurify'; import { @@ -47,7 +47,7 @@ export default defineEventHandler(async (event): Promise => { resolve(join(safeDocsDir, normalised, 'index.md')), ]; - if (candidates.some((c) => !c.startsWith(safeDocsDir + '/'))) { + if (candidates.some((c) => !c.startsWith(safeDocsDir + sep))) { throw createError({ statusCode: 400, message: 'Invalid slug' }); } diff --git a/frontend/server/utils/doc-utils.test.ts b/frontend/server/utils/doc-utils.test.ts index 7e69fcb0..b712e14d 100644 --- a/frontend/server/utils/doc-utils.test.ts +++ b/frontend/server/utils/doc-utils.test.ts @@ -1,7 +1,7 @@ // Copyright The Linux Foundation and each contributor to LFX. // SPDX-License-Identifier: MIT -import { resolve, join } from 'node:path'; +import { resolve, join, sep } from 'node:path'; import { describe, it, expect } from 'vitest'; import { rewriteDocLink, parseFrontmatter, formatDate, toTitleCase } from './doc-utils'; @@ -100,7 +100,7 @@ describe('rewriteDocLink', () => { function isSlugSafe(slug: string, docsDir: string): boolean { const safe = resolve(docsDir); return [resolve(join(safe, `${slug}.md`)), resolve(join(safe, slug, 'index.md'))].every((c) => - c.startsWith(safe + '/'), + c.startsWith(safe + sep), ); } diff --git a/frontend/server/utils/doc-utils.ts b/frontend/server/utils/doc-utils.ts index 339fd7b4..22f7a79a 100644 --- a/frontend/server/utils/doc-utils.ts +++ b/frontend/server/utils/doc-utils.ts @@ -22,9 +22,10 @@ export function parseFrontmatter(raw: string): { data: Record; } // Rewrite relative doc links to absolute /docs/* paths. -// slugDir is the directory context of the current article: -// - for index.md files (slug = 'donations') → slugDir = 'donations' -// - for sub-page files (slug = 'donations/make-donation') → slugDir = 'donations' +// slugDir is the directory context of the current article (set by the route handler): +// - top-level index.md (slug = 'donations') → slugDir = 'donations' +// - nested index.md (slug = 'donations/make-donation') → slugDir = 'donations/make-donation' +// - direct .md file (slug = 'donations/make-donation/guide') → slugDir = 'donations/make-donation' export function rewriteDocLink(href: string, slugDir: string): string { // Anchors and root-relative paths pass through unchanged if (href.startsWith('#') || href.startsWith('/')) { From e93656cdf678d300e3883e7e7fde9683dfdc2e9a Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Tue, 16 Jun 2026 19:57:23 +0800 Subject: [PATCH 4/9] fix(docs): address third round of copilot-pull-request-reviewer feedback on PR #166 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address review comments from copilot-pull-request-reviewer: - frontend/server/utils/doc-utils.ts: swap getDocsDir() preference order to check docs/user (fromRoot) before ../docs/user (fromFrontend); the previous order would choose an out-of-repo path when a ../docs/user happened to exist on the host while running from the repo root (per copilot-pull-request-reviewer) - frontend/server/utils/doc-utils.ts: add escapeAttr() helper that escapes &, ", ', <, > for safe HTML attribute interpolation (per copilot-pull-request-reviewer) - frontend/server/api/docs/[...slug].get.ts: apply escapeAttr() to href and title values in buildRenderer() before interpolating into the anchor HTML string, providing defense-in-depth ahead of DOMPurify sanitization (per copilot-pull-request-reviewer) Resolves 2 review threads. Thread on pnpm-lock.yaml is a false positive (explained in thread reply — the >=4.2.0 specifier comes from the intentional js-yaml override in pnpm-workspace.yaml, not a sync issue). Signed-off-by: Efren Lim --- frontend/server/api/docs/[...slug].get.ts | 5 +++-- frontend/server/utils/doc-utils.ts | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts index 2afcccf5..1a02a523 100644 --- a/frontend/server/api/docs/[...slug].get.ts +++ b/frontend/server/api/docs/[...slug].get.ts @@ -9,6 +9,7 @@ import { getDocsDir, parseFrontmatter, rewriteDocLink, + escapeAttr, formatDate, toTitleCase, } from '../../utils/doc-utils'; @@ -20,8 +21,8 @@ function buildRenderer(slugDir: string): Renderer { const rewritten = rewriteDocLink(href ?? '', slugDir); const isExternal = rewritten.startsWith('http://') || rewritten.startsWith('https://'); const attrs = [ - `href="${rewritten}"`, - title ? `title="${title}"` : '', + `href="${escapeAttr(rewritten)}"`, + title ? `title="${escapeAttr(title)}"` : '', isExternal ? 'target="_blank" rel="noopener noreferrer"' : '', ] .filter(Boolean) diff --git a/frontend/server/utils/doc-utils.ts b/frontend/server/utils/doc-utils.ts index 22f7a79a..49f72eab 100644 --- a/frontend/server/utils/doc-utils.ts +++ b/frontend/server/utils/doc-utils.ts @@ -6,12 +6,15 @@ import { resolve } from 'node:path'; import { load as parseYaml } from 'js-yaml'; export function getDocsDir(): string { - // Try both common launch points so the server works regardless of CWD: - // dev (pnpm dev from frontend/): process.cwd() = …/frontend → ../docs/user is correct + // Try both common launch points so the server works regardless of CWD. + // Prefer docs/user (fromRoot) so that when started from the repo root the + // correct path is chosen immediately. Fall back to ../docs/user (fromFrontend) + // only when CWD is the frontend/ subdirectory (pnpm dev workflow): // repo root / CI: process.cwd() = …/repo-root → docs/user is correct - const fromFrontend = resolve(process.cwd(), '../docs/user'); + // dev (pnpm dev from frontend/): process.cwd() = …/frontend → ../docs/user is correct const fromRoot = resolve(process.cwd(), 'docs/user'); - return existsSync(fromFrontend) ? fromFrontend : fromRoot; + const fromFrontend = resolve(process.cwd(), '../docs/user'); + return existsSync(fromRoot) ? fromRoot : fromFrontend; } export function parseFrontmatter(raw: string): { data: Record; content: string } { @@ -61,6 +64,18 @@ export function rewriteDocLink(href: string, slugDir: string): string { return `/docs/${cleaned}`; } +// Escape characters that are unsafe inside HTML attribute values. +// Handles both double-quoted and single-quoted attributes, and prevents +// tag injection via angle brackets. +export function escapeAttr(value: string): string { + return value + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); +} + export function formatDate(val: unknown): string { if (val instanceof Date) return val.toISOString().slice(0, 10); return String(val).slice(0, 10); From a8b8764bfa7733a8f8d50e6d6703131f66aea09c Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Wed, 17 Jun 2026 10:26:02 +0800 Subject: [PATCH 5/9] fix(docs): address fourth round of copilot-pull-request-reviewer feedback on PR #166 Signed-off-by: Efren Lim --- .github/workflows/ci-release.yml | 2 +- frontend/Dockerfile | 11 +++++-- .../documentation/components/docs-search.vue | 33 +++++++++++-------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml index abbb7150..3d7eb85d 100644 --- a/.github/workflows/ci-release.yml +++ b/.github/workflows/ci-release.yml @@ -81,7 +81,7 @@ jobs: - name: Build and push uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 with: - context: frontend/ + context: . file: frontend/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} diff --git a/frontend/Dockerfile b/frontend/Dockerfile index aebd456e..d1a42ce3 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -12,10 +12,14 @@ WORKDIR /build # Cache pnpm store separately from source — rebuild only when manifest changes. # pnpm-workspace.yaml contains overrides/allowBuilds that affect resolution so # it must be in this layer alongside the lockfile. -COPY pnpm-lock.yaml package.json pnpm-workspace.yaml ./ +COPY frontend/pnpm-lock.yaml frontend/package.json frontend/pnpm-workspace.yaml ./ RUN pnpm fetch -COPY . . +# Copy frontend source and docs content so the prebuild script (build-docs.mjs) +# and the runtime server can resolve docs/user/ via ../docs/user relative paths. +COPY frontend/ . +COPY docs/user/ /docs/user/ + RUN pnpm install --frozen-lockfile --prefer-offline && pnpm build # ── Runtime stage ───────────────────────────────────────────────────────────── @@ -27,6 +31,9 @@ WORKDIR /app # Nuxt 4 output: .output/server (Node server) + .output/public (static assets) COPY --from=builder --chown=appuser:appgroup /build/.output/ ./ +# Docs markdown files for runtime API — getDocsDir() finds them via ../docs/user +# (process.cwd() = /app, so ../docs/user = /docs/user) +COPY --from=builder --chown=appuser:appgroup /docs/user/ /docs/user/ USER appuser diff --git a/frontend/app/components/modules/documentation/components/docs-search.vue b/frontend/app/components/modules/documentation/components/docs-search.vue index 51484f42..dbe8993e 100644 --- a/frontend/app/components/modules/documentation/components/docs-search.vue +++ b/frontend/app/components/modules/documentation/components/docs-search.vue @@ -99,6 +99,7 @@ const isIndexLoading = ref(false); const results = ref([]); let searchIndex: MiniSearch | null = null; +let indexLoadPromise: Promise | null = null; const containerRef = useTemplateRef('containerRef'); onClickOutside(containerRef, () => { @@ -107,20 +108,24 @@ onClickOutside(containerRef, () => { async function ensureIndex(): Promise { if (searchIndex) return; - isIndexLoading.value = true; - try { - const docs = await $fetch('/assets/docs/search-index.json'); - searchIndex = new MiniSearch({ - fields: ['title', 'description', 'content'], - storeFields: ['slug', 'title', 'description'], - idField: 'slug', - }); - searchIndex.addAll(docs); - } catch { - // Search index unavailable — leave searchIndex null so results stay empty - } finally { - isIndexLoading.value = false; - } + if (indexLoadPromise) return indexLoadPromise; + indexLoadPromise = (async () => { + isIndexLoading.value = true; + try { + const docs = await $fetch('/assets/docs/search-index.json'); + searchIndex = new MiniSearch({ + fields: ['title', 'description', 'content'], + storeFields: ['slug', 'title', 'description'], + idField: 'slug', + }); + searchIndex.addAll(docs); + } catch { + // Search index unavailable — leave searchIndex null so results stay empty + } finally { + isIndexLoading.value = false; + } + })(); + return indexLoadPromise; } function onFocus(): void { From aa201292c2c7c5149747e134a5ea0326727aa3d6 Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Wed, 17 Jun 2026 17:05:47 +0800 Subject: [PATCH 6/9] fix: build and push error Signed-off-by: Efren Lim --- .github/workflows/ci-frontend.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-frontend.yml b/.github/workflows/ci-frontend.yml index 32063b8a..209fa3d4 100644 --- a/.github/workflows/ci-frontend.yml +++ b/.github/workflows/ci-frontend.yml @@ -239,7 +239,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - context: frontend/ + context: . file: frontend/Dockerfile push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} From 247bbe8bbfcc13e1112f53978956ff1df3664413 Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Wed, 17 Jun 2026 17:28:31 +0800 Subject: [PATCH 7/9] fix(docs): address fifth round of copilot-pull-request-reviewer feedback on PR #166 Signed-off-by: Efren Lim --- .../documentation/components/docs-search.vue | 4 ++ frontend/server/api/docs/[...slug].get.ts | 10 +++-- frontend/server/api/docs/index.get.ts | 38 ++++++++++++------- frontend/server/utils/doc-utils.ts | 17 +++++++-- 4 files changed, 49 insertions(+), 20 deletions(-) diff --git a/frontend/app/components/modules/documentation/components/docs-search.vue b/frontend/app/components/modules/documentation/components/docs-search.vue index dbe8993e..3f240ab9 100644 --- a/frontend/app/components/modules/documentation/components/docs-search.vue +++ b/frontend/app/components/modules/documentation/components/docs-search.vue @@ -123,6 +123,10 @@ async function ensureIndex(): Promise { // Search index unavailable — leave searchIndex null so results stay empty } finally { isIndexLoading.value = false; + // Clear the promise so callers can retry after a transient failure. + // On success, searchIndex is set and the early-return guard at the top + // of ensureIndex() prevents a redundant reload. + indexLoadPromise = null; } })(); return indexLoadPromise; diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts index 1a02a523..1a71caad 100644 --- a/frontend/server/api/docs/[...slug].get.ts +++ b/frontend/server/api/docs/[...slug].get.ts @@ -1,7 +1,7 @@ // Copyright The Linux Foundation and each contributor to LFX. // SPDX-License-Identifier: MIT -import { readFileSync, existsSync } from 'node:fs'; +import { readFile } from 'node:fs/promises'; import { resolve, join, sep } from 'node:path'; import { marked, Renderer } from 'marked'; import DOMPurify from 'isomorphic-dompurify'; @@ -40,7 +40,7 @@ export default defineEventHandler(async (event): Promise => { } const normalised = slugParts.toLowerCase().replace(/^\/|\/$/g, ''); - const safeDocsDir = resolve(getDocsDir()); + const safeDocsDir = resolve(await getDocsDir()); // Build candidate paths then guard against path traversal before any disk access const candidates = [ @@ -55,10 +55,12 @@ export default defineEventHandler(async (event): Promise => { let raw: string | null = null; let isIndex = false; for (const [i, candidate] of candidates.entries()) { - if (existsSync(candidate)) { - raw = readFileSync(candidate, 'utf-8'); + try { + raw = await readFile(candidate, 'utf-8'); isIndex = i === 1; break; + } catch { + // try next candidate } } diff --git a/frontend/server/api/docs/index.get.ts b/frontend/server/api/docs/index.get.ts index 89da7166..40fdbe16 100644 --- a/frontend/server/api/docs/index.get.ts +++ b/frontend/server/api/docs/index.get.ts @@ -1,39 +1,51 @@ // Copyright The Linux Foundation and each contributor to LFX. // SPDX-License-Identifier: MIT -import { readdirSync, readFileSync, existsSync } from 'node:fs'; +import { readdir, readFile } from 'node:fs/promises'; import { join } from 'node:path'; -import { getDocsDir, parseFrontmatter, formatDate, toTitleCase } from '../../utils/doc-utils'; +import { + getDocsDir, + pathExists, + parseFrontmatter, + formatDate, + toTitleCase, +} from '../../utils/doc-utils'; import type { DocSection, DocSectionsResponse } from '#shared/types/documentation.types'; -export default defineEventHandler((): DocSectionsResponse => { - const docsDir = getDocsDir(); +export default defineEventHandler(async (): Promise => { + const docsDir = await getDocsDir(); - if (!existsSync(docsDir)) { + if (!(await pathExists(docsDir))) { return { sections: [] }; } - const entries = readdirSync(docsDir, { withFileTypes: true }); + const entries = await readdir(docsDir, { withFileTypes: true }); const sectionDirs = entries.filter((e) => e.isDirectory()); const sections: DocSection[] = []; for (const dir of sectionDirs) { const indexPath = join(docsDir, dir.name, 'index.md'); - if (!existsSync(indexPath)) continue; - - const raw = readFileSync(indexPath, 'utf-8'); + let raw: string; + try { + raw = await readFile(indexPath, 'utf-8'); + } catch { + continue; + } const { data: fm } = parseFrontmatter(raw); // Scan sub-directories for child sections - const subEntries = readdirSync(join(docsDir, dir.name), { withFileTypes: true }); + const subEntries = await readdir(join(docsDir, dir.name), { withFileTypes: true }); const children: DocSection[] = []; for (const subDir of subEntries.filter((e) => e.isDirectory())) { const subIndexPath = join(docsDir, dir.name, subDir.name, 'index.md'); - if (!existsSync(subIndexPath)) continue; - - const subRaw = readFileSync(subIndexPath, 'utf-8'); + let subRaw: string; + try { + subRaw = await readFile(subIndexPath, 'utf-8'); + } catch { + continue; + } const { data: subFm } = parseFrontmatter(subRaw); children.push({ diff --git a/frontend/server/utils/doc-utils.ts b/frontend/server/utils/doc-utils.ts index 49f72eab..ebf4392d 100644 --- a/frontend/server/utils/doc-utils.ts +++ b/frontend/server/utils/doc-utils.ts @@ -1,11 +1,20 @@ // Copyright The Linux Foundation and each contributor to LFX. // SPDX-License-Identifier: MIT -import { existsSync } from 'node:fs'; +import { access } from 'node:fs/promises'; import { resolve } from 'node:path'; import { load as parseYaml } from 'js-yaml'; -export function getDocsDir(): string { +async function pathExists(p: string): Promise { + try { + await access(p); + return true; + } catch { + return false; + } +} + +export async function getDocsDir(): Promise { // Try both common launch points so the server works regardless of CWD. // Prefer docs/user (fromRoot) so that when started from the repo root the // correct path is chosen immediately. Fall back to ../docs/user (fromFrontend) @@ -14,9 +23,11 @@ export function getDocsDir(): string { // dev (pnpm dev from frontend/): process.cwd() = …/frontend → ../docs/user is correct const fromRoot = resolve(process.cwd(), 'docs/user'); const fromFrontend = resolve(process.cwd(), '../docs/user'); - return existsSync(fromRoot) ? fromRoot : fromFrontend; + return (await pathExists(fromRoot)) ? fromRoot : fromFrontend; } +export { pathExists }; + export function parseFrontmatter(raw: string): { data: Record; content: string } { const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/); if (!match) return { data: {}, content: raw }; From b3806dcd800133a7c66050eb4929cfd7e7e5040d Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Wed, 17 Jun 2026 17:48:15 +0800 Subject: [PATCH 8/9] feat(docs): align content with Intercom Fin best practices and add intercom_collection metadata Signed-off-by: Efren Lim --- docs/user/backers/index.md | 5 ++++- docs/user/donations/index.md | 5 +++-- docs/user/donations/make-donation/index.md | 13 +++++++++---- docs/user/donations/manage-donations/index.md | 3 ++- docs/user/getting-started/index.md | 3 ++- docs/user/initiatives/browsing-initiatives/index.md | 7 ++++--- docs/user/initiatives/create-initiative/index.md | 9 +++++---- docs/user/initiatives/index.md | 5 +++-- docs/user/initiatives/manage-initiative/index.md | 3 ++- docs/user/payment-account/index.md | 5 ++++- docs/user/reimbursements/index.md | 5 ++++- frontend/server/api/docs/[...slug].get.ts | 1 + frontend/shared/types/documentation.types.ts | 1 + 13 files changed, 44 insertions(+), 21 deletions(-) diff --git a/docs/user/backers/index.md b/docs/user/backers/index.md index bdbc0562..b2a17ef0 100644 --- a/docs/user/backers/index.md +++ b/docs/user/backers/index.md @@ -2,10 +2,13 @@ title: Backers description: Understand how supporters are listed on initiative pages on LFX Crowdfunding. tags: [backers, supporters, donors, donations, anonymous] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 6 +intercom_collection: LFX Crowdfunding --- +This page explains how donors are listed on initiative pages. If you want to make a donation, see [Donations](../donations/). + Every initiative publicly recognises the people and organisations that have contributed to it. Backers are listed in two places on each initiative page. ## Recent donations sidebar diff --git a/docs/user/donations/index.md b/docs/user/donations/index.md index ae6a2129..a1f68a3f 100644 --- a/docs/user/donations/index.md +++ b/docs/user/donations/index.md @@ -2,8 +2,9 @@ title: Donations description: Learn how to donate to open source initiatives and manage your giving history on LFX Crowdfunding. tags: [donations, giving, payments, recurring] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 3 +intercom_collection: LFX Crowdfunding --- Donating to an initiative supports open source projects directly. All payments are processed securely through Stripe. @@ -32,7 +33,7 @@ Your past donations and active monthly subscriptions are managed through the LFX ## Email acknowledgement and tax information -All donations are made to the Linux Foundation, a 501(c)(6) non-profit organisation. An email acknowledgement is sent automatically after each payment. For tax purposes, please consult your tax adviser regarding the deductibility of your donations. +All donations are made to the Linux Foundation, a 501(c)(6) non-profit organisation (a category of non-profit under US tax law). An email acknowledgement is sent automatically after each payment. For tax purposes, please consult your tax adviser regarding the deductibility of your donations. ## Payment security diff --git a/docs/user/donations/make-donation/index.md b/docs/user/donations/make-donation/index.md index b174c569..a60fa5f7 100644 --- a/docs/user/donations/make-donation/index.md +++ b/docs/user/donations/make-donation/index.md @@ -2,8 +2,9 @@ title: Making a Donation description: How to make a one-time or monthly donation to an open source initiative on LFX Crowdfunding. tags: [donations, one-time, monthly, payment, stripe] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 1 +intercom_collection: LFX Crowdfunding --- > **Sign in required** — You must be signed in with your [LF ID](https://openprofile.dev/) to make a donation. @@ -14,7 +15,7 @@ Open any published initiative page and click the **Donate** button. A drawer wil ## Step 1 — Choose an amount and frequency -![Donation amount selection](/images/docs/donation-step-amount.png) +![Donation amount selection](https://crowdfunding.linuxfoundation.org/images/docs/donation-step-amount.png) Select a preset amount or enter a custom amount in the input field. @@ -27,7 +28,7 @@ Optionally, you can allocate your donation to a specific funding goal (e.g. Deve ## Step 2 — Payment -![Donation payment step](/images/docs/donation-step-payment.png) +![Donation payment step](https://crowdfunding.linuxfoundation.org/images/docs/donation-step-payment.png) Enter your card details: @@ -39,7 +40,11 @@ If you have previously saved a card, it will be shown here. You can use it direc **Order summary** — The drawer shows a breakdown of your donation amount and total. The Linux Foundation underwrites all transaction fees, so 100% of your donation goes to the initiative. -Click **Donate** to process your payment. For cards that require additional verification (3D Secure), you may be prompted to authenticate with your bank. +Click **Donate** to process your payment. For cards that require additional verification (3D Secure — an extra authentication step your bank may require), you may be prompted to authenticate before the payment completes. + +## Anonymous donations + +LFX Crowdfunding does not currently offer a donor-selectable anonymous option. Your name and avatar will be displayed publicly on the initiative's backer list. If your donor information is unavailable at the time of processing, your name will appear as **Anonymous** on the initiative page. ## After donating diff --git a/docs/user/donations/manage-donations/index.md b/docs/user/donations/manage-donations/index.md index 46bd9111..e939bf45 100644 --- a/docs/user/donations/manage-donations/index.md +++ b/docs/user/donations/manage-donations/index.md @@ -2,8 +2,9 @@ title: Managing Your Donations description: How to view your donation history and manage recurring subscriptions on LFX Crowdfunding. tags: [donations, history, subscriptions, recurring, cancel] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 2 +intercom_collection: LFX Crowdfunding --- Your donation history and recurring subscriptions are managed through the LFX platform. Visit [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations) to access them. diff --git a/docs/user/getting-started/index.md b/docs/user/getting-started/index.md index ee38f652..ff48792c 100644 --- a/docs/user/getting-started/index.md +++ b/docs/user/getting-started/index.md @@ -2,8 +2,9 @@ title: Getting Started description: Learn how to use LFX Crowdfunding to support open source projects and communities. tags: [getting-started, overview, introduction] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 1 +intercom_collection: LFX Crowdfunding --- LFX Crowdfunding is the Linux Foundation's platform for funding open source initiatives. Whether you want to support a project you care about or raise funds for your own community, this guide will help you get started. diff --git a/docs/user/initiatives/browsing-initiatives/index.md b/docs/user/initiatives/browsing-initiatives/index.md index 169843e3..d09c12eb 100644 --- a/docs/user/initiatives/browsing-initiatives/index.md +++ b/docs/user/initiatives/browsing-initiatives/index.md @@ -2,13 +2,14 @@ title: Browsing Initiatives description: How to find and explore active fundraising campaigns on LFX Crowdfunding. tags: [initiatives, browse, search, filter] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 1 +intercom_collection: LFX Crowdfunding --- Go to the **Initiatives** page from the top navigation to see all active campaigns. You can search by name or filter by category. -![Browse initiatives page](/images/docs/initiatives-browse.png) +![Browse initiatives page](https://crowdfunding.linuxfoundation.org/images/docs/initiatives-browse.png) Each initiative card shows: @@ -20,7 +21,7 @@ Each initiative card shows: Click any initiative to view its full detail page. -![Initiative detail page](/images/docs/initiatives-detail.png) +![Initiative detail page](https://crowdfunding.linuxfoundation.org/images/docs/initiatives-detail.png) The detail page includes: diff --git a/docs/user/initiatives/create-initiative/index.md b/docs/user/initiatives/create-initiative/index.md index a54659fb..5f621ea0 100644 --- a/docs/user/initiatives/create-initiative/index.md +++ b/docs/user/initiatives/create-initiative/index.md @@ -2,8 +2,9 @@ title: Create an Initiative description: How to create a fundraising initiative for your open source project or event on LFX Crowdfunding. tags: [initiatives, create, fundraising, project, event] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 2 +intercom_collection: LFX Crowdfunding --- > **Sign in required** — Creating an initiative requires an [LF ID](https://openprofile.dev/) account. @@ -18,7 +19,7 @@ Click **Start a Fundraiser** in the header navigation to open the creation form. ### Step 1 — Choose an initiative type -![Initiative type selection](/images/docs/fundraising-type-select.png) +![Initiative type selection](https://crowdfunding.linuxfoundation.org/images/docs/fundraising-type-select.png) Select the type that best describes your initiative: @@ -56,13 +57,13 @@ Fill in the details for your initiative. Fields vary by type, but all types ask - **Location** — city and country (optional) - **Budget distribution** — an optional breakdown across categories such as Venue, Travel, and Marketing -![Initiative details form](/images/docs/fundraising-details-form.png) +![Initiative details form](https://crowdfunding.linuxfoundation.org/images/docs/fundraising-details-form.png) ### Step 3 — Compliance and terms Before submitting, you must confirm: -- **OFAC compliance** — that your initiative complies with US sanctions regulations +- **OFAC compliance** — that your initiative complies with US sanctions regulations. OFAC (the US Office of Foreign Assets Control) administers US sanctions law; you are confirming that your initiative does not involve sanctioned countries, organisations, or individuals. - **Terms of service** — acceptance of the LFX Platform Use Agreement ## After submission diff --git a/docs/user/initiatives/index.md b/docs/user/initiatives/index.md index 93dfb75d..368b8ac8 100644 --- a/docs/user/initiatives/index.md +++ b/docs/user/initiatives/index.md @@ -2,8 +2,9 @@ title: Initiatives description: Learn about fundraising initiatives on LFX Crowdfunding — browse campaigns, create your own, and manage your initiative. tags: [initiatives, campaigns, projects, fundraising] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 2 +intercom_collection: LFX Crowdfunding --- Initiatives are fundraising campaigns created by open source projects, events, and organisations affiliated with the Linux Foundation. Each initiative has a goal, a description of how funds will be used, and a transparent record of donations received. @@ -25,7 +26,7 @@ Initiatives are fundraising campaigns created by open source projects, events, a ## For companies and sponsors -Companies looking to sponsor open source projects can donate to any published initiative. See [For Companies](/for-companies) for more information on sponsorship packages. +Companies looking to sponsor open source projects can donate to any published initiative directly from its page. Contact the Linux Foundation for information on sponsorship packages. ## Related sections diff --git a/docs/user/initiatives/manage-initiative/index.md b/docs/user/initiatives/manage-initiative/index.md index 57177ef0..d1874f8f 100644 --- a/docs/user/initiatives/manage-initiative/index.md +++ b/docs/user/initiatives/manage-initiative/index.md @@ -2,8 +2,9 @@ title: Manage Your Initiative description: How to update and manage a published initiative on LFX Crowdfunding. tags: [initiatives, manage, edit, financials, reporting] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 3 +intercom_collection: LFX Crowdfunding --- Once your initiative is approved and published, you can manage it through the LFX platform. Visit [My Initiatives on LFX](https://app.lfx.dev/crowdfunding/initiatives) to update your initiative's details. diff --git a/docs/user/payment-account/index.md b/docs/user/payment-account/index.md index 8cb519c6..a176f664 100644 --- a/docs/user/payment-account/index.md +++ b/docs/user/payment-account/index.md @@ -2,10 +2,13 @@ title: Payment Account description: How to manage your saved payment method and billing details on LFX Crowdfunding. tags: [payment, card, billing, stripe] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 5 +intercom_collection: LFX Crowdfunding --- +This page applies to donors who have already completed at least one donation on LFX Crowdfunding. + Payment account management — including updating or removing your saved card — is handled through the LFX platform. Visit [My Donations on LFX](https://app.lfx.dev/crowdfunding/donations) to manage your payment details. ## Saving a card diff --git a/docs/user/reimbursements/index.md b/docs/user/reimbursements/index.md index 35cbafba..ff6b5519 100644 --- a/docs/user/reimbursements/index.md +++ b/docs/user/reimbursements/index.md @@ -2,10 +2,13 @@ title: Reimbursements description: How expense reimbursements work for initiative owners and beneficiaries on LFX Crowdfunding. tags: [reimbursements, expenses, beneficiaries, expensify] -last_updated: 2026-06-16 +last_updated: 2026-06-17 display_order: 7 +intercom_collection: LFX Crowdfunding --- +This section applies to initiative owners and beneficiaries claiming expenses against initiative funds. + Reimbursements allow initiative owners and their designated beneficiaries to claim expenses against initiative funds. The process is managed through an external expense service — LFX Crowdfunding handles the setup and approval flow. ## Who can submit expenses diff --git a/frontend/server/api/docs/[...slug].get.ts b/frontend/server/api/docs/[...slug].get.ts index 1a71caad..2d8c02f3 100644 --- a/frontend/server/api/docs/[...slug].get.ts +++ b/frontend/server/api/docs/[...slug].get.ts @@ -88,5 +88,6 @@ export default defineEventHandler(async (event): Promise => { bodyHtml, tags: (fm.tags as string[] | undefined) ?? [], lastUpdated: fm.last_updated != null ? formatDate(fm.last_updated) : null, + intercomCollection: (fm.intercom_collection as string | undefined) ?? null, }; }); diff --git a/frontend/shared/types/documentation.types.ts b/frontend/shared/types/documentation.types.ts index 5dfe3a2b..9aead35f 100644 --- a/frontend/shared/types/documentation.types.ts +++ b/frontend/shared/types/documentation.types.ts @@ -37,4 +37,5 @@ export interface DocArticle { bodyHtml: string; tags: string[]; lastUpdated: string | null; + intercomCollection: string | null; } From 533b7a57caf75ceb72a39238dd64218e89f35752 Mon Sep 17 00:00:00 2001 From: Efren Lim Date: Wed, 17 Jun 2026 18:01:43 +0800 Subject: [PATCH 9/9] fix(docs): address sixth round of copilot-pull-request-reviewer feedback on PR #166 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address review comments from copilot-pull-request-reviewer: - frontend/app/components/modules/documentation/view/docs-article.vue: replaced max-w-4/5 with w-4/5 and max-w-3/5 with w-3/5 — Tailwind only supports fractional classes on w-, not max-w-; the skeleton width constraint was silently dropped (per copilot-pull-request-reviewer) - .mlc_config.json: added ignore pattern for https://crowdfunding.linuxfoundation.org/images/docs/* so that markdown-link-check does not 404 on doc screenshot images that are referenced in the docs but not yet served from the production site Resolves 2 review threads. Signed-off-by: Efren Lim --- .mlc_config.json | 4 ++++ .../components/modules/documentation/view/docs-article.vue | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.mlc_config.json b/.mlc_config.json index 1cd48004..414f8141 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -16,6 +16,10 @@ { "pattern": "^/for-companies", "comment": "App-relative route (frontend/app/pages/for-companies.vue) — not resolvable by offline link checkers" + }, + { + "pattern": "^https://crowdfunding\\.linuxfoundation\\.org/images/docs/", + "comment": "Docs screenshot images served from the production LFX Crowdfunding site — not yet available in CI (site not yet deployed to production)" } ], "timeout": "20s", diff --git a/frontend/app/components/modules/documentation/view/docs-article.vue b/frontend/app/components/modules/documentation/view/docs-article.vue index 0af2f00c..6fc79ff2 100644 --- a/frontend/app/components/modules/documentation/view/docs-article.vue +++ b/frontend/app/components/modules/documentation/view/docs-article.vue @@ -91,11 +91,11 @@ SPDX-License-Identifier: MIT />