A personal blog and digital garden built with Astro, featuring articles, projects, book reviews, game reviews, and more.
- Articles - Technical articles and tutorials with MDX support
- Books - Book reviews with ratings and reading status
- Games - Game reviews with platform and status tracking
- Projects - Project showcases with tech stack details
- Now - Personal status updates following nownownow pattern
- Uses - Tools, hardware, and gear recommendations
- Schema-based content with Zod validation
- Auto-generated content creation scripts
- Draft support for private/unpublished content
- Tag system for content categorization
- Type-safe with TypeScript throughout
- Bun package manager for fast development
- ESLint for code quality with TypeScript support
- Prettier for consistent code formatting
- MDX support for rich article content
- Sitemap generation for SEO
- Dark mode support throughout
- Responsive design for all devices
- Fast builds with Astro's static generation
- RSS feeds for content syndication
- Clean typography and minimal design
Easy-to-use scripts for creating new content:
# Create new article
bun run new:article "Article Title"
# Create new book review
bun run new:book "Book Title" "Author Name"
# Create new game review
bun run new:game "Game Title"
# Create new project showcase
bun run new:project "Project Name"
# Create now entry (current date)
bun run new:now
# Create uses entry (current date)
bun run new:usesSee CONTENT_SCRIPTS.md for detailed usage instructions.
src/
βββ components/ # Astro components
β βββ Header/
β βββ BaseHead.astro
β βββ Footer.astro
β βββ FormattedDate.astro
β βββ StoreLinks.astro
βββ content/ # Content collections
β βββ articles/ # Technical articles (.md)
β βββ books/ # Book reviews (.md)
β βββ games/ # Game reviews (.md)
β βββ projects/ # Project showcases (.md)
β βββ now/ # Personal updates (.md)
β βββ uses/ # Tools & gear (.md)
β βββ config.ts # Content schemas
βββ layouts/ # Page layouts
β βββ BaseLayout.astro
β βββ Article.astro
βββ pages/ # Astro pages & routes
β βββ articles/ # Article pages & tags
β βββ books/ # Book pages & tags
β βββ games/ # Game pages & tags
β βββ now/ # Now pages
β βββ projects/ # Project pages
β βββ uses/ # Uses pages
β βββ *.astro/*.md # Static pages
βββ styles/ # Global styles
βββ global.css
- Node.js 18+
- Bun package manager (recommended)
# Clone the repository
git clone https://github.com/username/cavender.foo.git
cd cavender.foo
# Install dependencies
bun install
# Start development server
bun run dev
# Build for production
bun run build
# Preview production build
bun run preview# Development
bun run dev # Start dev server
bun run build # Build for production
bun run preview # Preview build locally
# Content Management
bun run new:article # Create new article
bun run new:book # Create new book review
bun run new:game # Create new game review
bun run new:project # Create new project
bun run new:now # Create now entry
bun run new:uses # Create uses entry
# Code Quality
bun run lint # Run ESLint
bun run lint:fix # Auto-fix ESLint issues
bun run format # Format with Prettier
bun run format:check # Check formatting# Example: Create a new article
bun run new:article "Getting Started with Astro"Scripts generate files with comprehensive frontmatter and content templates:
- Edit frontmatter with your details
- Replace placeholder content
- Add images, links, and metadata
bun run dev
# Visit http://localhost:4321 to previewbun run lint # Check code quality
bun run format:check # Verify formattingbun run build # Generate static site
# Deploy dist/ folder to your hosting provider- Format: MD (MDX for rich content)
- Schema: title, description, pubDate, updatedDate, tags, draft
- Features: Syntax highlighting, code blocks, embedded components
- Schema: title, author, ISBN, status, rating, links
- Status: read/unread/reading
- Features: Cover images, Goodreads/Amazon links
- Schema: title, status, platform, developer, publisher
- Status: played/playing/unplayed
- Features: Cover images, Steam links, ratings
- Schema: name, description, techStack, status, links
- Status: active/archived/in-development
- Features: Demo URLs, GitHub links, logos
- Schema: pubDate, draft, title (uses only)
- Features: Versioning system, collapsible history
- Pattern: nownownow.com style updates
All content types use Zod schemas for validation:
- Type-safe frontmatter
- Automatic date coercion
- Required field validation
- Default value support
- TypeScript support
- Astro recommended rules
- Prettier integration
- Strict null checks
- MDX integration
- Sitemap generation
- Image passthrough
- URL redirects
- Mobile-first approach
- Flexible layouts
- Optimized typography
- Touch-friendly navigation
- Fast loading times
- System preference detection
- Smooth theme transitions
- Consistent color scheme
- Accessibility compliant
- CSS custom properties
- Sitemap: Automatic XML sitemap generation
- Meta tags: Proper HTML meta descriptions
- URL structure: Clean, readable URLs
- Content feeds: RSS/XML feed generation
- Semantic HTML: Proper heading hierarchy
The site builds to static HTML/CSS/JS files:
bun run build
# Outputs to ./dist folder- Vercel: Recommended for Astro sites
- Netlify: Static site hosting with CI/CD
- GitHub Pages: Free static hosting
- Cloudflare Pages: Edge-optimized hosting
- Any static host: Upload dist/ folder
- RSS feeds: Generated automatically
- Sitemap: Included for search engines
- Fast builds: Optimized for development workflow
- Type safety: Full TypeScript coverage
- ESLint: Enforced coding standards
- Prettier: Consistent code formatting
- TypeScript: Type safety throughout
- Git hooks: Pre-commit quality checks
- Static generation: No server-side rendering needed
- Image optimization: Passthrough for local images
- Minimal dependencies: Fast install and build times
- Bundle analysis: Optimized JavaScript delivery
- Semantic HTML: Proper heading structure
- Keyboard navigation: All content accessible
- Screen reader: Proper ARIA labels
- Color contrast: WCAG compliant colors
This project is open source and available under the MIT License.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Website: https://cavender.foo
- GitHub: Repository Issues
This site was inspired by and draws concepts from several excellent digital gardens and blogs:
- Joel Hooks - Digital garden pioneer with thoughtful article organization and personal knowledge management approach
- Herman - Clean, minimalist design philosophy and continuous learning documentation
- Harper Reed - Modern approach to personal blogging with note-taking workflows and AI experimentation
- Digital Garden: Content grows and evolves over time rather than traditional blog format
- Now/Uses Pages: Following nownownow.com pattern for personal status updates
- Content Collections: Organized content types with schemas and validation
- Clean Typography: Minimal, readable design focused on content
- Type Safety: Full TypeScript implementation throughout
- Astro Framework: Modern static site generator with content collections
- Bun Package Manager: Fast, efficient development workflow
- Content Schemas: Zod validation for type-safe content management
- MDX Support: Rich content with embedded components