Skip to content

djmartin2019/DJM-Tech-V2

Repository files navigation

πŸš€ DJM Tech Portfolio

Astro TypeScript Tailwind CSS

A modern, high-performance portfolio website showcasing full-stack development expertise

🌐 Live Demo β€’ πŸ“§ Contact β€’ πŸ’Ό LinkedIn

✨ Key Features

🎨 Design & User Experience

  • πŸŒ™ Dark/Light Mode: Toggle between themes with persistent user preference
  • πŸ“± Mobile-First Design: Fully responsive across all device sizes
  • 🎭 Interactive Animations: Smooth transitions and hover effects
  • 🎨 Modern UI: Clean, professional design with blue neon accents
  • β™Ώ Accessibility: WCAG compliant with proper contrast ratios

⚑ Performance & SEO

  • πŸš€ Static Site Generation: Lightning-fast page loads with Astro
  • πŸ” SEO Optimized: Comprehensive meta tags, structured data, and sitemaps
  • πŸ“Š Core Web Vitals: Optimized for Google's performance metrics
  • πŸ–ΌοΈ Image Optimization: Automatic image compression and lazy loading
  • πŸ“‘ RSS Feed: Built-in blog RSS feed for content syndication

πŸ“ Content Management

  • πŸ“– MDX Blog System: Rich content with markdown and React components
  • 🏷️ Tag-Based Filtering: Organize and filter blog posts by topics
  • πŸ“‚ Project Portfolio: Showcase current, completed, and roadmap projects
  • πŸ”— Dynamic Routing: Automatic page generation from content collections
  • πŸ“… Date Sorting: Chronological blog post organization

πŸ› οΈ Developer Experience

  • πŸ“˜ TypeScript: Full type safety throughout the codebase
  • 🎯 Component Architecture: Reusable, maintainable UI components
  • πŸ”§ Hot Reload: Instant development feedback with Vite
  • πŸ“¦ Modern Build Tools: Optimized bundling and asset management

πŸ› οΈ Tech Stack

Frontend

Content & Data

Development & Build Tools

  • Vite - Lightning-fast build tool and dev server
  • Sharp - High-performance image processing
  • Formspree - Contact form handling
  • Git - Version control and collaboration

SEO & Performance

πŸ“ Project Structure

djm-tech-v2/
β”œβ”€β”€ πŸ“ public/                    # Static assets
β”‚   β”œβ”€β”€ πŸ“ assets/               # Images and media files
β”‚   β”‚   β”œβ”€β”€ πŸ“ websites/         # Project screenshots
β”‚   β”‚   └── about-me-photo.jpeg  # Profile picture
β”‚   β”œβ”€β”€ favicon.ico              # Site favicon
β”‚   └── robots.txt               # SEO robots file
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ πŸ“ components/           # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ Header.astro         # Navigation with theme toggle
β”‚   β”‚   β”œβ”€β”€ Footer.astro         # Site footer with social links
β”‚   β”‚   └── ThemeToggle.astro    # Dark/light mode switcher
β”‚   β”œβ”€β”€ πŸ“ content/              # Content collections
β”‚   β”‚   └── πŸ“ blog/             # MDX blog posts
β”‚   β”‚       β”œβ”€β”€ *.mdx            # Individual blog posts
β”‚   β”‚       └── config.ts        # Content collection schema
β”‚   β”œβ”€β”€ πŸ“ data/                 # Static data and types
β”‚   β”‚   β”œβ”€β”€ projects.ts          # Project portfolio data
β”‚   β”‚   β”œβ”€β”€ skills.ts            # Technology skills data
β”‚   β”‚   └── blog.ts              # Blog utilities and functions
β”‚   β”œβ”€β”€ πŸ“ layouts/              # Page layouts and templates
β”‚   β”‚   └── Layout.astro         # Main layout with SEO
β”‚   β”œβ”€β”€ πŸ“ pages/                # Astro pages (file-based routing)
β”‚   β”‚   β”œβ”€β”€ index.astro          # Homepage
β”‚   β”‚   β”œβ”€β”€ projects.astro       # Projects showcase
β”‚   β”‚   β”œβ”€β”€ blog.astro           # Blog listing page
β”‚   β”‚   β”œβ”€β”€ blog/[slug].astro    # Individual blog posts
β”‚   β”‚   β”œβ”€β”€ about.astro          # About page
β”‚   β”‚   β”œβ”€β”€ contact.astro        # Contact form
β”‚   β”‚   └── rss.xml.js           # RSS feed generator
β”‚   └── πŸ“ styles/               # Global styles and themes
β”‚       └── global.css           # CSS variables and utilities
β”œβ”€β”€ πŸ“„ astro.config.mjs          # Astro configuration
β”œβ”€β”€ πŸ“„ package.json              # Dependencies and scripts
β”œβ”€β”€ πŸ“„ tailwind.config.mjs       # Tailwind CSS configuration
└── πŸ“„ tsconfig.json             # TypeScript configuration

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn package manager

