Modern Gatsby v5 blog built with TypeScript, Tailwind CSS v3, and shadcn/ui components. Features technical articles, project showcases, and optimized performance.
- Modern Stack: Gatsby v5, TypeScript, Tailwind CSS v3, shadcn/ui
- Content Management: MDX support with syntax highlighting and table of contents
- Performance Optimized: Lighthouse scores >90, image optimization, code splitting
- SEO Ready: Structured data, Open Graph, Twitter Cards, sitemap
- Dark/Light Theme: System preference aware theme switching
- Responsive Design: Mobile-first approach with beautiful UI components
src/
βββ components/ # Reusable UI components
β βββ ui/ # shadcn/ui base components
β βββ layout/ # Layout components (Header, Footer, SEO)
β βββ home/ # Home page specific components
β βββ articles/ # Article-related components
β βββ mdx/ # MDX custom components
βββ content/ # MDX content files
β βββ articles/ # Blog articles
βββ pages/ # Gatsby pages
βββ templates/ # Page templates
βββ styles/ # Global styles and themes
βββ utils/ # Utility functions
- Node.js 18+
- npm 9+
# Install dependencies
npm install
# Start development server
npm run develop
# Build for production
npm run build
# Serve production build
npm run servenpm run develop # Start development server
npm run build # Build for production
npm run serve # Serve production build
npm run clean # Clean Gatsby cache
npm run typecheck # Run TypeScript checks
npm run lighthouse # Run Lighthouse performance tests
npm run lighthouse:ci # Build and test performance
npm run analyze # Analyze bundle size
npm run export-notes # Export Apple Notes to MDX (folder-based categorization)
npm run perf # Full performance testing suite- Create a new MDX file in
src/content/articles/ - Add frontmatter with required fields:
---
title: "Your Article Title"
slug: your-article-slug
excerpt: "Brief description of the article"
date: "2024-01-01"
category: "Technology"
tags: ["React", "TypeScript"]
readingTime: "5 min read"
featured: false
author: "Sai Nimmagadda"
---- Write your content using MDX syntax
- The article will automatically appear on the articles page
The scripts/export-notes/ directory contains a TypeScript CLI for exporting Apple Notes to MDX format:
-
Purpose: Export Apple Notes to
src/content/notes/, categorized by Apple Notes folder name -
How it works: Accesses Notes.app via JXA/osascript, converts HTML to Markdown via Turndown, extracts images (including HEICβJPEG), generates deterministic frontmatter
-
Categorization: Each Apple Notes folder maps to an export category:
Apple Notes Folder Export Category Directory Notes (default) General notes/general/π― Content Creation Content-Creation notes/content-creation/π Planning & Strategy Planning-Strategy notes/planning-strategy/π₯ Inbox Inbox notes/inbox/π Active Projects Active-Projects notes/active-projects/π€¦π½ββοΈ Personal Systems Personal-Systems notes/personal-systems/π§ Knowledge Base Knowledge-Base notes/knowledge-base/ -
Excluded: Notes tagged
#privateor#workin body text, archived notes -
Output: MDX files in
src/content/notes/{category}/, images instatic/images/articles/ -
Deterministic: Same notes produce identical output every run (no AI/LLM)
npm run export-notes # Export all notes
npm run export-notes -- --dry-run # Preview what would be exported
npm run export-notes -- --verbose # Show per-note detailsNotes are written to src/content/notes/{category}/ and images to static/images/articles/.
- Backend
- Frontend
- Healthcare
- Architecture
- DevOps
- Database
- Cloud
- Security
The site uses CSS custom properties for theming. Modify src/styles/globals.css to customize:
- Colors
- Typography
- Spacing
- Border radius
- Animations
All UI components are built with shadcn/ui and can be customized in src/components/ui/.
The site is optimized for performance with:
- Lighthouse Scores: >90 for all metrics
- Core Web Vitals: Optimized LCP, FID, CLS
- Image Optimization: gatsby-plugin-image with WebP
- Code Splitting: Automatic route-based splitting
- Caching: Optimized cache headers
- Bundle Analysis: webpack-bundle-analyzer integration
# Run full performance test suite
npm run perf
# Individual tests
npm run lighthouse # Lighthouse audit
npm run analyze # Bundle analysis- Structured Data: JSON-LD for articles and author
- Meta Tags: Complete Open Graph and Twitter Card support
- Sitemap: Automatically generated
- Robots.txt: SEO-friendly configuration
- Canonical URLs: Prevent duplicate content issues
- Performance: Fast loading times improve SEO rankings
-
Connect Repository: Link your GitHub repository to Netlify
-
Build Settings:
- Build command:
npm run build - Publish directory:
public - Node version:
18
- Build command:
-
Environment Variables (Optional):
GA_MEASUREMENT_ID=your-google-analytics-id -
Deploy: Push to your main branch
# Run deployment script
./scripts/deploy/deploy.sh
# Or manually
npm run build
# Upload 'public' directory to your serverSet up monitoring for:
- Core Web Vitals
- Lighthouse CI
- Bundle size tracking
- Error tracking
- Create a GA4 property
- Update
gatsby-config.tswith your Measurement ID:trackingIds: ["G-XXXXXXXXXX"];
The site includes performance monitoring setup for:
- Real User Monitoring (RUM)
- Core Web Vitals tracking
- Error boundary reporting
gatsby-config.ts- Gatsby configuration and pluginstailwind.config.js- Tailwind CSS configurationnetlify.toml- Netlify deployment configurationtsconfig.json- TypeScript configuration
Create a .env file for local development:
# Optional: Google Analytics
GA_MEASUREMENT_ID=G-XXXXXXXXXX
# Optional: Site URL (for sitemap)
GATSBY_SITE_URL=https://s11a.com# Full performance audit
npm run lighthouse:ci
# Individual page testing
npm run lighthousenpm run typecheck- Framework: Gatsby v5
- Language: TypeScript
- Styling: Tailwind CSS v3
- UI Components: shadcn/ui (Radix UI + Tailwind)
- Content: MDX with remark/rehype plugins
- Icons: Lucide React
- Deployment: Netlify
- Analytics: Google Analytics 4
- Performance: Lighthouse CI
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and type checking
- Submit a pull request
MIT License - see LICENSE file for details
- Live Site: s11a.com
- GitHub: Repository
- Author: Sai Nimmagadda
Built with β€οΈ by Sai Nimmagadda