Project Structure

Overview of the codebase organization and directory structure.

· 2 min read

Project Structure

Overview of the codebase organization.

Directory Structure

├── public/               # Static assets (favicons, images)
├── src/
│   ├── components/       # Reusable Astro components
│   ├── content/          # MDX content files
│   │   ├── projects/     # Case studies
│   │   ├── decisions/    # Decision logs
│   │   ├── journey/      # Career timeline
│   │   ├── writing/      # Blog posts
│   │   ├── speaking/     # Talks & presentations
│   │   ├── uses/         # Tools & setup
│   │   └── testimonials/ # Recommendations
│   ├── layouts/          # Page layouts
│   ├── pages/            # Route pages
│   ├── styles/           # Global CSS
│   ├── utils/            # Utility functions
│   ├── config.ts         # Site configuration
│   ├── content.config.ts # Content schemas
│   └── pages.config.ts   # Page metadata
├── .env                  # Environment variables
└── astro.config.mjs      # Astro configuration

Key Files

Configuration

FilePurpose
.envEnvironment variables (personal info, URLs)
src/config.tsSite configuration, navigation
src/pages.config.tsPage metadata (titles, descriptions)
src/content.config.tsContent collection schemas
astro.config.mjsAstro settings, integrations

Layouts

FileUsed For
BaseLayout.astroAll pages (head, scripts, theme)
PageLayout.astroStandard pages
ArticleLayout.astroBlog posts
CaseStudyLayout.astroProject detail pages

Components

ComponentPurpose
Navigation.astroSite navigation
Footer.astroSite footer
ThemeToggle.astroDark/light mode toggle
ProjectCard.astroCase study cards
ArticleCard.astroBlog post cards
SEO.astroMeta tags
StructuredData.astroJSON-LD schema

Styles

FilePurpose
global.cssCSS custom properties, reset
typography.cssTypography styles
utilities.cssUtility classes

Content Collections

Each content type has its own folder in src/content/ with schema validation defined in src/content.config.ts.

CollectionLocationDescription
projectssrc/content/projects/Case studies
decisionssrc/content/decisions/Technical decisions
journeysrc/content/journey/Career timeline
writingsrc/content/writing/Blog posts
speakingsrc/content/speaking/Talks & presentations
usessrc/content/uses/Tools & setup
testimonialssrc/content/testimonials/Recommendations

Public Assets

Static files in public/ are served as-is:

public/
├── favicon.svg          # Main favicon
├── favicon-*.png        # PNG fallbacks
├── apple-touch-icon.png # iOS icon
├── og-image.png         # Social sharing image
└── site.webmanifest     # PWA manifest