Installation & Setup

  1. Clone the repository

    git clone https://github.com/djmartin2019/djm-tech-v2.git
    cd djm-tech-v2
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Start development server

    npm run dev
    # or
    yarn dev

    Open http://localhost:4321 to view the site

  4. Build for production

    npm run build
    # or
    yarn build
  5. Preview production build

    npm run preview
    # or
    yarn preview

Available Scripts

  • npm run dev - Start development server with hot reload
  • npm run build - Build optimized production site
  • npm run preview - Preview production build locally
  • npm run astro - Run Astro CLI commands

πŸ“ Content Management

Adding Blog Posts

  1. Create a new MDX file in src/content/blog/

    touch src/content/blog/your-new-post.mdx
  2. Add frontmatter with required fields:

    ---
    title: "Your Amazing Blog Post Title"
    description: "A compelling description for SEO and social sharing"
    summary: "Brief summary for blog listings (optional)"
    date: "2025-01-15"
    tags: ["Web Development", "Astro", "TypeScript"]
    featured: false
    readTime: 5
    image: "/assets/blog/your-featured-image.jpg"
    ---
    # Your Content Here
    
    Write your blog post content using Markdown syntax...
  3. Supported frontmatter fields:

    • title (required) - Post title
    • description (required) - SEO description
    • summary (optional) - Brief summary for listings
    • date (required) - Publication date (YYYY-MM-DD)
    • tags (required) - Array of topic tags
    • featured (optional) - Boolean for featured posts
    • readTime (optional) - Estimated reading time in minutes
    • image (optional) - Featured image path

Adding Projects

Edit src/data/projects.ts to add new projects:

{
  id: 'unique-project-id',
  title: 'Project Name',
  description: 'Brief project description for cards',
  longDescription: 'Detailed project description for project pages',
  image: '/assets/websites/project-screenshot.png',
  technologies: ['React', 'TypeScript', 'Tailwind CSS'],
  status: 'current', // 'current' | 'completed' | 'roadmap'
  liveUrl: 'https://your-project.com',
  githubUrl: 'https://github.com/djmartin2019/your-project',
  featured: true,
  category: 'Web Application',
  startDate: '2024-01',
  endDate: '2024-06' // Optional for completed projects
}

Adding Skills

Update src/data/skills.ts to add new technologies:

{
  name: "Technology Name",
  icon: "icon-name", // DevIcons identifier
  category: "Frontend" // "Frontend" | "Backend" | "Tools"
}

πŸ” SEO & Performance Features

Search Engine Optimization

  • πŸ“Š Meta Tags: Comprehensive Open Graph and Twitter Card support
  • πŸ—οΈ Structured Data: JSON-LD schema markup for rich snippets
  • πŸ—ΊοΈ Sitemap: Automatic XML sitemap generation
  • πŸ“‘ RSS Feed: Blog RSS feed at /rss.xml
  • πŸ€– Robots.txt: Search engine crawler optimization
  • πŸ”— Canonical URLs: Proper URL canonicalization

