Major re-work!
Some checks failed
Docker Deploy / build-and-push (push) Has been cancelled

This commit is contained in:
2025-06-12 11:09:24 -06:00
parent 324449dd59
commit ab2eb7eeac
13 changed files with 545 additions and 348 deletions

View File

@ -1,45 +1,114 @@
export interface Talk {
id: string;
name: string;
description: string;
link: string;
date?: string;
venue?: string;
}
import type {
Talk,
Project,
SocialLink,
TechLink,
NavigationItem,
PersonalInfo,
HomepageSections,
SiteConfig,
ResumeConfig
} from '../types';
export interface Project {
id: string;
name: string;
description: string;
link: string;
technologies?: string[];
status?: string;
}
// Import Lucide Icons
import {
Home,
NotebookPen,
BriefcaseBusiness,
CodeXml,
Terminal as TerminalIcon,
Megaphone,
} from "lucide-preact";
export interface SocialLink {
id: string;
name: string;
url: string;
icon: string;
ariaLabel: string;
}
import SpotifyIcon from '../components/SpotifyIcon';
export interface TechLink {
id: string;
name: string;
url: string;
icon: string;
ariaLabel: string;
}
// Astro Icon references
const EMAIL_ICON = "mdi:email";
const RSS_ICON = "mdi:rss";
const GITEA_ICON = "simple-icons:gitea";
const BLUESKY_ICON = "simple-icons:bluesky";
const REACT_ICON = "simple-icons:react";
const TYPESCRIPT_ICON = "simple-icons:typescript";
const ASTRO_ICON = "simple-icons:astro";
const GO_ICON = "simple-icons:go";
const POSTGRESQL_ICON = "simple-icons:postgresql";
const REDIS_ICON = "simple-icons:redis";
const DOCKER_ICON = "simple-icons:docker";
export interface NavigationItem {
id: string;
name: string;
path: string;
tooltip: string;
icon: string;
isActive?: (path: string) => boolean;
}
// Personal Information Configuration
export const personalInfo: PersonalInfo = {
name: "Atridad Lahiji",
profileImage: {
src: "/logo_real.webp",
alt: "A drawing of Atridad Lahiji by Shelze!",
width: 150,
height: 150
},
tagline: "Researcher, Full-Stack Developer, and IT Professional.",
description: "Researcher, Full-Stack Developer, and IT Professional."
};
// Homepage Section Configuration
export const homepageSections: HomepageSections = {
socialLinks: {
title: "Places I Exist:",
description: "Find me across the web"
},
techStack: {
title: "Stuff I Use:",
description: "Technologies and tools I work with"
}
};
// Resume Configuration
export const resumeConfig: ResumeConfig = {
jsonFile: "/files/resume.json",
pdfFile: {
path: "/files/Atridad_Lahiji_Resume.pdf",
filename: "Atridad_Lahiji_Resume.pdf",
displayText: "Download Resume (PDF)"
},
sections: {
enabled: ["summary", "experience", "education", "skills", "volunteer", "profiles"],
summary: {
title: "Summary",
enabled: true
},
experience: {
title: "Professional Experience",
enabled: true
},
education: {
title: "Education",
enabled: true
},
skills: {
title: "Technical Skills",
enabled: true
},
volunteer: {
title: "Volunteer Work",
enabled: true
},
profiles: {
title: "Professional Profiles",
enabled: true
}
}
};
// Site Metadata Configuration
export const siteConfig: SiteConfig = {
personal: personalInfo,
homepage: homepageSections,
resume: resumeConfig,
meta: {
title: "Atridad Lahiji",
description: "Personal website of Atridad Lahiji - Researcher, Full-Stack Developer, and IT Professional",
url: "https://atri.dad",
author: "Atridad Lahiji"
}
};
export const talks: Talk[] = [
{
@ -47,7 +116,6 @@ export const talks: Talk[] = [
name: "Hypermedia as the engine of application state - An Introduction",
description: "A basic introduction to the concepts behind HATEOAS or Hypermedia as the engine of application state.",
link: "/files/DevEdmonton_Talk_HATEOAS.pdf",
venue: "Dev Edmonton Society",
},
];
@ -112,35 +180,35 @@ export const socialLinks: SocialLink[] = [
id: "email",
name: "Email",
url: "mailto:me@atri.dad",
icon: "mdi:email",
icon: EMAIL_ICON,
ariaLabel: "Email me"
},
{
id: "rss",
name: "RSS Feed",
url: "/feed",
icon: "mdi:rss",
icon: RSS_ICON,
ariaLabel: "RSS Feed"
},
{
id: "gitea",
name: "Forgejo (Git)",
url: "https://git.atri.dad/atridad",
icon: "simple-icons:gitea",
icon: GITEA_ICON,
ariaLabel: "Forgejo (Git)"
},
{
id: "bluesky",
name: "Bluesky",
url: "https://bsky.app/profile/atri.dad",
icon: "simple-icons:bluesky",
icon: BLUESKY_ICON,
ariaLabel: "Bluesky Profile"
},
{
id: "spotify",
name: "Spotify",
url: "https://open.spotify.com/user/31pjwuuqwnn5zr7fnhfjjmi7c4bi?si=1be2bfdc844c4d85",
icon: "spotify", // Special component
icon: SpotifyIcon,
ariaLabel: "Spotify Profile"
}
];
@ -150,49 +218,49 @@ export const techLinks: TechLink[] = [
id: "react",
name: "React",
url: "https://react.dev/",
icon: "simple-icons:react",
icon: REACT_ICON,
ariaLabel: "React"
},
{
id: "typescript",
name: "TypeScript",
url: "https://www.typescriptlang.org/",
icon: "simple-icons:typescript",
icon: TYPESCRIPT_ICON,
ariaLabel: "TypeScript"
},
{
id: "astro",
name: "Astro",
url: "https://astro.build/",
icon: "simple-icons:astro",
icon: ASTRO_ICON,
ariaLabel: "Astro"
},
{
id: "go",
name: "Go",
url: "https://go.dev/",
icon: "simple-icons:go",
icon: GO_ICON,
ariaLabel: "Go"
},
{
id: "postgresql",
name: "PostgreSQL",
url: "https://www.postgresql.org/",
icon: "simple-icons:postgresql",
icon: POSTGRESQL_ICON,
ariaLabel: "PostgreSQL"
},
{
id: "redis",
name: "Redis",
url: "https://redis.io/",
icon: "simple-icons:redis",
icon: REDIS_ICON,
ariaLabel: "Redis"
},
{
id: "docker",
name: "Docker",
url: "https://www.docker.com/",
icon: "simple-icons:docker",
icon: DOCKER_ICON,
ariaLabel: "Docker"
}
];
@ -203,14 +271,16 @@ export const navigationItems: NavigationItem[] = [
name: "Home",
path: "/",
tooltip: "Home",
icon: "Home"
icon: Home,
enabled: true
},
{
id: "posts",
name: "Posts",
path: "/posts",
tooltip: "Posts",
icon: "NotebookPen",
icon: NotebookPen,
enabled: true,
isActive: (path: string) => path.startsWith("/posts") || path.startsWith("/post/")
},
{
@ -218,14 +288,16 @@ export const navigationItems: NavigationItem[] = [
name: "Resume",
path: "/resume",
tooltip: "Resume",
icon: "BriefcaseBusiness"
icon: BriefcaseBusiness,
enabled: true
},
{
id: "projects",
name: "Projects",
path: "/projects",
tooltip: "Projects",
icon: "CodeXml",
icon: CodeXml,
enabled: true,
isActive: (path: string) => path.startsWith("/projects")
},
{
@ -233,7 +305,8 @@ export const navigationItems: NavigationItem[] = [
name: "Talks",
path: "/talks",
tooltip: "Talks",
icon: "Megaphone",
icon: Megaphone,
enabled: true,
isActive: (path: string) => path.startsWith("/talks")
},
{
@ -241,6 +314,7 @@ export const navigationItems: NavigationItem[] = [
name: "Terminal",
path: "/terminal",
tooltip: "Terminal",
icon: "TerminalIcon"
icon: TerminalIcon,
enabled: true
}
];