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.
- 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
- 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
- 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
- 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
- Astro - Modern static site generator with islands architecture
- TypeScript - Type-safe JavaScript for better developer experience
- MDX - Markdown with JSX components for rich content
- 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
- Dev.to API - Automatic blog post synchronization
- Sessionize API - Speaking engagement management
- RescueTime API - Productivity tracking and stats
- AWS Amplify - Serverless deployment with CI/CD
- Static Site Generation - Pre-rendered pages for optimal performance
- Edge Distribution - Global CDN for fast content delivery
π¦ 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
- Node.js (v18 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/kasuken/website.git cd website -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envand 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
-
Start development server
npm run dev
-
Open your browser and visit
http://localhost:4321
| 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 |
- Hero section with professional introduction
- Featured content and latest blog posts
- GitHub activity calendar and productivity stats
- Quick links to key sections
- Automatic synchronization with Dev.to articles
- Category filtering and search functionality
- RSS feed generation
- SEO-optimized article pages
- Showcase of published and upcoming books
- Purchase links for multiple platforms (Amazon, Packt, Gumroad)
- Book reviews and ratings display
- Category filtering by topic
- Interactive project gallery
- Technology filtering and categorization
- Live demos and GitHub repository links
- Project case studies and descriptions
- Professional training catalog
- Course filtering by skill level and category
- Enrollment information and pricing
- Student testimonials and reviews
- Sessionize integration for conference talks
- Upcoming and past speaking engagements
- Session abstracts and presentation materials
- Event location and date information
- Mentoring services and approach
- Booking information and availability
- Success stories and testimonials
- Contact and scheduling links
// 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
}// 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
}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 */
}- Connect your repository to AWS Amplify
- Set environment variables in Amplify console
- Deploy automatically on every push to main branch
The site is configured to use AWS Amplify adapter for server-side rendering when deployed.
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
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ and lots of π΅ by Emanuele Bartolesi