Nicholai 0cc1612fbb Add open-source VFX pipeline guide and enhance site structure
- Introduced a comprehensive guide on building a production-ready VFX pipeline using open-source tools, detailing cost breakdowns and workflows.
- Added new sections for experience, featured projects, skills, and contact information, enhancing the overall site structure and user navigation.
- Updated components to utilize dynamic content from new markdown files, improving maintainability and scalability of the site.
- Enhanced the contact page with structured data for better user interaction and accessibility.
2025-12-08 01:29:03 -07:00

72 lines
2.5 KiB
Plaintext

---
import BaseLayout from '../layouts/BaseLayout.astro';
import Hero from '../components/sections/Hero.astro';
import Experience from '../components/sections/Experience.astro';
import FeaturedProject from '../components/sections/FeaturedProject.astro';
import Skills from '../components/sections/Skills.astro';
import { getEntry } from 'astro:content';
// Fetch all section content
const heroEntry = await getEntry('sections', 'hero');
const experienceEntry = await getEntry('sections', 'experience');
const skillsEntry = await getEntry('sections', 'skills');
const featuredProjectEntry = await getEntry('sections', 'featured-project');
// Extract content from entries
const heroContent = {
headlineLine1: heroEntry.data.headlineLine1 || '',
headlineLine2: heroEntry.data.headlineLine2 || '',
portfolioYear: heroEntry.data.portfolioYear || '',
location: heroEntry.data.location || '',
locationLabel: heroEntry.data.locationLabel || '',
bio: heroEntry.data.bio || '',
};
const experienceContent = {
sectionTitle: experienceEntry.data.sectionTitle || '',
sectionSubtitle: experienceEntry.data.sectionSubtitle || '',
sectionLabel: experienceEntry.data.sectionLabel || '',
description: experienceEntry.data.description || '',
entries: experienceEntry.data.entries || [],
};
const skillsContent = {
sectionTitle: skillsEntry.data.sectionTitle || '',
sectionSubtitle: skillsEntry.data.sectionSubtitle || '',
description: skillsEntry.data.description || '',
skills: skillsEntry.data.skills || [],
};
const featuredProjectContent = {
role: featuredProjectEntry.data.role || '',
client: featuredProjectEntry.data.client || '',
year: featuredProjectEntry.data.year || '',
region: featuredProjectEntry.data.region || '',
projectTitle: featuredProjectEntry.data.projectTitle || '',
projectSubtitle: featuredProjectEntry.data.projectSubtitle || '',
projectDescription: featuredProjectEntry.data.projectDescription || '',
stats: featuredProjectEntry.data.stats || [],
videoUrl: featuredProjectEntry.data.videoUrl || '',
linkUrl: featuredProjectEntry.data.linkUrl || '',
};
---
<BaseLayout usePadding={false}>
<Hero {...heroContent} />
<!-- Gradient Divider -->
<div class="w-full my-16 lg:my-24">
<div class="h-[1px] divider-gradient"></div>
</div>
<Experience {...experienceContent} />
<!-- Container Divider with accent hint -->
<div class="container mx-auto px-6 lg:px-12 my-8">
<div class="h-[1px] divider-gradient"></div>
</div>
<FeaturedProject {...featuredProjectContent} />
<Skills {...skillsContent} />
</BaseLayout>