Multi-page structure: six separate HTML pages for Home, About, Education, Skills, Projects, and Contact
student-portfolio-website-vanilla — HTML Portfolio Template
By rik-byte-shifter
A multi-page student portfolio website built with vanilla HTML, CSS, and JavaScript, including home, about, education, skills, projects, and contact pages, with dark/light theme and responsive layout.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Dark/light theme toggle with preference saved in localStorage
Scroll-triggered animations: IntersectionObserver for section fade-ins and skill bar filling
Typewriter-effect rotator on the home page cycling through multiple job titles
Contact form with client-side validation and inline error messages
Mobile-first responsive layout with hamburger navigation and back-to-top button
Template Details
This is a multi-page portfolio template for students and developers, written in HTML5, CSS3, and vanilla JavaScript, with no framework dependencies and no build step. The site includes six pages: Home (with a typewriter-effect role rotator, social links, and call-to-action buttons), About Me (profile, bio, focus areas), Education (timeline), Skills (progress bars and cards), Projects (project cards and an in-progress build log), and Contact (form with client-side validation).
For interaction and visuals, the template offers a dark (default) and light theme toggle, with the preference saved in localStorage; a loading animation appears on first visit, and subsequent navigation skips it via sessionStorage; sections and cards fade in on scroll using IntersectionObserver; skill bars fill when entering the viewport; buttons have a click ripple effect; and a back-to-top button appears after scrolling. Navigation collapses into a hamburger menu on mobile, and pages use semantic tags, ARIA attributes, and keyboard-friendly focus styles.
Usage limitations: The contact form only performs client-side validation and shows a demo success message; there is no backend, so you need to integrate your own API or form service (the README mentions Formspree). The README also mentions Firebase integration, but you must configure it yourself and verify quotas and pricing before enabling it. Third-party assets such as demo images, fonts, and icons require separate license verification. The template is released under the MIT License, allowing free use, modification, and distribution, provided copyright and license notices are retained.
Is it right for your project?
Use Cases
- Students or junior developers building a personal portfolio website to showcase education, skills, and projects
- As a learning example for vanilla HTML/CSS/JavaScript, referencing implementations of theme switching, form validation, and scroll animations
- For static sites that need no framework or build step, deployable directly to GitHub Pages and similar static hosts
- Quickly replacing text, images, and links on the existing HTML to create a personal version
Suitable For
- Students who want to build a portfolio using pure HTML, CSS, and JavaScript
- Developers who need a lightweight static template without introducing frameworks or build tools
- Beginners who want to learn vanilla JavaScript interaction implementations (theme, forms, animations)
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning or downloading the repository, you can open index.html directly by double-clicking, or use a local server (such as VS Code Live Server, npx serve .) to avoid file protocol issues
- 2
When deploying to GitHub Pages, ensure the css/, js/, and images/ directories and files are committed, and each HTML file includes <base href="./">
- 3
Replace images/profile_image1.jpg and images/about_image.jpg with personal photos; placeholders appear if missing
- 4
Modify theme color variables in css/style.css under :root and [data-theme="light"]; modify typewriter text in the roles array of initHeroRoleRotator() in js/script.js
- 5
The contact form only performs client-side validation; modify the form action or add fetch in script.js to integrate a backend or form service (such as Formspree, Netlify Forms)
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version from a public repository under the MIT License; the free scope applies to that version's code and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT License notice.
- The code is provided as-is; warranties and liability limitations are governed by the original license and applicable law.
Additional costs & items to verify
- The README mentions the Formspree form service; actual submission requires configuring a service endpoint, and its usage quotas and fees must be verified separately.
- The README mentions Firebase integration; before enabling related dynamic features, you must configure it yourself and verify Firebase quotas and pricing.
- Demo images, fonts, icons, and other third-party assets require separate license verification; they cannot be judged solely by the code's MIT License.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- The contact form only performs client-side validation and has no backend; to actually receive submissions, you must modify the form action or add fetch to integrate your own backend or a third-party form service (such as Formspree, Netlify Forms).
- The contact page form only shows a demo success message and contains no backend logic; you must integrate an API or form service to actually send messages.
- Opening directly via the file protocol may cause issues; it is recommended to run with a local server (such as Live Server), otherwise some features may not work properly.
- Page fonts come from the external Google Fonts service, which makes requests to Google when used; you must verify its availability and related terms yourself.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The form is client-side only; connect it to your backend or a service (e.g. Formspree, Netlify Forms) by changing the form `action` and/or adding `fetch` in `script.js`.
Original README
Form with validation and demo success message (no backend; ready to plug into your API or form service).
Original README
Optional: a local server (e.g. [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)) to avoid file-protocol issues
Original README
https://github.com/rik-byte-shifter/student-portfolio-website-vanilla/blob/main/LICENSEhttps://github.com/rik-byte-shifter/student-portfolio-website-vanilla/blob/main/README.md**Fonts** — [Google Fonts](https://fonts.google.com): **Outfit** (UI), **JetBrains Mono** (accents)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 83 / 100
- Technologies
- HTML
- Website type
- Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-05-15
- Screenshot last checked
- 2026-10-13
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies HTML as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 5533a4c93776613089b4f15e6427eb7462a36af1a85a0b636975531d62adb1e3
2026-10-13T07:56:07.283Z
Source file / repository<div align="center"> # Portfolio Website **—** *A modern, responsive multi-page portfolio built with vanilla HTML5, CSS3, and JavaScript* **—** *No frameworks · No build step · Just clean, semantic markup* </div> <p align="center"> <img src="images/ss.png" alt="Portfolio website preview" width="800"> </p> --- ## 🎯 Overview This portfolio showcases education, skills, projects, and contact in a single cohesive site. It features a **dark/light theme**, smooth **scroll-reveal** animations, a **typewriter** hero, **contact form validation**, and a **first-visit loading screen**—all implemented with plain JavaScript and CSS. Perfect for students and developers who want a fast, accessible, and easy-to-customize portfolio without dependencies. --- ## ✨ Features | Feature | Description | |--------|-------------| | **🌓 Theme Toggle** | Dark (default) and light themes with preference saved in `localStorage` | | **📱 Responsive** | Mobile-first layout with hamburger nav and breakpoints for all screen sizes | | **⌨️ Typewriter Hero** | Rotating role titles with type/delete animation on the homepage | | **🎬 Page Loader** | Ball-style loading animation on first visit (skipped on subsequent navigation via `sessionStorage`) | | **👁️ Scroll Reveal** | Sections and cards animate into view on scroll via `IntersectionObserver` | | **📊 Skill Bars** | Animated skill bars that fill when they enter the viewport | | **📝 Contact Form** | Client-side validation (name, email, message) with inline errors and success feedback | | **🔘 Button Ripples** | Click ripple effect on primary/secondary buttons | | **⬆️ Scroll-to-Top** | Floating button appears after scrolling; smooth scroll back to top | | **♿ Accessibility** | Semantic HTML, ARIA labels, focus styles, and keyboard-friendly navigation | | **🎨 Custom Scrollbar** | Themed scrollbar (accent color) for a cohesive look | --- ## 🛠️ Tech Stack - **HTML5** — Semantic structure, `aria-*` attributes, `loading="lazy"` for images - **CSS3** — Custom properties (variables), Flexbox/Grid, transitions, media queries - **Vanilla JavaScript** — No libraries; theme, nav, form, animations, and UX logic in one file - **Fonts** — [Google Fonts](https://fonts.google.com): **Outfit** (UI), **JetBrains Mono** (accents) --- ## 📁 Project Structure ``` Student_Portfolio_Website/ ├── index.html # Home — hero, typewriter, CTA, social links ├── about.html # About Me — profile, stats, story, focus areas ├── education.html # Education — timeline (RUET, HSC, SSC) ├── skills.html # Skills — technical + tools + soft skills with bars ├── projects.html # Projects — VisionGuard51, PONG QUEST, portfolio, surprise site, build log ├── contact.html # Contact — form (name, email, message) + validation ├── css/ │ └── style.css # Global styles, theme variables, components, responsive ├── js/ │ └── script.js # Theme, nav, form, skill bars, reveal, ripple, scroll-top, loader, typewriter ├── images/ │ ├── profile_image1.jpg # Hero profile photo │ ├── about_image.jpg # About section photo │ ├── social/ # LinkedIn, GitHub, Facebook, Instagram icons │ ├── skills/ # Skill icons (HTML5, CSS3, JS, Python, etc.) │ ├── tools/ # Tool icons (VS Code, Git, Firebase, etc.) │ └── projects/ # Project screenshots and media └── README.md ``` --- ## 📄 Pages at a Glance | Page | Content | |------|--------| | **Home** | Hero with name, typewriter roles, short intro, social links, and CTAs (About Me / Get in Touch). | | **About Me** | Profile (name, degree, university, location), bio, “focused on” and “building next” lists, and “outside of coding.” | | **Education** | Timeline: RUET (B.Sc. ETE, 2023–Present), HSC, SSC with years and results. | | **Skills** | Technical skills with progress bars; tools and soft skills in grid/card layout. | | **Projects** | Cards for VisionGuard51, PONG QUEST, this portfolio, Romantic Surprise site, and an “in progress” build log. | | **Contact** | Form with validation and demo success message (no backend; ready to plug into your API or form service). | --- ## 🚀 Getting Started ### Prerequisites - A modern browser (Chrome, Firefox, Safari, Edge) - Optional: a local server (e.g. [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)) to avoid file-protocol issues ### Run Locally 1. **Clone or download** the repo: ```bash git clone https://github.com/rik-byte-shifter/Student_Portfolio_Website.git cd Student_Portfolio_Website ``` 2. **Open the site** - **Option A:** Double-click `index.html` to open in your browser. - **Option B:** Use a local server (e.g. `npx serve .` or VS Code Live Server) and open the URL shown (e.g. `http://localhost:3000`). 3. **Navigate** via the header: Home, About Me, Education, Skills, Projects, Contact. Use the theme toggle to switch between dark and light. --- ## 🌐 Deploying to GitHub Pages 1. **Push the full project** — Ensure the `css/`, `js/`, and `images/` folders (and all their files) are in the repo. If the site looks unstyled (white page, no CSS), the browser can’t find these assets; check that they’re committed and pushed. 2. **Enable Pages** — In your repo: **Settings → Pages → Source**: choose your branch (e.g. `main`) and root, then save. 3. **Open the site** — Use the URL GitHub gives you (e.g. `https://<username>.github.io/<repo-name>/`). Each HTML file includes `<base href="./">` so CSS, JS, and images load correctly from that URL. --- ## 🎨 Customization - **Theme colors:** Edit CSS variables in `css/style.css` under `:root` (dark) and `[data-theme="light"]`. - **Profile images:** Replace `images/profile_image1.jpg` and `images/about_image.jpg`; placeholders are shown if files are missing. - **Content:** Update text and links in each HTML file (name, bio, education, skills, project descriptions, social URLs). - **Hero roles:** Change the typewriter phrases in `js/script.js` inside `initHeroRoleRotator()` → `roles` array. - **Contact form:** The form is client-side only; connect it to your backend or a service (e.g. Formspree, Netlify Forms) by changing the form `action` and/or adding `fetch` in `script.js`. --- ## 🌐 Browser Support - Chrome, Firefox, Safari, Edge (recent versions) - Uses `IntersectionObserver`, `localStorage`, and `sessionStorage` (widely supported) - Graceful degradation if JavaScript is disabled (content still readable; theme defaults to dark) --- ## 📜 License This project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details. --- ## 👤 Author **Ranesh Das Rik** - GitHub: [@rik-byte-shifter](https://github.com/rik-byte-shifter) - LinkedIn: [Ranesh Das Rik](https://www.linkedin.com/in/ranesh-das-rik) - Portfolio: This site --- <p align="center"> <sub>Built with HTML, CSS, and JavaScript — no frameworks.</sub> </p>
Explore similar templates
Compare previews and descriptions within the same stack and category.

