This repository contains the source code for ashley.dev, my personal website built with Astro and Tailwind CSS.
The website consists of several key sections:
- About - Personal introduction and background
- Projects - Showcase of my key projects and contributions
- Blog - Articles and thoughts on various topics
- Speaking - Information about my speaking engagements
- Astro - The web framework for content-focused websites
- Tailwind CSS - A utility-first CSS framework
- TypeScript - Type safety for JavaScript
- Markdown - Content management for blog posts
- Responsive design that works on desktop and mobile devices
- Content collections for structured data management
- Dark mode design for comfortable viewing
- Tag filtering system for blog posts and speaking engagements
- Social media integration with Bluesky, Twitter, LinkedIn, GitHub and Email
- Bluesky post interactions (likes and comments) displayed on blog posts
- Section-specific "no results" messaging for filtered content
- Clean URLs that don't persist query parameters on page refresh
- Robust tab system with browser history integration
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:3000 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run astro ... |
Run CLI commands like astro add, astro check |
Blog posts are written in Markdown and stored in src/content/posts/. Each post includes frontmatter with metadata such as:
title- The title of the postdate- Publication datetags- Categories/topics for filteringblueskyPostURI- Optional AT URI to a Bluesky post for displaying likes and comments
Speaking engagements and projects are managed through TypeScript data files in the src/data/ directory.
/
โโโ assets/ # Preview images for README
โโโ public/
โ โโโ img/ # Images used in the site
โ โโโ robots.txt
โโโ src/
โ โโโ assets/ # Images used in components
โ โโโ components/ # Reusable UI components
โ โ โโโ BlueskyLikes.astro # Bluesky likes and comments component
โ โ โโโ ... # Other components
โ โโโ content/
โ โ โโโ config.ts # Content collection configuration
โ โ โโโ posts/ # Blog posts in Markdown
โ โโโ data/
โ โ โโโ projects.ts # Project data
โ โ โโโ speaking.ts # Speaking engagements data
โ โโโ layouts/
โ โ โโโ Layout.astro # Main layout template
โ โโโ pages/
โ โ โโโ index.astro # Homepage with tabs
โ โ โโโ posts/
โ โ โโโ [slug].astro # Dynamic blog post pages
โ โโโ styles/
โ โ โโโ global.scss # Global styles
โ โโโ types/
โ โ โโโ content.ts # TypeScript interfaces
โ โโโ utils/
โ โโโ filtering.ts # Tag filtering utility
โโโ astro.config.mjs # Astro configuration
โโโ tailwind.config.js # Tailwind CSS configuration
โโโ tsconfig.json # TypeScript configuration
The site is automatically deployed when changes are pushed to the main branch.
This project is licensed under the terms specified in LICENSE.md.
