AstroCV - Personal Portfolio Website
Built a modern, performant portfolio website using Astro with Content Collections, MDX support, and zero JavaScript by default
AstroTypeScriptMDXCSSContent Collections
Completed January 2026
AstroCV - Personal Portfolio Website
A modern, fast, and accessible portfolio website built with Astro framework. This project showcases my skills, experience, projects, and blog posts in a clean, professional design.
Why I Built This
I wanted a portfolio that:
- Loads instantly β No JavaScript bloat, just fast HTML/CSS
- Is easy to maintain β Content Collections with type-safe schemas
- Looks professional β Modern design with glassmorphism effects and smooth animations
- Tells my story β Blog section to share my learning journey
Key Features
π Performance First
- Zero JavaScript shipped by default
- Sub-second page loads
- Perfect Lighthouse scores
- Optimized images and assets
π Content Management
- MDX support for rich content
- Type-safe Content Collections
- Automatic slug generation
- Tag-based filtering
π¨ Modern Design
- Dark mode by default
- Glassmorphism UI elements
- Smooth CSS animations
- Fully responsive layout
π CV Showcase
- Interactive skills visualization
- Experience timeline
- Education section
- Downloadable PDF resume
Technical Implementation
Content Collections Schema
const projectsCollection = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
technologies: z.array(z.string()),
githubUrl: z.string().url().optional(),
liveUrl: z.string().url().optional(),
featured: z.boolean().default(false),
completedDate: z.date(),
}),
});
Component Architecture
- Layouts: BaseLayout with header, footer, SEO
- CV Components: Timeline, SkillBar, cards
- Blog Components: BlogCard, post template
- Project Components: ProjectCard, filtering
What I Learned
This project was my deep dive into Astro. Key takeaways:
- Static-first thinking β Most content doesnβt need JavaScript
- Type safety pays off β Content Collections caught many errors early
- CSS is powerful β Modern CSS can achieve effects I thought needed JS
- Documentation matters β Astroβs docs are excellent; I should write docs like that
Future Improvements
- Add search functionality
- Implement RSS feed
- Add project filtering by technology
- Create a dark/light mode toggle
- Add reading time estimates
Running Locally
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build