Files

2.5 KiB

prad.nu

Purpose

Personal CV / portfolio site for Prad Nukala (https://prad.nu). A static Astro v6 site (forked from the Astro Cactus theme) organised into four content sections — Projects, Experience, Writing, Speaking — where Experience entries double as a cross-linking taxonomy. See README.md for the human-facing overview.

Key Files

File Description
package.json Dependencies and scripts (pnpm).
astro.config.ts Astro integrations (MDX, sitemap, icon, robots, webmanifest, expressive-code), markdown remark/rehype pipeline, Satori OG fonts.
tailwind.config.ts Tailwind v4 config (most styling is in src/styles/global.css).
tsconfig.json TypeScript config; defines the @/*src/* path alias.
biome.json Biome linter/formatter config (pnpm check / pnpm lint).
mise.toml / pnpm-workspace.yaml Toolchain + workspace config.
README.md Project purpose, content model, frontmatter reference.

Subdirectories

Directory Purpose
src/ All application source (see src/AGENTS.md).
public/ Static assets served as-is (see public/AGENTS.md).

For AI Agents

Working In This Directory

  • Package manager is pnpm. Output is static (output: 'static', ./dist) — no SSR adapter.
  • Import from source via the @/ alias (e.g. @/site.config), not long relative paths.
  • Most site-wide config (title, url, socialLinks, streamOrigin, menuLinks) lives in src/site.config.ts.

Testing Requirements

  • pnpm build is the primary correctness gate — it runs astro check-level content validation and fails on bad frontmatter, broken collection refs, or type errors.
  • pnpm check runs astro check + Biome. pnpm dev serves locally for visual checks.

Common Patterns

  • Content lives in Content Collections; schema is defined once in src/content.config.ts.
  • is:inline is required on <script type="application/ld+json"> and similar non-bundled scripts.

Dependencies

External

  • astro v6, tailwindcss v4 — framework + styling.
  • @astrojs/mdx, @astrojs/rss, @astrojs/sitemap, astro-icon, astro-webmanifest, astro-robots-txt, astro-expressive-code.
  • satori + sharp — OG image generation. pagefind — static search. @mux? no — speaking uses Cloudflare Stream via an iframe (no player dep).