An experimental, dystopian personal portfolio showcasing the intersection of product design, software engineering, and horror writing.
Treat framework stability as non-negotiable. Prefer boring infrastructure and experimental experience.
This portfolio eschews traditional portfolio conventions in favor of:
- Controlled, eerie atmosphere
- Asymmetric, broken layouts
- Slow, deliberate motion
- Typography-first design
- Quiet unease over aggressive aesthetics
- Next.js 16.1.6 with App Router (stable only)
- React 19.0.0
- TypeScript 5
- Tailwind CSS 3.4.1
- Framer Motion 12.33.0 (stable release)
- Three.js 0.182.0 via React Three Fiber 9.5.0
- @react-three/drei 10.7.7
- Serif: Crimson Pro (old print / gothic influence)
- Grotesk: Inter (neutral system voice)
- Distorted: Bebas Neue (signal markers)
- Ink: #0a0a0a (primary background)
- Charcoal: #1a1a1a (secondary surfaces)
- Bone: #f4f4f0 (primary text)
- Accent: #8b0000 (deep red, used sparingly)
- Slow easing functions (0.4s–2s minimum)
- Scroll-driven parallax layering
- Asymmetric timing for intentional discomfort
- Breathing animations over snappy interactions
- Threshold - Entry state with calm declaration ("Nothing here is accidental")
- Hero - Oversized name with chromatic aberration, glitch effects, and dynamic color orbs
- Projects - Dossier-style case studies with clickable titles and offset layouts
- Art Gallery - Eerie, layered image showcase with fluid, alienated positioning
- Design Showcase - Interface and system design display with color-coded categories
- Techniques - Methods and principles in broken grids
- About - Controlled confession, not résumé
- Contact Form - Mars vs Mercury clash aesthetic with dramatic color gradients
- Quick Actions - Minimal contact channels
- Symbiote Cursor - Subtle web effect that follows the mouse, connecting to invisible nodes
- Writing Fragments - Dystopian text snippets between sections
- Atmospheric Background - Three.js particle field with fog layers
- Navigation - Non-linear discovery pattern, side-mounted dot navigation (desktop)
- Parallax System - Multi-layer scroll-driven depth throughout
- Non-linear discovery pattern
- Side-mounted dot navigation (desktop)
- Appears after scroll threshold
- No traditional header/footer
- Includes new sections: Visual, Systems, Signal
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm start- A designed artifact
- An experiment in controlled unease
- A demonstration of technical and aesthetic range
- A standard portfolio with cards and grids
- A playful or friendly experience
- A showcase of "best practices" UX patterns
All text follows these principles:
- Short declarative truths
- Calm language that implies threat
- Minimal explanation
- No marketing voice
- No emojis
Example fragments:
- "The system remembered first."
- "Sleep was rehearsal."
- "Nothing here is accidental."
To adapt this portfolio for your own use:
-
Update content in component files:
components/Hero.tsx- Name and rolescomponents/ProjectsSection.tsx- Project data and URLs (replace#with actual project links)components/ArtGallery.tsx- Artwork data and imagescomponents/DesignShowcase.tsx- Design projectscomponents/AboutSection.tsx- Bio contentcomponents/QuickActions.tsx- Contact linkscomponents/ContactForm.tsx- Form submission handler
-
Add images:
- Create
/public/art/folder and addart-1.jpgthroughart-6.jpgfor the gallery - Uncomment the
<Image>component inArtGallery.tsx(lines are marked in the code) - Add design preview images as needed
- Create
-
Adjust colors in
tailwind.config.ts:- Change accent color from deep red to your preference
- Maintain near-monochrome base for atmosphere
- Hero now includes purple and cyan accents for visual interest
-
Fine-tune motion in component files:
- Adjust timing in transition objects
- Modify parallax ranges in useTransform calls
- Customize symbiote cursor connection distance and opacity
-
Replace fonts in
app/layout.tsx:- Choose alternative Google Fonts
- Update CSS variables in
app/globals.css
Optimized for modern browsers with:
- WebGL support (for Three.js)
- CSS Grid and Flexbox
- Native font loading
- Smooth scrolling
MIT - Use for your own portfolio, but make it your own.
Built with stable, boring infrastructure. Designed for atmospheric tension. Written without compromise. "# Storm-Portfolio"