Skip to main content
This page documents the site configuration defined in src/config.ts, which contains site metadata, personal information, and branding details used throughout the portfolio.

Overview

The site configuration exports a siteConfig object that implements the SiteConfig interface, providing type-safe access to site metadata across all pages and components.
// Configuration file location
~/workspace/source/src/config.ts

SiteConfig Interface

The SiteConfig interface defines the structure for site configuration:
export interface SiteConfig {
  name: string;
  title: string;
  description: string;
  tagline: string;
  authorDescription: string;
  avatar: ImageMetadata;
  profileImage: ImageMetadata;
  url: string;
  location: string;
  email: string;
  phone: string;
}

Configuration Fields

name
string
required
Personal or brand name displayed across the site.Value: "Lewis Kori"Usage: Used in headers, footers, and metadata
title
string
required
Full site title used for SEO and browser tabs. Includes name and value proposition.Value: "Lewis Kori – Building Products, Systems, and Leverage"Usage:
  • Page title in <title> tags
  • Open Graph titles
  • SEO meta tags
url
string
required
The canonical URL of the site. Must be a complete URL including protocol.Value: "https://lewiskori.com"Usage:
  • Canonical URLs
  • Open Graph URL metadata
  • Sitemap generation
  • Social sharing
description
string
required
Comprehensive site description for SEO and social sharing. Explains the focus and purpose of the site.Value: "Entrepreneur and product builder working at the intersection of technology, capital, and trust. Building platforms, advising institutions, and exploring how systems scale."Usage:
  • Meta description tags
  • Open Graph descriptions
  • Social media previews
  • RSS feed descriptions
tagline
string
required
Short, memorable tagline or mission statement.Value: "Building Products, Systems and Companies That Endure"Usage:
  • Hero sections
  • About page headers
  • Email signatures
authorDescription
string
required
Detailed author bio describing professional focus and expertise.Value: "I am an entrepreneur and technologist focused on building scalable digital products, trusted platforms and businesses designed for long-term impact. My work spans product development, venture building and advisory across technology-driven markets."Usage:
  • About page
  • Author bio sections
  • Blog post author cards
avatar
ImageMetadata
required
Avatar image used for profile pictures and small displays.Value: aboutImage (imported from @/assets/about-image.webp)Type: ImageMetadata (Astro’s optimized image type)Usage:
  • Profile pictures
  • Blog author avatars
  • Social media thumbnails
profileImage
ImageMetadata
required
Larger profile image for hero sections and featured displays.Value: profileImage (imported from @/assets/lewis-profile-no-bg.webp)Type: ImageMetadata (Astro’s optimized image type)Format: WebP with transparent backgroundUsage:
  • Homepage hero section
  • About page header
  • Large format displays
location
string
required
Geographic location of the site owner.Value: " Kenya"Note: Contains leading spaces (may be intentional for formatting)Usage:
  • Contact page
  • Footer information
  • About page location details
email
string
required
Contact email address for inquiries.Value: "[email protected]"Usage:
  • Contact page
  • Footer contact links
  • mailto: links
  • Email obfuscation
phone
string
required
Contact phone number with country code.Value: "+254 712 345678"Format: International format with country code (+254 for Kenya)Usage:
  • Contact page
  • Footer contact information
  • tel: links

SocialData Interface

The file also exports a SocialData interface for social media links:
export interface SocialData {
  name: string;
  url: string;
  icon: string;
  ariaLabel: string;
}
SocialData.name
string
Display name of the social platform (e.g., “Twitter”, “GitHub”)
SocialData.url
string
Full URL to the social media profile
SocialData.icon
string
Icon identifier or path for displaying platform icon
SocialData.ariaLabel
string
Accessibility label for screen readers

Complete Configuration Object

import aboutImage from '@/assets/about-image.webp';
import profileImage from '@/assets/lewis-profile-no-bg.webp';

export const siteConfig: SiteConfig = {
  name: 'Lewis Kori',
  title: 'Lewis Kori – Building Products, Systems, and Leverage',
  url: 'https://lewiskori.com',
  description:
    'Entrepreneur and product builder working at the intersection of technology, capital, and trust. Building platforms, advising institutions, and exploring how systems scale.',
  tagline: 'Building Products, Systems and Companies That Endure',
  authorDescription:
    'I am an entrepreneur and technologist focused on building scalable digital products, trusted platforms and businesses designed for long-term impact. My work spans product development, venture building and advisory across technology-driven markets.',
  avatar: aboutImage,
  location: '  Kenya',
  email: '[email protected]',
  phone: '+254 712 345678',
  profileImage: profileImage,
};

Usage Example

Import and use the site configuration in your Astro components:
---
import { siteConfig } from '@/config';
---

<html>
  <head>
    <title>{siteConfig.title}</title>
    <meta name="description" content={siteConfig.description} />
    <link rel="canonical" href={siteConfig.url} />
  </head>
  <body>
    <h1>{siteConfig.name}</h1>
    <p>{siteConfig.tagline}</p>
  </body>
</html>

Image Assets

The configuration references two optimized image assets: Avatar Image
  • Path: src/assets/about-image.webp
  • Format: WebP (optimized for web)
  • Usage: Profile pictures, thumbnails
Profile Image
  • Path: src/assets/lewis-profile-no-bg.webp
  • Format: WebP with transparent background
  • Usage: Hero sections, large displays
Both images are imported as ImageMetadata and automatically optimized by Astro’s image service.

Build docs developers (and LLMs) love