Skip to content

kasuken/website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Emanuele Bartolesi's Website

Built with Astro Lighthouse Performance TypeScript Deployment

A blazing-fast, modern, and SEO-optimized portfolio website showcasing expertise in software development, technical writing, speaking, and education. Built with cutting-edge web technologies and optimized for performance and accessibility.

image

✨ Key Features

🎯 Performance & SEO

  • 100/100 Lighthouse Performance - Optimized for speed and user experience
  • SEO Optimized - Canonical URLs, OpenGraph, structured data, sitemap, and RSS feed
  • Web Accessibility - WCAG compliant with semantic HTML and proper ARIA labels
  • Progressive Enhancement - Works without JavaScript, enhanced with it

🎨 Modern Design & UX

  • Responsive Design - Mobile-first approach, looks great on all devices
  • Dark/Light Theme Toggle - Automatic system preference detection with manual override
  • Smooth Animations - Subtle micro-interactions and hover effects
  • Typography Excellence - Carefully chosen fonts and spacing for optimal readability

πŸ“š Content Management

  • Dynamic Blog Integration - Automatic synchronization with Dev.to articles
  • Books Showcase - Dedicated section for published and upcoming books
  • Portfolio Projects - Interactive project gallery with filtering capabilities
  • Course Catalog - Professional training programs and workshops
  • Speaking Engagements - Sessionize integration for conference talks

πŸ›  Developer Experience

  • TypeScript Support - Full type safety across the entire codebase
  • Hot Module Replacement - Lightning-fast development with instant updates
  • Modular Architecture - Clean component structure and separation of concerns
  • Git Hooks & Linting - Code quality enforcement and consistent formatting

πŸ—οΈ Architecture & Tech Stack

Frontend Framework

  • Astro - Modern static site generator with islands architecture
  • TypeScript - Type-safe JavaScript for better developer experience
  • MDX - Markdown with JSX components for rich content

Styling & Design

  • CSS Custom Properties - Modern CSS with design tokens for consistency
  • Mobile-First Responsive Design - Optimized for all screen sizes
  • CSS Grid & Flexbox - Modern layout techniques for flexible designs

Integrations & APIs

Deployment & Infrastructure

  • AWS Amplify - Serverless deployment with CI/CD
  • Static Site Generation - Pre-rendered pages for optimal performance
  • Edge Distribution - Global CDN for fast content delivery

πŸ“ Project Structure

πŸ“¦ website/
β”œβ”€β”€ 🎨 public/                    # Static assets
β”‚   β”œβ”€β”€ πŸ–ΌοΈ  img/                   # Images and graphics
β”‚   └── πŸ“ fonts/                 # Custom web fonts
β”‚
β”œβ”€β”€ πŸ“‚ src/
β”‚   β”œβ”€β”€ 🧩 components/            # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ BaseHead.astro        # SEO and meta tags
β”‚   β”‚   β”œβ”€β”€ Header.astro          # Navigation header
β”‚   β”‚   β”œβ”€β”€ Footer.astro          # Site footer
β”‚   β”‚   β”œβ”€β”€ ThemeToggle.astro     # Dark/light mode toggle
β”‚   β”‚   └── ...                   # Other components
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“Š data/                  # Content data and configuration
β”‚   β”‚   β”œβ”€β”€ books.ts              # Books and publications
β”‚   β”‚   β”œβ”€β”€ courses.ts            # Training courses and workshops
β”‚   β”‚   β”œβ”€β”€ projects.ts           # Portfolio projects
β”‚   β”‚   └── uses.ts               # Tools and technologies
β”‚   β”‚
β”‚   β”œβ”€β”€ 🎯 layouts/               # Page layouts and templates
β”‚   β”‚   └── BlogPost.astro        # Blog post layout
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“š lib/                   # Utility functions and helpers
β”‚   β”‚   β”œβ”€β”€ devto-loader.ts       # Dev.to API integration
β”‚   β”‚   └── rescuetime-loader.ts  # RescueTime API integration
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“„ pages/                 # Site pages and routes
β”‚   β”‚   β”œβ”€β”€ index.astro           # Homepage
β”‚   β”‚   β”œβ”€β”€ about.astro           # About page
β”‚   β”‚   β”œβ”€β”€ blog/                 # Blog pages
β”‚   β”‚   β”œβ”€β”€ books.astro           # Books showcase
β”‚   β”‚   β”œβ”€β”€ courses.astro         # Course catalog
β”‚   β”‚   β”œβ”€β”€ portfolio.astro       # Project portfolio
β”‚   β”‚   β”œβ”€β”€ speaking.astro        # Speaking engagements
β”‚   β”‚   β”œβ”€β”€ mentor.astro          # Mentoring services
β”‚   β”‚   └── ...                   # Other pages
β”‚   β”‚
β”‚   β”œβ”€β”€ 🎨 styles/                # Global styles and CSS
β”‚   β”‚   └── global.css            # Global CSS variables and base styles
β”‚   β”‚
β”‚   └── βš™οΈ  consts.ts              # Site configuration constants
β”‚
β”œβ”€β”€ πŸ“‹ scripts/                   # Build and utility scripts
β”‚   └── refresh-blog.mjs          # Blog content refresh script
β”‚
β”œβ”€β”€ βš™οΈ  astro.config.mjs           # Astro configuration
β”œβ”€β”€ πŸ“¦ package.json               # Dependencies and scripts
β”œβ”€β”€ πŸ”§ tsconfig.json              # TypeScript configuration
└── πŸ“– README.md                  # This file

