An agency-grade, highly interactive Cyberpunk 3D Creator Portfolio built for Zney (@psy-zney). The project combines a cinematic Three.js workspace, tactile desktop interactions, bilingual content, custom audio, and a polished arcade-inspired overlay experience.
The portfolio now runs as a hybrid experience: a real-time WebGL workspace powered by main.glb, supported by carefully scoped DOM overlays for high-fidelity UI moments.
- 3D Workspace Foundation: The main environment is loaded from
public/main.glbvia React Three Fiber and Drei. - Animated In-Model Monitor: The computer screen inside the GLB uses
public/screenDesktop.gifas an animated WebGL texture, drawn through a canvas/decoded-frame pipeline for reliable playback. - Cinematic Space Atmosphere: A deep-space panorama and sparse procedural star particles create a dark, minimal cosmic backdrop.
- Game-Style Interactions: Raycasting, hover targets, and
OutlinePassprovide precise neon outlines for interactive objects. - Non-Destructive Screen Entry: Clicking the monitor triggers a designed screen-entry transition before showing the 2D desktop overlay, instead of relying on a raw camera zoom.
The workspace scene is built around a GLB workstation model and enhanced with runtime interaction logic:
- Monitor Entry Point: Clicking the computer screen opens the interactive desktop layer.
- Object Hover Feedback: Interactive objects are detected with a raycaster and highlighted through post-processing outlines.
- Animated Monitor Texture:
screenDesktop.gifis rendered onto the monitor surface while preserving the correct orientation and 16:9 presentation. - Ambient Loading Audio:
Intro.mp3is preloaded and played from a valid user gesture when entering the workspace.
After entering the screen, the experience switches to a crisp HTML/CSS overlay for pixel-perfect UI:
- Arcade Desktop Interface: A compact pixel-game interface replaces the old text-only typing screen.
- Keyboard & Mouse Simulation: Physical keyboard events drive a visual mechanical keyboard and mouse module.
- Cat Paw Typing Animation: Cute cat paws reach toward the actual pressed key positions instead of using generic up/down animation.
- Shortcut Handling: Common combinations such as
Ctrl/Cmd + A,Ctrl/Cmd + V, and heldBackspaceare handled explicitly.
The keyboard lighting system is designed around movement, not simple brightness pulsing:
- Wave Mode: A continuous RGB sweep runs across the keyboard.
- Press Mode: Pressed keys light up instantly.
- Ripple Mode: A key press propagates light to nearby keys for a physical LED spread effect.
- Off Mode: Disables decorative lighting for a quieter presentation.
Keyboard audio is powered by a local Mechvibes-style sound pack:
- Sound Pack: CherryMX Black - PBT keycaps.
- Assets:
public/sounds/cherrymx-black-pbt/config.jsonandsound.ogg. - Playback: The Web Audio API reads scan-code timing definitions from the config and plays the correct slice from the packed OGG file.
- Fallback: A synthetic switch sound is available when the sound pack has not finished decoding.
The loader is tuned to avoid a frozen progress-bar feel:
- Decoupled Wave Animation: The loading wave remains visually active even when asset progress is temporarily waiting.
- Smoothed Percentage Counter: The visible percentage eases toward real progress instead of jumping or stalling aggressively.
- Intro Audio:
Intro.mp3is preloaded and played during workspace loading, with higher output volume for audibility.
- Default English UI: The experience starts in English, with Vietnamese available through the language toggle.
- Responsive Orientation Guard: Mobile users are prompted to rotate to landscape for the 3D workspace.
- Lo-Fi Cyberpunk Direction: Dark neon lighting, starfield motion, glitch details, and tactile micro-interactions define the visual identity.
| Component | Technology |
|---|---|
| Core Framework | React 18.3 + TypeScript 5.5 |
| Build & Bundler | Vite 5.4 |
| Styling & Layout | Tailwind CSS 3.4 + custom CSS |
| 3D & WebGL | Three.js + React Three Fiber / Drei |
| Post-Processing | EffectComposer, RenderPass, OutlinePass |
| Motion | GSAP, CSS keyframes, requestAnimationFrame |
| Audio | HTMLAudioElement + Web Audio API |
| Icons & Typography | Lucide React + Google Fonts (Outfit, JetBrains Mono, Kanit) |
| CI/CD Pipeline | GitHub Actions Node 24 deployment to GitHub Pages |
- Node.js 24 is recommended for deployment parity.
- npm, pnpm, or yarn.
-
Clone the repository:
git clone https://github.com/psy-zney/psy-zney.github.io.git cd psy-zney.github.io -
Install dependencies:
npm install
-
Start the local development server:
npm run dev
Open your browser and navigate to
http://localhost:5173.
To compile TypeScript and generate an optimized production bundle:
npm run buildPreview the production build locally:
npm run previewFast TypeScript verification:
npx tsc -b --pretty falsepsy-zney.github.io/
βββ src/
β βββ components/
β β βββ IntroPage.tsx # Editorial landing page and language-aware hero
β β βββ ModelAnalyzer.tsx # 3D workspace, GLB loading, monitor texture, loader, transitions
β β βββ DesktopOverlay.tsx # Pixel desktop, mechanical keyboard, LED modes, cat paws, key audio
β βββ utils/
β β βββ audioPreloader.ts # Intro.mp3 preload and gesture-safe playback helper
β βββ App.tsx # Intro/workspace routing, language state, mobile landscape guard
β βββ main.tsx # React DOM initialization
β βββ index.css # Global styles, overlays, keyboard visuals, animation systems
βββ public/
β βββ main.glb # Active 3D workspace model
β βββ scene-v2.glb # Secondary model asset / experimental scene asset
β βββ screenDesktop.gif # Animated monitor texture for the GLB screen
β βββ Intro.mp3 # Workspace loading audio
β βββ deep-space-panorama.png # Equirectangular space background
β βββ sounds/
β βββ cherrymx-black-pbt/ # Mechvibes-style mechanical keyboard sound pack
βββ .github/
β βββ workflows/
β βββ deploy.yml # GitHub Pages deployment workflow
βββ package.json # Project scripts and dependencies
βββ vite.config.ts # Vite bundler configuration
public/main.glbis still required.ModelAnalyzer.tsxloads it withuseGLTF('./main.glb').screenDesktop.gifshould stay close to 16:9 for the cleanest monitor fit.Intro.mp3is started from the workspace entry click to avoid browser autoplay restrictions.- The keyboard sound pack expects a Mechvibes-compatible
config.jsonplus packedsound.ogg.
- psy-zney.github.io β Interactive cyberpunk 3D portfolio and workspace experiment.
- beatsync β Listen to music in real-time sync with friends across interactive web rooms with WebRTC audio.
- Security β Cloud relay server and automated Windows security monitoring daemon for proactive system protection.
- LearningEnglish β Intelligent language acquisition app featuring automated tense verification and sentence parsing.
- AI_Hill_Climbing_TSP β Artificial intelligence heuristic algorithms solving the Traveling Salesperson Problem using Hill Climbing.
- mandycrimson β Modern full-stack product catalog and interactive presentation web platform.
Designed and engineered by Zney (@psy-zney).
- GitHub: @psy-zney
- Facebook: psyotic.zney
Made with β€οΈ and Cyberpunk Aesthetics by Zney