simplefolio
Simplefolio is a minimal single-page portfolio template for developers, built with HTML, Bootstrap, SCSS, and Parcel under the MIT license. It includes Hero, About, Projects, Contact, and Footer sections, with content edited in /src/index.html and theme colors controlled by two SCSS variables.
HTML · Portfolio

Freelancer
A bright, single-page Bootstrap portfolio template for freelancers, designers, and small studios. It includes a responsive portfolio grid with modal detail windows and an SB Forms contact form that requires an API token.
HTML · Portfolio

Resume
A single-page resume and CV template from Start Bootstrap, built on Bootstrap with a fixed sidebar and content sections.
HTML · Portfolio

Creative
A single-page marketing template by Start Bootstrap for creative agencies and product services, built on Bootstrap with SCSS, featuring a portfolio grid and call-to-action sections. It includes pre-set SB Forms markers for form integration and npm build scripts for source customization.
HTML · Corporate Website

Grayscale
A dark single-page Bootstrap template from Start Bootstrap for photography, events and brand storytelling, with a large hero and clearly separated sections.
HTML · Corporate Website

startbootstrap-stylish-portfolio
A one-page Bootstrap portfolio theme from Start Bootstrap with multiple content sections and an off-canvas navigation menu. Basic use means editing HTML/CSS under dist and opening index.html; advanced use relies on npm with Pug and SCSS build scripts.
HTML · Portfolio