πŸš€ Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn package manager

Installation

  1. Clone the repository

    git clone https://github.com/kasuken/website.git
    cd website
  2. Install dependencies

    npm install
  3. Set up environment variables

    cp .env.example .env

    Edit .env and configure your API keys:

    # Dev.to integration (optional)
    DEVTO_API_KEY=your_devto_api_key
    
    # RescueTime integration (optional)
    RESCUETIME_API_KEY=your_rescuetime_api_key
    
    # AWS Amplify deployment (production)
    AWS_AMPLIFY=true
  4. Start development server

    npm run dev
  5. Open your browser and visit http://localhost:4321

πŸ“œ Available Scripts

Script Description
npm run dev Start development server with hot reload
npm run build Build for production
npm run preview Preview production build locally
npm run astro Run Astro CLI commands
npm run refresh-blog Sync blog posts from Dev.to

🌟 Key Pages & Features

🏠 Homepage (/)

  • Hero section with professional introduction
  • Featured content and latest blog posts
  • GitHub activity calendar and productivity stats
  • Quick links to key sections

πŸ“ Blog (/blog)

  • Automatic synchronization with Dev.to articles
  • Category filtering and search functionality
  • RSS feed generation
  • SEO-optimized article pages

πŸ“š Books (/books)

  • Showcase of published and upcoming books
  • Purchase links for multiple platforms (Amazon, Packt, Gumroad)
  • Book reviews and ratings display
  • Category filtering by topic

πŸ’Ό Portfolio (/portfolio)

  • Interactive project gallery
  • Technology filtering and categorization
  • Live demos and GitHub repository links
  • Project case studies and descriptions

πŸŽ“ Courses (/courses)

  • Professional training catalog
  • Course filtering by skill level and category
  • Enrollment information and pricing
  • Student testimonials and reviews

🎀 Speaking (/speaking)

  • Sessionize integration for conference talks
  • Upcoming and past speaking engagements
  • Session abstracts and presentation materials
  • Event location and date information

πŸ‘¨β€πŸ« Mentoring (/mentor)

  • Mentoring services and approach
  • Booking information and availability
  • Success stories and testimonials
  • Contact and scheduling links

πŸ”§ Customization Guide

Adding New Content

πŸ“– Adding a New Book

// src/data/books.ts
{
  id: 'your-book-id',
  title: 'Your Book Title',
  description: 'Brief description',
  publisher: 'Publisher Name',
  category: 'programming', // or 'cloud', 'career', etc.
  status: 'published', // or 'writing', 'planning'
  imageUrl: 'https://example.com/book-cover.jpg',
  purchaseLinks: {
    amazon: 'https://amazon.com/...',
    packt: 'https://packtpub.com/...'
  }
  // ... other properties
}

πŸš€ Adding a New Project

// src/data/projects.ts
{
  id: 'project-id',
  title: 'Project Name',
  description: 'Project description',
  category: 'web-app', // or 'library', 'tool', etc.
  status: 'completed',
  technologies: ['React', 'TypeScript', 'Node.js'],
  githubUrl: 'https://github.com/...',
  liveUrl: 'https://demo.example.com'
  // ... other properties
}

Styling Customization

The site uses CSS custom properties for theming. Modify /src/styles/global.css:

:root {
  --accent: 0, 102, 204;          /* Primary brand color */
  --accent-light: 51, 153, 255;  /* Lighter variant */
  --accent-dark: 0, 82, 164;     /* Darker variant */
  
  /* Update other CSS variables as needed */
}

πŸš€ Deployment

AWS Amplify (Recommended)

  1. Connect your repository to AWS Amplify
  2. Set environment variables in Amplify console
  3. Deploy automatically on every push to main branch

The site is configured to use AWS Amplify adapter for server-side rendering when deployed.

Other Platforms

The site can also be deployed to:

  • Netlify - Static site hosting
  • Vercel - Edge functions support
  • GitHub Pages - Free hosting for public repos
  • Cloudflare Pages - Global edge deployment

πŸ§ͺ Testing & Quality Assurance

  • Lighthouse Audits - Performance, SEO, and accessibility testing
  • TypeScript Compilation - Type safety validation
  • Cross-browser Testing - Compatibility across modern browsers
  • Mobile Responsiveness - Testing on various device sizes

πŸ“„ License

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


Built with ❀️ and lots of 🍡 by Emanuele Bartolesi

About

The code for my website based on Astro.

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •