{
  "markdown": "# Pixel Agency Website\n\nThis project is the Pixel Agency website — [pixelagency.com.au](https://www.pixelagency.com.au).\n\nBuilt with Astro, deployed on Vercel. For a fuller tour of the codebase - content systems,\ncolour tokens, routing conventions, the flow-field background - see [CLAUDE.md](./CLAUDE.md).\n\n## Integrations\n\nThis project includes the following dependencies as NPM packages:\n\n- [GSAP](https://www.npmjs.com/package/gsap) (GreenSock Animation Platform)\n- [Lenis](https://www.npmjs.com/package/@studio-freight/lenis) (Smooth scrolling)\n- [Tailwindcss](https://www.npmjs.com/package/tailwindcss) (Utility-first CSS framework, integrated with Astro)\n\nAll are installed locally and not via CDN.\n\n## 🚀 Project Structure\n\n```text\n/\n├── public/              # Served as-is: favicons, client logos, robots.txt\n├── src/\n│   ├── assets/          # Images processed at build (case studies, services)\n│   ├── components/      # Astro components, grouped by area\n│   ├── config/          # colours.ts (brand palette), site.ts (contact constants)\n│   ├── data/            # caseStudies.ts, insights.ts, and the okf/ knowledge bundle\n│   ├── layouts/         # Layout.astro - SEO, fonts, analytics, menu, footer\n│   ├── pages/           # File-based routes\n│   ├── scripts/         # flow-field.ts - animated canvas background\n│   ├── styles/          # global.css - CSS custom properties + Tailwind base\n│   └── types/\n├── astro.config.mjs     # Site URL, trailingSlash, fonts, sitemap, Partytown\n├── vercel.json          # Domain redirects + trailing-slash policy\n└── package.json\n```\n\n[CLAUDE.md](./CLAUDE.md) documents this in more detail, including the path aliases\n(`@components`, `@data`, `@layouts`, ...) and the content systems.\n\n## 🧞 Commands\n\nAll commands are run from the root of the project, from a terminal:\n\n| Command                   | Action                                           |\n| :------------------------ | :----------------------------------------------- |\n| `npm install`             | Installs dependencies                            |\n| `npm run dev`             | Starts local dev server at `localhost:4321`      |\n| `npm run build`           | Build your production site to `./dist/`          |\n| `npm run preview`         | Preview your build locally, before deploying     |\n| `npm run astro ...`       | Run CLI commands like `astro add`, `astro check` |\n| `npm run astro -- --help` | Get help using the Astro CLI                     |\n\n## 👀 Want to learn more?\n\nFeel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).\n\n## Project Specific Information\n\n| Weight | Name             |\n| :----- | :--------------- |\n| 100    | Thin             |\n| 200    | Extralight       |\n| 300    | Light            |\n| 400    | Regular (normal) |\n| 500    | Medium           |\n| 600    | Semibold         |\n| 700    | Bold             |\n| 800    | Extrabold        |\n| 900    | Black            |\n\nTailwind utility classes follow the same naming: font-thin, font-extralight, font-light, font-normal, font-medium, font-semibold, font-bold, font-extrabold, font-black.\n\n## Case Study Images\n\nThe individual case study pages have a number of images. Each image type has its own aspect ratio, as shown in the table below. When creating images for these, ensure that you crop them using the below ratios for best results.\n\n| Prop           | Container aspect | Crop to  | Use.         |\n| -------------- | ---------------- | -------- | ------------ |\n| `heroImage`    | `aspect-video`   | **16:9** | 1st row      |\n| `squareImages` | `aspect-square`  | **1:1**  | 2nd row      |\n| `wideImages`   | `aspect-16/7`    | **16:7** | Other rows   |\n| `tile`         | `aspect-square`  | **1:1**  | Listing page |\n\n## Publishing Case Studies\n\nFor SEO purposes not all case studies are published on site launch. It is better to keep an active site so it is planned on launching one case study per month. These are the steps you must take to do so:\n\n1. Move the case study to publish from the 'pages/case-studies/private' folder into its parent folder.\n2. Open the case study page and remove the 'published={false}' from the Layout component.\n3. Open the 'caseStudies.ts' file, find the case study in the caseStudies array, change its 'published' property to true.\n4. Commit on a new branch, open a pull request, and merge it. Do not commit directly to `main`.\n\n## Moving To Production\n\nMake sure you update the robots.txt file! In the public directory, open the robots.txt file and change the line `Disallow: /` to `Allow: /`\n\n## Troubleshooting\n\n### `npm run build` completes with \"0 page(s) built\" and an empty `dist/`\n\n**Symptom:** `astro build` finishes with no errors, but `dist/` only contains copied static assets and a generated sitemap — no `index.html`, no route pages at all. The log ends with something like:\n\n```\n[build] 0 page(s) built in 2.25s\n[build] Complete!\n```\n\n**Cause:** `package.json` has a top-level `overrides.vite` entry that pins Vite to a specific version. Astro has its own hard (non-peer) dependency on a specific Vite major version. If the override pins Vite to a version older than what the installed Astro version requires, `npm install` still succeeds and `astro build` still runs, but the prerender step silently fails partway through instead of throwing — leaving a half-finished `dist/.prerender/` directory of unconsumed SSR chunk modules and zero rendered pages.\n\nThis most often happens after upgrading (or reverting) Astro without also updating the `overrides.vite` entry to match — a stale override is easy to miss because `npm install` and `npm ls` don't flag it as broken, and the build doesn't throw.\n\n**Fix:**\n\n1. Check what Vite version the installed Astro actually requires:\n   ```\n   cat node_modules/astro/package.json | grep '\"vite\"'\n   ```\n2. Update `overrides.vite` in `package.json` to match that version (not an arbitrary older pin).\n3. Reinstall clean and clear stale build output:\n   ```\n   rm -rf node_modules package-lock.json dist .astro\n   npm install\n   ```\n4. Confirm there's a single deduplicated Vite version across the tree:\n   ```\n   npm ls vite\n   ```\n5. Rebuild and confirm the page count matches the number of routes under `src/pages/`:\n   ```\n   npm run build\n   ```\n6. Optionally, reproduce Vercel's exact build pipeline locally before deploying:\n   ```\n   npx vercel build\n   ```\n",
  "bytes": 6434,
  "sha": "309a0bb5514683575227fef9cbdc8530ff769686cd041a0ac3cb988114ee7ebc",
  "repo_slug": "bennythemink/pixel-agency-website",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_bennythemink_pixel_agency_website_src_da_55a5feda/readme"
}