personal website / landing page / all things public
  • Astro 49.4%
  • CSS 23.4%
  • JavaScript 19.7%
  • TypeScript 7.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
kayg 9a8c61b31e docs: update downloadable resume
Replace the public resume PDF with the supplied updated one-page document. Preserve the existing /resume.pdf URL. Verify the copied PDF matches the supplied file byte for byte.
2026-10-05 23:59:03 +05:30
.obsidian chore(content): compress sync-panes.mp4 exceeding 25 MiB 2026-03-29 00:19:26 +05:30
.vscode Initial commit: Astro personal page with performance and accessibility improvements 2026-01-18 11:34:31 +05:30
docs fix: match background loading preview to grain shader 2026-10-03 14:49:06 +05:30
public docs: update downloadable resume 2026-10-05 23:59:03 +05:30
scripts fix: match background loading preview to grain shader 2026-10-03 14:49:06 +05:30
src fix: match background loading preview to grain shader 2026-10-03 14:49:06 +05:30
.gitignore feat(apps): refresh icon and make page content editable 2026-10-02 21:22:15 +05:30
AGENTS.md chore(dev): enable dev-mode search and document unoptimized assets 2026-01-19 18:11:39 +05:30
astro.config.mjs perf: reduce shared payload and clean up interaction lifecycles 2026-10-02 20:48:10 +05:30
LICENSE docs: add MIT license 2026-01-23 12:13:20 +05:30
package-lock.json build: refresh dependencies to October stable releases 2026-10-02 20:33:26 +05:30
package.json build: refresh dependencies to October stable releases 2026-10-02 20:33:26 +05:30
README.md feat(apps): refresh icon and make page content editable 2026-10-02 21:22:15 +05:30
ROADMAP.md docs(roadmap): capture dark mode contrast pass 2026-03-23 13:31:47 +00:00
tsconfig.json Initial commit: Astro personal page with performance and accessibility improvements 2026-01-18 11:34:31 +05:30

Personal Website

Personal site built with Astro 7, content collections, and a custom UI layer.

For everyday edits, start with the editing guide.

Tech Stack

Project Layout

src/
  content/                 # Collection content (markdown + local assets)
    blog/
    talks/
    now/
    uses/
    photography/
    home/
    apps/
    about/
    homelab/
    changelog/
  content.config.ts        # Astro content collection schemas/loaders
  pages/
    index.astro
    apps.astro
    blog.astro
    notes.astro
    talks.astro
    photography.astro
    changelog.astro
    now/index.astro
    uses/index.astro
    [page].astro
    [collection]/[slug].astro
  layouts/
    BaseLayout.astro
    MarkdownLayout.astro
    TimelineLayout.astro
  components/
  styles/global.css
scripts/
  sync-obsidian.mjs
public/
  favicon.svg
  robots.txt
  resume.pdf

Development

npm install
npm run dev

Build

npm run build
npm run preview

npm run build generates the Astro output and runs Pagefind against dist/.

Search in Dev Mode

Pagefind needs a built index. To test search while running dev server:

npm run build:search
npm run dev

This writes the index to public/pagefind/ (git-ignored).

Content Workflow

  • Markdown content lives under src/content/<collection>/.
  • Collection schemas and frontmatter validation live in src/content.config.ts.
  • Use scripts/sync-obsidian.mjs to sync from an Obsidian vault (requires OBSIDIAN_PATH in .env).

Assets

  • Put assets in src/content/... when you want Astro/Vite optimization.
  • Put assets in public/ when you need exact, unprocessed files (for example PDFs or files that should bypass optimization).

License

  • Code: MIT (LICENSE)
  • Content: CC BY-NC 4.0 (src/content/LICENSE)