{"id":51425155,"url":"https://github.com/apache/magpie-site","last_synced_at":"2026-07-05T02:01:00.740Z","repository":{"id":367840704,"uuid":"1282463974","full_name":"apache/magpie-site","owner":"apache","description":"Website for Apache Magpie — agent-assisted repository maintainership and development.","archived":false,"fork":false,"pushed_at":"2026-07-04T23:33:01.000Z","size":5282,"stargazers_count":5,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-05T00:12:17.308Z","etag":null,"topics":["apache","astro","magpie","website"],"latest_commit_sha":null,"homepage":"https://magpie.apache.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-27T20:03:28.000Z","updated_at":"2026-07-04T23:32:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/apache/magpie-site","commit_stats":null,"previous_names":["apache/magpie-site"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apache/magpie-site","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fmagpie-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fmagpie-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fmagpie-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fmagpie-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/magpie-site/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fmagpie-site/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35141083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache","astro","magpie","website"],"created_at":"2026-07-05T02:00:39.158Z","updated_at":"2026-07-05T02:01:00.726Z","avatar_url":"https://github.com/apache.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apache Magpie — Website\n\nLanding page and documentation hub for [Apache Magpie](https://github.com/apache/magpie), an AI assistant that helps open-source maintainers handle the repetitive parts of running a project — triage, mentoring, drafting fixes, and security-report handling — so they can focus on the work that needs a human.\n\n\u003e Status: **Apache Top-Level Project**. Project source lives at [apache/magpie](https://github.com/apache/magpie); this repo holds the public website.\n\n## Stack\n\n| Layer | Tool |\n|---|---|\n| Framework | [Astro 6](https://astro.build) (static output) |\n| UI | React 19 + [Tailwind CSS 4](https://tailwindcss.com) |\n| Animations | [Magic UI](https://magicui.design) (Particles, BorderBeam, BlurFade, TextAnimate, ShimmerButton) via `motion` |\n| Icons | [lucide-react](https://lucide.dev) + inline SVG for brand marks |\n| Docs | Astro content collections, markdown synced from [apache/magpie/docs](https://github.com/apache/magpie/tree/main/docs) |\n\nZero runtime dependency on closed-source design tooling. All components are owned in-tree.\n\n## Local development\n\n```bash\nnpm install\nnpm run sync-docs    # one-time fetch of markdown from apache/magpie\nnpm run dev          # http://localhost:4321\n```\n\nAlways start the dev server with `npm run dev` — it runs `scripts/dev.sh`, which sets `ASTRO_TELEMETRY_DISABLED=1` before launching `astro dev`. Without that, Astro tries to write to its telemetry config dir (e.g. `~/Library/Preferences/astro`) and the dev server fails to start in sandboxed environments. Pass extra flags through, e.g. `npm run dev -- --port 3000`.\n\nThe `prebuild` hook runs `sync-docs` automatically, so `npm run build` always pulls a fresh copy of docs before generating the static site.\n\n### Available commands\n\n| Command | Purpose |\n|---|---|\n| `npm run dev` | Dev server with HMR (telemetry disabled via `scripts/dev.sh`) |\n| `npm run sync-docs` | Clone `apache/magpie` (sparse, `docs/` + `images/`) into `src/content/docs/` and `public/docs-assets/` |\n| `npm run build` | Static build to `dist/` (runs sync-docs first) |\n| `npm run preview` | Serve the built site locally |\n| `npm run astro` | Astro CLI passthrough |\n\n### Environment variables (optional)\n\n| Var | Default | Purpose |\n|---|---|---|\n| `MAGPIE_DOCS_REPO` | `https://github.com/apache/magpie.git` | Source repo for markdown |\n| `MAGPIE_DOCS_BRANCH` | `main` | Branch to sync from |\n\n## Project structure\n\n```\nwebsite/\n├── scripts/\n│   └── sync-docs.sh             # sparse-clone docs/ + images/ from source repo\n├── src/\n│   ├── components/\n│   │   ├── Badge/               # Subframe-derived primitives (owned)\n│   │   ├── Button/\n│   │   ├── IconButton/\n│   │   ├── landing/             # LP + SiteHeader/SiteFooter\n│   │   └── ui/                  # Magic UI / shadcn primitives\n│   ├── content/\n│   │   └── docs/                # synced markdown (gitignored)\n│   ├── content.config.ts        # docs collection schema\n│   ├── layouts/\n│   │   ├── BaseLayout.astro\n│   │   └── DocsLayout.astro\n│   ├── lib/utils.ts             # cn() helper\n│   ├── pages/\n│   │   ├── index.astro          # /\n│   │   └── docs/\n│   │       ├── index.astro      # /docs\n│   │       └── [...slug].astro  # /docs/\u003cany\u003e\n│   ├── styles/global.css\n│   └── theme.css                # design tokens (brand, neutral, text sizes)\n├── public/                       # static assets (logos, favicons, /docs-assets)\n└── astro.config.mjs\n```\n\n## Docs pipeline\n\nThe website is decoupled from the docs source. The markdown lives in [apache/magpie/docs](https://github.com/apache/magpie/tree/main/docs); this repo fetches it at build time and renders it through Astro content collections.\n\n```\napache/magpie/docs/*.md\n        │\n        ▼  scripts/sync-docs.sh (sparse clone)\nsrc/content/docs/*.md\n        │\n        ▼  Astro content collection\ndist/docs/**/*.html   (one static page per markdown file)\n```\n\nImage references inside markdown (`../../images/foo.png`) are rewritten to `/docs-assets/foo.png` during sync so they resolve against `public/docs-assets/`.\n\n## CI\n\nGitHub Actions workflow `.github/workflows/build.yml` runs on every push and PR to `main`:\n\n1. Install dependencies\n2. Sync docs from the source repo\n3. `astro check` (warn-only)\n4. `astro build`\n5. On `main`: copy `.asf.yaml` into `dist/` and force-push the build to the `publish` branch\n\n## Deployment\n\nThe site is published by **ASF infrastructure**, not GitHub Pages. On every push to `main`, CI builds the static site and force-pushes `dist/` (an orphan, single-commit history) to the **`publish`** branch. The root [`.asf.yaml`](./.asf.yaml) — carried into that branch — tells ASF infra to serve it:\n\n```yaml\npublish:\n  whoami: publish\n```\n\nASF infra serves the `publish` branch at the project's inferred hostname — `magpie-site` → **[magpie.apache.org](https://magpie.apache.org/)** (served at the apex root). The hostname must **not** be set explicitly via a `hostname:` field; asfyaml forbids naming your own `$project.apache.org` (\"it has to be inferred to prevent abuse\"), and doing so stops the site from publishing.\n\nThe site is built with `base: '/'` so all links and assets resolve against the apex domain. Set `SITE_BASE` / `SITE_URL` to preview under a subpath (e.g. GitHub Pages).\n\n\u003e One-time infra setup (outside this repo): for a brand-new project, ASF Infra may still need to provision DNS/TLS for `magpie.apache.org` before the inferred hostname resolves.\n\n## License\n\n[Apache License 2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fmagpie-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fmagpie-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fmagpie-site/lists"}