merge in new changes
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled

This commit is contained in:
2025-08-11 16:24:43 -05:00
parent a484feb7cd
commit 1dc4ccfbc6
125 changed files with 9304 additions and 20383 deletions

View File

@@ -1,60 +1,27 @@
import { createDirectus, rest } from '@directus/sdk';
type Global = {
title: string;
description: string;
name: string;
initals: string;
tagline: string;
email: string;
portrait: string;
portrait_alt: string;
logo: string;
about: string;
};
import type {
Global,
Post,
Experience,
Education,
Certificate,
Project,
Skill,
} from '@lib/directusTypes';
type About = {
background: string;
experience: string;
education: string;
certifications: string;
};
type Links = {
github: string;
linkedin: string;
gitea: string;
};
type Skill = {
title: string;
description: string;
icon: string;
level: string;
};
export type Post = {
slug: string;
title: string;
description: string;
content: string;
image: string;
image_alt: string;
published_date: Date;
updated_date: Date;
tags: string[];
};
import { getDirectusURL } from '@lib/directusFunctions';
type Schema = {
global: Global;
about: About;
links: Links;
skills: Skill[];
site_global: Global;
posts: Post[];
site_experience: Experience;
site_education: Education;
site_certificate: Certificate;
site_projects: Project;
site_skills: Skill;
};
const directus = createDirectus<Schema>(
process.env.DIRECTUS_URL ?? 'https://directus.alexlebens.dev'
).with(rest());
const directus = createDirectus<Schema>(getDirectusURL()).with(rest());
export default directus;

View File

@@ -0,0 +1,12 @@
const getDirectusURL = () => {
if (process.env.DIRECTUS_URL) {
return `https://${process.env.DIRECTUS_URL}`;
}
return 'https://directus.alexlebens.dev';
};
async function getDirectusImageURL(image: string) {
return `${getDirectusURL()}/assets/${image}`;
}
export { getDirectusURL, getDirectusImageURL };

87
src/lib/directusTypes.ts Normal file
View File

@@ -0,0 +1,87 @@
export type Global = {
name: string;
about: string;
about_description: string;
initials: string;
email: string;
site_url: string;
logo: string;
portrait: string;
portrait_alt: string;
home_image: string;
home_image_alt: string;
categories_image: string;
categories_image_alt: string;
blog_image: string;
blog_image_alt: string;
footer_image: string;
footer_image_alt: string;
};
export type Post = {
slug: string;
title: string;
description: string;
tags: string[];
category: string;
selected: boolean;
content: string;
image: string;
image_alt: string;
image_second: string;
image_second_alt: string;
published_date: Date;
updated_date: Date;
};
export type Experience = {
id: string;
name: string;
location: string;
location_type: string;
url: string;
startDate: string;
endDate: string;
position: string;
summary: string;
responsibilities: string[];
highlights: string[];
achievements: string[];
skills: string[];
};
export type Education = {
id: string;
institution: string;
url: string;
area: string;
studyType: string;
graduationDate: string;
};
export type Certificate = {
id: string;
name: string;
issuer: string;
issuerDate: string;
url: string;
};
export type Project = {
id: string;
name: string;
isActive: boolean;
description: string;
highlights: string[];
url: string;
source: string;
};
export type Skill = {
id: string;
title: string;
description: string;
icon: string;
level: string;
date_created: string;
};