All checks were successful
Docker Deploy / build-and-push (push) Successful in 4m21s
395 lines
9.6 KiB
TypeScript
395 lines
9.6 KiB
TypeScript
import type { Config } from "./types";
|
|
|
|
import { Home, Newspaper, FileUser, CodeXml, Megaphone } from "lucide-vue-next";
|
|
|
|
import logo from "./assets/logo.webp";
|
|
import resumeToml from "./assets/resume.toml?raw";
|
|
|
|
// Astro Icon references
|
|
const EMAIL_ICON = "mdi:email" as const;
|
|
const RSS_ICON = "mdi:rss" as const;
|
|
const GITEA_ICON = "simple-icons:gitea" as const;
|
|
const BLUESKY_ICON = "simple-icons:bluesky" as const;
|
|
const REACT_ICON = "simple-icons:react" as const;
|
|
const VUEJS_ICON = "simple-icons:vuedotjs" as const;
|
|
const TYPESCRIPT_ICON = "simple-icons:typescript" as const;
|
|
const ASTRO_ICON = "simple-icons:astro" as const;
|
|
const GO_ICON = "simple-icons:go" as const;
|
|
const POSTGRESQL_ICON = "simple-icons:postgresql" as const;
|
|
const DOTNET_ICON = "simple-icons:dotnet" as const;
|
|
const DOCKER_ICON = "simple-icons:docker" as const;
|
|
const KOTLIN_ICON = "simple-icons:kotlin" as const;
|
|
const SWIFT_ICON = "simple-icons:swift" as const;
|
|
const NIX_ICON = "simple-icons:nixos" as const;
|
|
|
|
export const config: Config = {
|
|
personalInfo: {
|
|
name: "Atridad Lahiji",
|
|
profileImage: {
|
|
src: logo,
|
|
alt: "A drawing of Atridad Lahiji by Shelze!",
|
|
},
|
|
tagline: "Researcher, Full-Stack Developer, and IT Professional",
|
|
description: "Researcher, Full-Stack Developer, and IT Professional",
|
|
},
|
|
|
|
homepageSections: {
|
|
socialLinks: {
|
|
title: "Places I Exist:",
|
|
description: "Find me across the web",
|
|
},
|
|
techStack: {
|
|
title: "Technologies I Use:",
|
|
description: "Technologies and tools I work with",
|
|
},
|
|
},
|
|
|
|
resumeConfig: {
|
|
tomlFile: resumeToml,
|
|
layout: {
|
|
leftColumn: ["experience", "volunteer"],
|
|
rightColumn: ["skills", "education", "awards"],
|
|
},
|
|
sections: {
|
|
enabled: [
|
|
"summary",
|
|
"experience",
|
|
"education",
|
|
"skills",
|
|
"volunteer",
|
|
"awards",
|
|
],
|
|
summary: {
|
|
title: "Summary",
|
|
},
|
|
experience: {
|
|
title: "Professional Experience",
|
|
},
|
|
education: {
|
|
title: "Education",
|
|
},
|
|
skills: {
|
|
title: "Skills",
|
|
},
|
|
volunteer: {
|
|
title: "Volunteer Work",
|
|
},
|
|
awards: {
|
|
title: "Awards",
|
|
},
|
|
},
|
|
},
|
|
|
|
siteConfig: {
|
|
personal: {
|
|
name: "Atridad Lahiji",
|
|
profileImage: {
|
|
src: logo,
|
|
alt: "A drawing of Atridad Lahiji by Shelze!",
|
|
},
|
|
tagline: "Researcher, Full-Stack Developer, and IT Professional",
|
|
description: "Researcher, Full-Stack Developer, and IT Professional",
|
|
},
|
|
homepage: {
|
|
socialLinks: {
|
|
title: "Places I Exist:",
|
|
description: "Find me across the web",
|
|
},
|
|
techStack: {
|
|
title: "Technologies I Use:",
|
|
description: "Technologies and tools I work with",
|
|
},
|
|
},
|
|
resume: {
|
|
tomlFile: resumeToml,
|
|
layout: {
|
|
leftColumn: ["experience", "volunteer"],
|
|
rightColumn: ["skills", "education", "awards"],
|
|
},
|
|
sections: {
|
|
enabled: [
|
|
"summary",
|
|
"experience",
|
|
"education",
|
|
"skills",
|
|
"volunteer",
|
|
"awards",
|
|
],
|
|
summary: {
|
|
title: "Summary",
|
|
},
|
|
experience: {
|
|
title: "Professional Experience",
|
|
},
|
|
education: {
|
|
title: "Education",
|
|
},
|
|
skills: {
|
|
title: "Skills",
|
|
},
|
|
volunteer: {
|
|
title: "Volunteer Work",
|
|
},
|
|
awards: {
|
|
title: "Awards",
|
|
},
|
|
},
|
|
},
|
|
meta: {
|
|
title: "Atridad Lahiji",
|
|
description:
|
|
"Personal website of Atridad Lahiji - Researcher, Full-Stack Developer, and IT Professional",
|
|
url: "https://atri.dad",
|
|
author: "Atridad Lahiji",
|
|
},
|
|
giteaDomains: ["https://git.atri.dad"],
|
|
},
|
|
|
|
talks: [
|
|
{
|
|
id: "devedmonton-hateoas",
|
|
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",
|
|
},
|
|
],
|
|
|
|
projects: [
|
|
{
|
|
id: "ascently",
|
|
name: "Ascently",
|
|
description:
|
|
"Offline-first FOSS app designed to help climbers track their sessions",
|
|
gitLink: "https://git.atri.dad/atridad/Ascently",
|
|
webLink: "https://ascently.atri.dad",
|
|
iosLink: "https://apps.apple.com/ca/app/ascently/id6753959144",
|
|
androidLink:
|
|
"https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://git.atri.dad/atridad/Ascently/releases",
|
|
},
|
|
{
|
|
id: "himbocrypt",
|
|
name: "HimboCrypt",
|
|
description: "A robust end-to-end encryption engine and CLI.",
|
|
gitLink: "https://git.atri.dad/atridad/himbocrypt",
|
|
},
|
|
{
|
|
id: "muse",
|
|
name: "muse",
|
|
description: "Go-based music generation using TOML song definitions",
|
|
gitLink: "https://git.atri.dad/atridad/muse",
|
|
},
|
|
{
|
|
id: "magiccounter",
|
|
name: "MagicCounter",
|
|
description: "FOSS Magic the Gathering Health Tracker",
|
|
gitLink: "https://git.atri.dad/atridad/MagicCounter",
|
|
iosLink: "https://apps.apple.com/ca/app/magiccounter/id6756251972",
|
|
androidLink:
|
|
"https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://git.atri.dad/atridad/MagicCounter/releases",
|
|
},
|
|
{
|
|
id: "himbot",
|
|
name: "Himbot",
|
|
description:
|
|
"A discord bot written in Go. Loosly named after my username online (HimbothySwaggins).",
|
|
gitLink: "https://git.atri.dad/atridad/himbot",
|
|
},
|
|
{
|
|
id: "lavitz",
|
|
name: "Lavitz",
|
|
description:
|
|
"My NixOS desktop configuration, named after a character in Legend of Dragoon for the PS1: Lavitz.",
|
|
gitLink: "https://git.atri.dad/atridad/lavitz",
|
|
},
|
|
{
|
|
id: "atrodotdad",
|
|
name: "Personal Site",
|
|
description: "My personal website built with Astro.",
|
|
webLink: "https://atri.dad",
|
|
gitLink: "https://git.atri.dad/atridad/atridotdad",
|
|
},
|
|
],
|
|
|
|
sections: {
|
|
resume: {
|
|
name: "Resume",
|
|
path: "/resume",
|
|
description: "Professional experience, skills, and background",
|
|
},
|
|
posts: {
|
|
name: "Blog Posts",
|
|
path: "/posts",
|
|
description: "Technical articles and thoughts",
|
|
},
|
|
talks: {
|
|
name: "Talks",
|
|
path: "/talks",
|
|
description: "Conference talks and presentations",
|
|
},
|
|
projects: {
|
|
name: "Projects",
|
|
path: "/projects",
|
|
description: "Personal and professional projects",
|
|
},
|
|
},
|
|
|
|
socialLinks: [
|
|
{
|
|
id: "email",
|
|
name: "Email",
|
|
url: "mailto:me@atri.dad",
|
|
icon: EMAIL_ICON,
|
|
ariaLabel: "Email me",
|
|
},
|
|
{
|
|
id: "rss",
|
|
name: "RSS Feed",
|
|
url: "/feed",
|
|
icon: RSS_ICON,
|
|
ariaLabel: "RSS Feed",
|
|
},
|
|
{
|
|
id: "gitea",
|
|
name: "Forgejo (Git)",
|
|
url: "https://git.atri.dad/atridad",
|
|
icon: GITEA_ICON,
|
|
ariaLabel: "Forgejo (Git)",
|
|
},
|
|
{
|
|
id: "bluesky",
|
|
name: "Bluesky",
|
|
url: "https://bsky.app/profile/atri.dad",
|
|
icon: BLUESKY_ICON,
|
|
ariaLabel: "Bluesky Profile",
|
|
},
|
|
],
|
|
|
|
techLinks: [
|
|
{
|
|
id: "react",
|
|
name: "React",
|
|
url: "https://react.dev/",
|
|
icon: REACT_ICON,
|
|
ariaLabel: "React",
|
|
},
|
|
{
|
|
id: "vuejs",
|
|
name: "Vue.js",
|
|
url: "https://vuejs.org//",
|
|
icon: VUEJS_ICON,
|
|
ariaLabel: "Vue.js",
|
|
},
|
|
{
|
|
id: "typescript",
|
|
name: "TypeScript",
|
|
url: "https://www.typescriptlang.org/",
|
|
icon: TYPESCRIPT_ICON,
|
|
ariaLabel: "TypeScript",
|
|
},
|
|
{
|
|
id: "astro",
|
|
name: "Astro",
|
|
url: "https://astro.build/",
|
|
icon: ASTRO_ICON,
|
|
ariaLabel: "Astro",
|
|
},
|
|
{
|
|
id: "go",
|
|
name: "Go",
|
|
url: "https://go.dev/",
|
|
icon: GO_ICON,
|
|
ariaLabel: "Go",
|
|
},
|
|
{
|
|
id: "postgresql",
|
|
name: "PostgreSQL",
|
|
url: "https://www.postgresql.org/",
|
|
icon: POSTGRESQL_ICON,
|
|
ariaLabel: "PostgreSQL",
|
|
},
|
|
{
|
|
id: "dotnet",
|
|
name: "DotNet",
|
|
url: "https://dot.net/",
|
|
icon: DOTNET_ICON,
|
|
ariaLabel: "DotNet",
|
|
},
|
|
{
|
|
id: "docker",
|
|
name: "Docker",
|
|
url: "https://www.docker.com/",
|
|
icon: DOCKER_ICON,
|
|
ariaLabel: "Docker",
|
|
},
|
|
{
|
|
id: "kotlin",
|
|
name: "Kotlin",
|
|
url: "https://kotlinlang.org/",
|
|
icon: KOTLIN_ICON,
|
|
ariaLabel: "Kotlin",
|
|
},
|
|
{
|
|
id: "swift",
|
|
name: "Swift",
|
|
url: "https://www.swift.org/",
|
|
icon: SWIFT_ICON,
|
|
ariaLabel: "Swift",
|
|
},
|
|
{
|
|
id: "nix",
|
|
name: "Nix",
|
|
url: "https://nix.org",
|
|
icon: NIX_ICON,
|
|
ariaLabel: "Nix",
|
|
},
|
|
],
|
|
|
|
navigationItems: [
|
|
{
|
|
id: "home",
|
|
name: "Home",
|
|
path: "/",
|
|
tooltip: "Home",
|
|
icon: Home,
|
|
enabled: true,
|
|
},
|
|
{
|
|
id: "posts",
|
|
name: "Posts",
|
|
path: "/posts",
|
|
tooltip: "Posts",
|
|
icon: Newspaper,
|
|
enabled: true,
|
|
isActive: (path: string) =>
|
|
path.startsWith("/posts") || path.startsWith("/post/"),
|
|
},
|
|
{
|
|
id: "resume",
|
|
name: "Resume",
|
|
path: "/resume",
|
|
tooltip: "Resume",
|
|
icon: FileUser,
|
|
enabled: !!(resumeToml && resumeToml.trim()),
|
|
},
|
|
{
|
|
id: "projects",
|
|
name: "Projects",
|
|
path: "/projects",
|
|
tooltip: "Projects",
|
|
icon: CodeXml,
|
|
enabled: true,
|
|
isActive: (path: string) => path.startsWith("/projects"),
|
|
},
|
|
{
|
|
id: "talks",
|
|
name: "Talks",
|
|
path: "/talks",
|
|
tooltip: "Talks",
|
|
icon: Megaphone,
|
|
enabled: true,
|
|
isActive: (path: string) => path.startsWith("/talks"),
|
|
},
|
|
],
|
|
} as const;
|