A React-based single-page portfolio application with a sci-fi/cyberpunk aesthetic, featuring animated components, sound effects, and responsive design. Built with Vite as the build tool and includes a Node.js/Express backend server.
- React 18.2.0 - Main UI framework
- React Router DOM 6.16.0 - Client-side routing
- Vite 4.4.9 - Build tool and dev server
- React JSS - CSS-in-JS styling
- Anime.js 3.0.1 - Animation library
- Howler.js 2.1.1 - Audio management
- Arwes 1.0.0-alpha.23 - Sci-fi UI components
- Augmented UI 2.0.0 - CSS framework for futuristic interfaces
- Express 4.16.4 - Web server
- Helmet 3.16.0 - Security middleware
- Morgan 1.9.1 - HTTP request logger
- CORS 2.8.5 - Cross-origin resource sharing
- Nodemailer 7.0.5 - Email functionality
- Firebase 10.4.0 - Backend services (if used)
src/
├── index.js # React app entry point
├── main.js # Main component with routing
└── server.js # Express backend server
src/layouts/Template/
├── Template.js # Main layout wrapper
├── Template.styles.js # Layout styles
└── index.js # HOC wrapper with styles and router
Key Features:
- Conditional rendering based on route (
isURLContent) - Background animations
- Enter/exit animations with overlay
- Responsive design handling
Core Components:
src/components/
├── App/ # Main app container with header/footer
├── Header/ # Navigation with animated SVG background
├── Menu/ # Navigation menu with links
├── Background/ # Animated circuit board background
├── Layout/ # Root layout with meta tags and providers
├── Main/ # Content wrapper with fade animations
├── Brand/ # Logo component with SVG animations
├── Footer/ # Footer with social links
└── Animation/ # Animation context provider
UI Components:
src/components/
├── Button/ # Animated button with SVG borders
├── Text/ # Typing animation text component
├── Link/ # Router-aware link component
├── Popup/ # Modal dialog component
├── Fader/ # Fade in/out animation wrapper
├── Secuence/ # Staggered animation sequence
├── SocialLinks/ # Social media links
├── Legal/ # Copyright footer
└── Brand/ # Logo/branding component
src/pages/
├── index.js # Home page (landing)
├── about.js # Resume/About page
├── skills.js # Skills showcase
└── recommendations.js # Testimonials page
src/tools/
├── withStyles/ # CSS-in-JS HOC
├── withRouter/ # React Router HOC
├── withAnimation/ # Animation HOC
├── withSounds/ # Audio HOC
├── viewport/ # Responsive viewport utilities
├── animationStatus/ # Animation state management
├── animationTick/ # Animation timing utilities
├── createSounds/ # Audio creation utilities
├── createPlayer/ # Audio player utilities
└── general/ # General utility functions
src/settings/
├── theme.js # Design system and colors
├── meta.js # SEO meta tags
└── sounds.js # Audio configuration
BrowserRouter (main.js)
↓
Template Layout (layouts/Template/)
↓
Conditional Rendering:
- Home page: Direct content
- Other pages: App wrapper with Header/Footer
↓
Page Components (pages/)
Animation Context (components/Animation/)
↓
Secuence Component (staggered animations)
↓
Individual Components (withAnimation HOC)
↓
Anime.js animations
SoundsProvider (components/SoundsProvider/)
↓
Howler.js players
↓
Component sound triggers
Theme Provider (react-jss)
↓
withStyles HOC
↓
Component styles
- Mobile-first approach with viewport utilities
- Different layouts for mobile/desktop
- Responsive navigation (burger menu on mobile)
- Complex SVG path animations
- Staggered entrance animations
- Typing text effects
- Circuit board background animations
- Sound effects for interactions
- Background audio management
- Audio context for performance
- React Helmet for meta tags
- Static file serving
- Optimized build process
- Static file serving
- Email functionality for resume downloads
- Security middleware (Helmet, CORS)
- Environment-based configuration
POST /api/download-resume- Resume download tracking
- Vite dev server with hot reload
- Babel configuration for React
- ESLint for code quality
- Vite build process
- Static file generation
- Express server for production serving
- React Context for animations and sounds
- Local component state for UI interactions
- No global state management library needed
- Code splitting with React Router
- Optimized animations with requestAnimationFrame
- Lazy loading of audio files
- Efficient SVG animations
- Node.js (v14 or higher)
- npm or yarn
# Clone the repository
git clone <repository-url>
cd Portfolio
# Install dependencies
npm install
# Start development server
npm start
# Build for production
npm run build
# Start production server
npm run serverCreate a .env file in the root directory:
NODE_ENV=development
PORT=14000
HOST=127.0.0.1
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password
npm start- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run server- Start production servernpm run lint- Run ESLintnpm run deploy:build- Build and copy to public directorynpm run vercel-build- Build for Vercel deployment
Portfolio/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ ├── layouts/ # Layout components
│ ├── pages/ # Page components
│ ├── tools/ # Utility functions
│ ├── settings/ # Configuration files
│ ├── data/ # Static data
│ ├── images/ # Image assets
│ ├── index.js # App entry point
│ └── main.js # Main component
├── server.js # Express backend
├── vite.config.js # Vite configuration
├── package.json # Dependencies
└── README.md # This file
The Template component serves as the main layout wrapper, handling:
- Route-based conditional rendering
- Background animations
- Enter/exit animations
- Responsive design logic
- Header: Animated SVG background with responsive navigation
- Menu: Navigation links with hover effects and sound
- Mobile: Burger menu with overlay navigation
- Animation Context: Provides animation state to child components
- Secuence: Manages staggered animations
- withAnimation HOC: Wraps components with animation capabilities
- Anime.js: Handles complex SVG and CSS animations
- SoundsProvider: Manages audio context and players
- Howler.js: Handles audio playback
- Sound triggers: Components trigger sounds on interactions
- React JSS: CSS-in-JS styling
- Theme system: Centralized design tokens
- Responsive utilities: Viewport-based responsive design
- Component styles: Scoped component styling
- Code splitting: Route-based code splitting
- Animation optimization: RequestAnimationFrame for smooth animations
- Audio optimization: Lazy loading and context management
- Build optimization: Vite's fast build process
This architecture creates a cohesive, performant portfolio with a unique sci-fi aesthetic, smooth animations, and responsive design across all devices.