shreyasgokhale.com

Personal portfolio site. Built with Astro 4, Tailwind CSS, TypeScript, MDX.

Quick Start

npm install
npm run dev       # localhost:4321
npm run build     # type-check + build + Pagefind index

Content

All content is authored in an external Obsidian vault and pulled in via git submodule. The src/content directory is a symlink to content/green/Resume/content.

content/green/Resume/content/
  about/about.md            # Resume summary (free-form markdown)
  work/*.md                 # One file per job
  education/*.md            # One file per degree
  projects/*.md             # One file per project
  skills/                   # One file per skill category
    embedded.md             # category, domain, order + markdown list of skills
    robotics.md
    iot.md
    software.md
  languages/                # One file per language
    english.md              # language, proficiency, order
    german.md
    hindi.md
    marathi.md
  scribbles/*.md            # Blog posts
  subroutines/*.md          # Technical writeups
  gsoc/*.md                 # GSoC 2020 posts
  now/now.md                # /now page

Adding a Skill Category

Create a new .md in content/.../skills/:

---
category: "Machine Learning"
domain: "software"
order: 5
---
- TensorFlow
- PyTorch

domain controls tag colors: embedded (amber), robotics (teal), iot (blue), software (slate). order controls display position on the resume.

Adding a Language

Create a new .md in content/.../languages/:

---
language: "French"
proficiency: "Beginner (A1)"
order: 5
---

Resume Section Order

Edit RESUME_SECTIONS in src/consts.ts to reorder, add, or remove resume sections:

export const RESUME_SECTIONS: string[] = [
  "summary",
  "skills",
  "work",
  "education",
  "languages",
  "projects",
];

Site Configuration

All site-level config lives in src/consts.ts:

ExportControls
SITEName, email, description
NAV_ITEMSTop navigation links
HUB_CARDSHomepage card grid
RESUME_SECTIONSResume page section order
SOCIALSFooter social links (with icon keys)

Styling

  • Dark mode via class strategy with localStorage persistence
  • Section personality: scribbles use serif/warm tones, subroutines use mono/cool tones (CSS custom properties in src/styles/global.css)
  • Print stylesheet for A4 resume output (@media print rules in global.css)
  • Tag domain colors defined in src/lib/tags.ts

Path Aliases

@* maps to ./src/*. Use @components/, @lib/, @layouts/, @consts, @types.