Performance Optimizations

  • ⚑ Core Web Vitals: Optimized LCP, FID, and CLS scores
  • πŸ–ΌοΈ Image Optimization: Automatic compression and WebP conversion
  • πŸ“¦ Bundle Splitting: Efficient code splitting and lazy loading
  • 🎯 Critical CSS: Inlined critical styles for faster rendering
  • πŸ’Ύ Caching: Optimized cache headers and static asset caching

πŸš€ Deployment

This static site can be deployed to any platform that supports static site hosting:

Build Configuration

  • Build Command: npm run build
  • Output Directory: dist
  • Node.js Version: 18.x or higher

Deployment Options

  • GitHub Pages: Free hosting for public repositories
  • Netlify: Easy deployment with continuous integration
  • Cloudflare Pages: Global CDN with edge computing
  • AWS S3 + CloudFront: Enterprise-grade hosting
  • Firebase Hosting: Google's hosting platform
  • Surge.sh: Simple static site deployment

Environment Variables

No environment variables required for basic deployment. Optional variables for enhanced features:

# Contact Form (Formspree)
FORMSPREE_ENDPOINT=https://formspree.io/f/your-form-id

# Analytics (Optional)
GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX

Deployment Steps

  1. Build the site: npm run build
  2. Upload the dist folder to your hosting platform
  3. Configure custom domain (optional)
  4. Set up continuous deployment from your Git repository

🎨 Customization Guide

Branding & Colors

The site uses CSS custom properties for easy theming:

/* src/styles/global.css */
:root {
  --accent-color: #00d4ff; /* Primary blue */
  --accent-hover: #33dfff; /* Hover blue */
  --accent-dark: #0099cc; /* Dark blue */
  --bg-primary: #0a0a0a; /* Dark background */
  --text-primary: #ffffff; /* Primary text */
  /* ... more variables */
}

Personal Information

Update these files with your information:

  • Projects: src/data/projects.ts - Portfolio projects
  • Skills: src/data/skills.ts - Technology skills
  • About Page: src/pages/about.astro - Personal bio
  • Contact: src/pages/contact.astro - Contact details
  • SEO: src/layouts/Layout.astro - Site metadata

Layout Customization

Key layout files:

  • Main Layout: src/layouts/Layout.astro - Global structure
  • Header: src/components/Header.astro - Navigation
  • Footer: src/components/Footer.astro - Site footer
  • Theme Toggle: src/components/ThemeToggle.astro - Dark/light mode

⚑ Performance Metrics

This site is built for optimal performance:

  • πŸš€ Static Generation: All pages pre-rendered at build time
  • πŸ’§ Minimal JavaScript: Only interactive components hydrated
  • πŸ–ΌοΈ Optimized Images: Automatic compression and modern formats
  • 🎨 CSS Optimization: Tailwind CSS purging and critical CSS
  • 🌐 CDN Ready: Optimized for global content delivery
  • πŸ“Š Lighthouse Score: 95+ across all metrics

Core Web Vitals

  • LCP: < 2.5s (Largest Contentful Paint)
  • FID: < 100ms (First Input Delay)
  • CLS: < 0.1 (Cumulative Layout Shift)

🌐 Browser Support

  • Modern Browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
  • Mobile Browsers: iOS Safari 14+, Chrome Mobile 90+
  • Progressive Enhancement: Graceful degradation for older browsers

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use semantic commit messages
  • Test thoroughly before submitting
  • Update documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Contact & Support

David Martin - Full-Stack Developer & Entrepreneur

Email GitHub LinkedIn Twitter


⭐ If you found this project helpful, please give it a star!

Made with ❀️ by David Martin

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors