Little rework
Build Check / build (push) Failing after 18s
Build Check / deploy-coolify (push) Has been skipped
Build Check / push-image (push) Has been skipped

This commit is contained in:
Space-Banane
2026-07-16 23:03:42 +02:00
parent 2045e95929
commit dfbe14d284
62 changed files with 2760 additions and 2380 deletions
+19 -121
View File
@@ -1,134 +1,32 @@
"use client";
import { useProfile } from "../context/ProfileContext";
import { Hero } from "../sections/Hero";
import { WorkExperience } from "../sections/WorkExperience";
import { Uptime } from "../sections/Uptime";
import { Activity } from "../sections/Activity";
import { Affiliates } from "../sections/Affiliates";
import { AgentSkills } from "../sections/AgentSkills";
import { ProjectCard } from "../components/ProjectCard";
import { MiniProjectCard } from "../components/MiniProjectCard";
import { ExperienceModal } from "../components/ExperienceModal";
import { MiniProjectModal } from "../components/MiniProjectModal";
import { Navbar } from "../components/Navbar";
import { Hero } from "../sections/Hero";
import { Stats } from "../sections/Stats";
import { WorkExperience } from "../sections/WorkExperience";
import { FeaturedProjects } from "../sections/FeaturedProjects";
import { Luna } from "../sections/Luna";
import { Affiliates } from "../sections/Affiliates";
import { Activity } from "../sections/Activity";
import { Footer } from "../sections/Footer";
import { TechStack } from "../sections/TechStack";
import { TypingRoomIntro } from "../components/TypingRoomIntro";
import { useCallback, useEffect, useState } from "react";
import { SkillsExperience } from "@/sections/SkillsExperience";
const ENABLE_PAGE_ANIMATION = false;
export default function Home() {
const {
glowColor, borderStatus, displayMessage, statusMessage,
rotatingMessages,
projects, miniProjects, setSelectedMiniProject,
experiences, setSelectedExperience, realWork,
selectedMiniProject, selectedExperience
} = useProfile();
const [showTypingIntro, setShowTypingIntro] = useState(ENABLE_PAGE_ANIMATION);
const oldUsernames = [
"getspaced (ingame)",
"Space (alternative)",
"Space-Banane (2022-2024)",
];
useEffect(() => {
// keep intro visible on every full page load; no-op here
}, []);
const handleIntroFinish = useCallback(() => {
setShowTypingIntro(false);
}, []);
const { experiences } = useProfile();
return (
<>
{ENABLE_PAGE_ANIMATION && (
<TypingRoomIntro active={showTypingIntro} onFinish={handleIntroFinish} />
)}
{!showTypingIntro && (
<>
<Navbar />
<div className="space-y-20 pb-16 pt-16 sm:space-y-24 sm:pb-20 sm:pt-20">
<Hero
glowColor={glowColor}
borderStatus={borderStatus}
displayMessage={displayMessage}
rotatingMessages={rotatingMessages}
statusMessage={statusMessage}
oldUsernames={oldUsernames}
/>
<WorkExperience realWork={realWork} />
<Uptime />
<Activity />
<AgentSkills />
<section className="w-full max-w-6xl mx-auto space-y-8 px-4 sm:space-y-12">
<div className="text-center space-y-4">
<h2 className="text-3xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-purple-500 sm:text-4xl">
Featured Projects
</h2>
<p className="mx-auto max-w-2xl text-sm text-gray-400 sm:text-base">
A selection of my personal favorites. Many more on my GitHub.
</p>
</div>
<div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3 sm:gap-8">
{projects.map((project, index) => (
<ProjectCard key={index} project={project} />
))}
</div>
</section>
<section className="w-full max-w-6xl mx-auto space-y-8 px-4 sm:space-y-12">
<div className="text-center space-y-4">
<h2 className="text-2xl font-bold sm:text-3xl">More Projects</h2>
<p className="text-sm text-gray-400 sm:text-base">Smaller projects or tools I've built.</p>
</div>
<div className="grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3 sm:gap-6">
{miniProjects.map((project, index) => (
<MiniProjectCard
key={index}
project={project}
onClick={() => setSelectedMiniProject(project)}
/>
))}
</div>
</section>
<Affiliates />
<TechStack />
<SkillsExperience
experiences={experiences}
onSelectExperience={setSelectedExperience}
/>
</div>
<Footer />
{selectedMiniProject && (
<MiniProjectModal
project={selectedMiniProject}
onClose={() => setSelectedMiniProject(null)}
/>
)}
{selectedExperience && (
<ExperienceModal
experience={selectedExperience}
onClose={() => setSelectedExperience(null)}
/>
)}
</>
)}
<Navbar />
<div className="space-y-20 pb-16 pt-28 sm:space-y-24 sm:pb-20 sm:pt-32">
<Hero />
<Stats />
<WorkExperience experiences={experiences} />
<FeaturedProjects />
<Luna />
<Affiliates />
<Activity />
</div>
<Footer />
</>
);
}