A single-page personal portfolio website built with HTML, CSS, and JavaScript.
The portfolio includes:
- Sticky full-width navbar with responsive mobile menu
- Hero section with intro, CTA button, and social links
- About section with education details
- Skillset section with branded skill chips
- Featured projects section
- Blog section connected to Blogger posts with carousel navigation
- Contact section with JavaScript form validation
- Footer with social/contact links
- Light/Dark mode toggle with local storage persistence
- HTML5
- CSS3
- Vanilla JavaScript
- Font Awesome (icons)
- Google Fonts (JetBrains Mono)
portfolio/
index.html # Page structure and content sections
style.css # All styling, theme rules, and responsive breakpoints
index.js # Navbar/menu logic, theme toggle, blog carousel, form validation
images/
avatar.png
my-photo.jpg
favicon.png
- Navbar
- Links: Who am I, Skills, Projects, Blog, Contact
- Mobile hamburger menu
- Dark/Light theme toggle
- Hero
- Intro text
- Role/title
- Short description
- Contact CTA
- Social media links
- About
- Personal summary
- Education timeline/details
- Skills
- "The Magic Behind" section
- Skill chips with icon colors
- Projects
- Three featured GitHub repositories
- Tags and metadata
- Blog
- Recent blog cards
- Arrow controls and dots
- Responsive card slider behavior
- Contact
- Name, Email, Message fields
- JavaScript validation and inline error messages
- Footer
- Brand, copyright, and social links
Implemented in index.js:
- Mobile nav open/close behavior
- Close nav on outside click and on link click
- Theme persistence using
localStorage - Blog carousel controls (prev/next and dots)
- Contact form validation:
- Name minimum length and character check
- Email format validation
- Message minimum length
- Inline field errors and form status messages
- Place the project in your htdocs folder (already done).
- Start Apache from XAMPP Control Panel.
- Open in browser:
http://localhost/webTech/Mid/portfolio/
- Open the
portfoliofolder in VS Code. - Open
index.html. - Use Live Server to preview.
- Personal info and section content: edit
index.html - Colors, spacing, typography, and responsive layout: edit
style.css - Interactions and validation logic: edit
index.js - Profile images/icons: replace assets in
images/
- Blog cards currently use Blogger post URLs and image links.
- Contact form currently validates on the client side only.
- To make contact messages send to email, integrate Formspree or EmailJS.
- Add backend/email integration for contact form
- Add smooth active-link highlighting by scroll position
- Add project screenshots instead of abstract placeholders
- Add accessibility audit (keyboard focus and aria refinements)
Roy Bipro
- GitHub: https://github.com/roybipro
- LinkedIn: https://www.linkedin.com/in/roy-bipro/
- Blog: https://roybipro.blogspot.com/