A modern, responsive, and SEO-optimized personal portfolio website showcasing my skills, projects, and professional journey as a Full Stack Developer.
- About
- Features
- Technologies Used
- SEO & Performance
- Project Structure
- Getting Started
- Deployment
- Contact Form Setup
- Security
- Customization
- Contributing
- License
This portfolio website represents my journey as a software developer and final-year Computer Science student at the University of Cape Town (UCT). It showcases my technical skills, projects, and certifications, and provides a professional platform for potential employers and collaborators to learn about my work.
- Modern Design: Clean, professional interface with smooth animations
- Responsive Layout: Optimised for all devices and screen sizes
- Interactive Elements: Custom cursor, smooth scrolling, and dynamic content
- Contact Integration: Fully functional contact form with EmailJS and robust validation
- Real-time Validation: Live form validation with visual feedback
- Project Showcase: Yet to show detailed project presentations with videos and descriptions
- Custom Cursor: Smooth animated cursor that follows mouse movement
- Smooth Scrolling: Seamless navigation between sections
- Responsive Design: Mobile-first approach with breakpoint optimization
- Modern Animations: Subtle transitions and hover effects
- Professional Typography: Clean, readable font hierarchy
- Landing Page: Compelling introduction with call-to-action buttons
- About Me: Personal story and professional background
- Projects: Showcase of technical projects with videos and descriptions
- Certifications: Professional certifications and achievements
- FAQs: Common questions about my work and experience
- Contact: Professional contact form and social links
- Contact Form: Advanced EmailJS integration with comprehensive validation
- Form Validation: Real-time validation with visual feedback (name, email, phone, message)
- Loading States: Visual feedback during form submission with spinner animation
- Error Handling: Graceful error handling with user-friendly messages
- Resume Download: Direct download link for my CV
- Social Links: Professional social media integration
- Mobile Menu: Hamburger menu for mobile navigation
- Icon Optimization: Intelligent SVG icon caching and preloading system
- Performance Monitoring: Real-time icon load time tracking and optimization
- Complete SEO Suite: Meta tags, Open Graph, Twitter Cards, and structured data
- Google Search Console: Verified and indexed for search visibility
- XML Sitemap: Human-readable styled sitemap with visual enhancements
- Robots.txt: Proper search engine crawling directives
- Semantic HTML: Schema.org structured data for rich snippets
- Performance Optimized: Icon caching, lazy loading, and optimized assets
- Mobile-First: Responsive design with optimal mobile performance
- HTML5: Semantic markup and structure
- CSS3: Modern styling with Flexbox, Grid, and custom animations
- JavaScript (ES6+): Interactive functionality, form validation, and animations
- EmailJS: Advanced contact form integration with error handling
- Netlify: Static site hosting and deployment
- Git: Version control and collaboration
- Custom Icons: SVG icons for consistent design
- Optimized Images: Compressed images for fast loading
- Video Content: Project demonstration videos
This portfolio is fully optimized for search engines and performance:
- Meta Tags: Complete set of meta tags including title, description, keywords, and viewport
- Open Graph: Facebook and social media sharing optimization
- Twitter Cards: Enhanced Twitter sharing with custom cards
- Structured Data: Schema.org Person markup for rich snippets
- Google Search Console: Verified property for search performance monitoring
- XML Sitemap: Comprehensive sitemap with visual styling for human readability
- Robots.txt: Proper crawling directives for search engines
- Icon Optimizer: Intelligent SVG icon caching and preloading system
- Automatic detection of slow-loading icons (>50ms threshold)
- Aggressive caching using Cache API
- Critical icon preloading for instant access
- Performance monitoring with console logging
- Optimized Assets: Compressed images and minified code
- Lazy Loading: Efficient resource loading strategies
- Mobile-First: Responsive design optimized for all devices
- Semantic HTML: Proper heading hierarchy and semantic elements
- Accessibility: ARIA labels and keyboard navigation support
- Fast Loading: Optimized for Core Web Vitals
- Mobile Responsive: Perfect mobile experience for better rankings
Personal Portfolio/
βββ assets/
β βββ files/
β β βββ resume.pdf
β βββ icons/
β β βββ arrow-down.svg
β β βββ arrow-up.svg
β β βββ github.svg
β β βββ linkedin.svg
β β βββ ... (other icons)
β βββ images/
β β βββ myLogo.png
β β βββ me.jpeg
β β βββ gradient.png
β β βββ ... (other images)
β βββ videos/
β βββ calculator.mp4
β βββ weatherApp.mp4
β βββ ... (project videos)
βββ css/
β βββ styles.css # Main stylesheet
β βββ media-queries.css # Responsive design
β βββ variables.css # CSS custom properties
βββ js/
β βββ config.example.js # EmailJS configuration template (safe for git)
β βββ config.js # EmailJS configuration (gitignored for security)
β βββ constants.js # Application constants
β βββ formValidation.js # Form validation logic
β βββ handleForm.js # Form submission and EmailJS integration
β βββ handleForm.test.js # Form testing utilities
β βββ iconOptimizer.js # SVG icon optimization and caching
β βββ init.js # Application initialization
β βββ utils.js # General utility functions
βββ index.html
βββ netlify.toml # Netlify deployment configuration
βββ robots.txt # Search engine crawling directives
βββ sitemap.xml # XML sitemap for search engines
βββ sitemap.xsl # XSL stylesheet for sitemap visualization
βββ .gitignore # Git ignore rules (includes config.js)
βββ README.md
- A modern web browser
- Git (for version control)
- Text editor (VS Code, Sublime Text, etc.)
-
Clone the repository
git clone https://github.com/Iviwebooi/personal-portfolio.git cd personal-portfolio -
Open the project
# Open index.html in your browser # Or use a local server for development python -m http.server 8000 # or npx serve.
-
Customize the content
- Update personal information in
index.html - Replace images in
assets/images/ - Modify styling in
css/styles.css - Update JavaScript functionality in
js/files
- Update personal information in
-
Connect to Netlify
- Push your code to GitHub
- Connect your repository to Netlify
- Configure build settings (publish directory:
.)
-
Environment Variables Set up the following environment variables in Netlify:
EMAILJS_PUBLIC_KEY=your_emailjs_public_key EMAILJS_SERVICE_ID=your_emailjs_service_id EMAILJS_TEMPLATE_ID=your_emailjs_template_id -
Deploy
- Netlify will automatically deploy on every push to the main branch
- Your site will be available at
https://your-site-name.netlify.app
- Upload all files to your web hosting provider
- Ensure all file paths are correct
- Test the contact form functionality
The contact form features advanced validation and EmailJS integration for reliable email delivery.
-
Create EmailJS Account
- Sign up at EmailJS
- Create a new email service (Gmail, Outlook, etc.)
- Note your Public Key, Service ID, and Template ID
-
Create Email Template
Subject: New Contact from Portfolio - {{name}} Name: {{name}} Email: {{email}} Phone: {{phone}} Website Niche: {{subject}} Message: {{message}} -
Configure Environment Variables For production (Netlify), set these environment variables:
EMAILJS_PUBLIC_KEY=your_public_key_here EMAILJS_SERVICE_ID=your_service_id_here EMAILJS_TEMPLATE_ID=your_template_id_hereFor local development, update
js/config.jswith your credentials. -
Form Validation Features
- Name: Minimum 2 characters, letters and spaces only
- Email: Valid email format validation
- Phone: 10-15 digit phone numbers (flexible formatting)
- Website Niche: Minimum 2 characters
- Message: Minimum 10 characters
- Real-time Feedback: Visual validation with colored borders
- Loading States: Spinner animation during submission
-
Test the Form
- Fill out all fields with valid data
- Submit and check for success/error messages
- Verify emails are received correctly
- Test validation by entering invalid data
This portfolio implements several security best practices:
- Sensitive Data Protection: EmailJS configuration keys are excluded from git tracking
- Environment Variables: Production credentials stored securely in Netlify environment variables
- Git Ignore:
config.jsfile containing API keys is properly gitignored - Example Configuration:
config.example.jsprovides a safe template for setup
- Local Development: Use actual credentials in local
config.js(not tracked) - Production Deployment: Credentials injected via environment variables
- No Hardcoded Secrets: All sensitive data properly externalized
-
Local Development:
# Copy the example config cp js/config.example.js js/config.js # Update js/config.js with your actual EmailJS credentials
-
Production Deployment:
- Set environment variables in Netlify dashboard
- Credentials are automatically injected during build
- No manual configuration needed
- Form Validation: Prevents malicious input and ensures data integrity
- Error Handling: Graceful error handling without exposing sensitive information
- HTTPS: Secure communication for all form submissions
- Input Sanitization: Proper validation and sanitization of user inputs
- Update name, title, and description in
index.html - Replace profile image in
assets/images/me.jpeg - Update resume in
assets/files/resume.pdf - Update contact information (email, phone, social links)
- Update EmailJS credentials in
js/config.jsfor local development - Set environment variables for production deployment
- Customize email template in your EmailJS dashboard
- Modify validation rules in
js/handleForm.jsif needed
- Modify colours in
css/styles.css - Update fonts and typography
- Adjust animations and transitions
- Customize form validation styles (valid/invalid states)
- Add new projects to the projects section
- Include project videos in
assets/videos/ - Update project descriptions and links
- Update social media URLs in the contact section
- Add or remove social platforms as needed
While this is a personal portfolio, I welcome feedback and suggestions:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: booiiviwe4394@gmail.com
- LinkedIn: [https://www.linkedin.com/in/iviwe-booi-6b467129a/]
- GitHub: [https://github.com/IviweBooi]
- Portfolio: [https://iviwebooi.co.za]
- β SEO Optimization: Complete SEO suite with meta tags, structured data, and sitemap
- β Performance Enhancement: Icon optimization system with caching and preloading
- β Security Improvements: Proper handling of sensitive configuration data
- β Google Search Console: Verified and indexed for search visibility
- β Styled Sitemap: Human-readable XML sitemap with visual enhancements
β Star this repository if you found it helpful!
Built with β€οΈ by Iviwe Booi - Full Stack Developer
