Understanding the component architecture of the Drakk3 Portfolio
The Drakk3 Portfolio uses a hybrid component architecture that combines Astro components (.astro) for static content with React components (.tsx) for interactive features, all styled with shadcn/ui primitives and Tailwind CSS v4.
All components are composed together in src/pages/index.astro using a single-page architecture:
src/pages/index.astro
---import Layout from '../layouts/Layout.astro';import Navbar from '../components/Navbar.astro';import Hero from '../components/Hero.astro';import About from '../components/About.astro';import Skills from '../components/Skills.astro';import Projects from '../components/Projects.astro';import Contact from '../components/Contact';import Footer from '../components/Footer.astro';---<Layout> <Navbar /> <main> <Hero /> <About /> <Skills /> <Projects /> <Contact client:load /> </main> <Footer /></Layout>
Notice that Contact is imported without the .tsx extension and uses the client:load directive to hydrate it on the client. This is the pattern for React components in Astro.
The project uses the @ path alias to reference the src/ directory:
// Instead of relative paths:import { skills } from '../../data/skills';// Use the @ alias:import { skills } from '@/data/skills';import { Button } from '@/components/ui/button';import { cn } from '@/lib/utils';