Julian Weaver's Personal Website
HTML5
CSS3
Vanilla JavaScript (ES6+)
Matter.js
Three.js
Google Gemini API : LLM backend via Vercel serverless functions
Secure Proxy : API key protection with CORS handling
js/
├── script.js # Main application entry point
├── config.js # Physics engine configuration
├── constants.js # Application constants and settings
├── scene-manager.js # Scene orchestration and transitions
├── background-particles.js # Particle system management
├── hanging-text.js # Interactive text physics
├── tunnel-effect.js # 3D tunnel visual effects
├── fluid-integration.js # Fluid simulation integration
├── brain-manager.js # Neural network visualization
├── brain-ai.js # JULIVER.AI chat interface
├── ground-manager.js # Ground physics and interactions
├── responsive.js # Responsive design utilities
├── utils.js # Utility functions and cleanup
└── logger.js # Debugging and logging system
api/
├── chat.js # Gemini API proxy with secure authentication
└── julian-info.js # A small knowledge base and LLM personality config
1. Physics Engine (Matter.js)
Engine : Central physics simulation with configurable gravity and iterations
Renderer : Canvas-based rendering with hardware acceleration
Mouse Controls : Interactive drag-and-drop physics objects
World Management : Dynamic object creation and cleanup
2. Scene Management System
SceneManager : Orchestrates sequential scene transitions
HangingText : Physics-based text objects with string constraints
BackgroundParticles : Dynamic particle system with shimmer effects
TunnelEffect : 3D tunnel visualization using Three.js
3. Performance Optimization
Hardware Acceleration : CSS transforms and will-change properties
Object Pooling : Efficient memory management for particles
Cleanup Systems : Automatic removal of off-screen objects
Frame Rate Optimization : Adaptive performance monitoring
BrainAI Class : Chat interface
Secure API Proxy : Vercel serverless function protecting API keys
Conversation Management : Context-aware dialogue with memory
Personality Engine : Responses representing my background
Physics-Based Text : Hanging text objects with realistic physics
Mouse Interaction : Click and drag functionality
Particle Systems : Dynamic background particles with shimmer effects
3D Effects : Tunnel visualization and fluid simulations
Scene Transitions : Smooth transitions between different states
Color Changes : Dynamic color palette transitions
Particle Effects : Shimmer, twinkle, and glow effects
Responsive Design : Adaptive layouts for different screen sizes
PHYSICS: {
GRAVITY : 1 ,
CONSTRAINT_ITERATIONS : 10 ,
POSITION_ITERATIONS : 10 ,
VELOCITY_ITERATIONS : 10
}
CLEANUP: {
INTERVAL : 300 , // Cleanup frequency (frames)
MAX_OFFSCREEN_DISTANCE : 1000 // Object removal threshold
}
PARTICLES: {
DEFAULT_MAX : 80 ,
DEFAULT_SPAWN_RATE : 0.3 ,
DEFAULT_MIN_LIFETIME : 3000 ,
DEFAULT_MAX_LIFETIME : 8000
}
Realistic gravity and collision detection
Mouse-controlled object manipulation
Dynamic object creation and destruction
Hardware-accelerated animations
Particle systems with shimmer effects
3D tunnel visualization
Fluid simulation integration
Optimized rendering with 60fps target
Automatic cleanup of off-screen objects
Memory-efficient object pooling
Adaptive performance monitoring
Adaptive layouts for different screen sizes
Dynamic text scaling
Mobile-friendly interactions
Extend the SceneManager class
Add scene logic in run[SceneName]Scene() method
Configure timing in APP_CONFIG.ANIMATION
Adjust settings in APP_CONFIG.PHYSICS
Modify engine configuration in config.js
Update object properties in respective classes
Update colors in APP_CONFIG.COLORS
Modify particle settings in APP_CONFIG.PARTICLES
Adjust animation timing in APP_CONFIG.ANIMATION
Modify personality in julian-info.js
Update system prompts in chat.js
Adjust response length via maxOutputTokens
Configure conversation guidelines and examples