PaperPixel Template
Envato Submission Documentation • Version 1.0.0
1. Template Overview
PaperPixel is a creative personal portfolio HTML5 website template designed specifically for developers, designers, illustrators, and digital artists. It features a unique combination of hand-crafted scrapbook aesthetics (like lined notebook papers, washi tapes, and polaroid photo cards) alongside retro 8-bit game mechanics.
The template is completely responsive, lightweight, accessible, and supports dual theme modes (calm light paper mode and chalk carbon dark mode).
2. File Structure
Here is the visual directory tree of the PaperPixel template package:
paperpixel/
│
├── index.html ← Homepage (entry point)
├── about.html ← Bio & stats page
├── portfolio.html ← Project categories folder
├── services.html ← Tear-off voucher service tickets
├── pricing.html ← Arcade cabinet pricing tables
├── blog.html ← Zine-style news chronicle
├── blog-single.html ← Single article reader
├── contact.html ← Letter envelope contact form
├── faq.html ← Akordeon folded papers
├── 404.html ← Game Over CRT screen
│
├── assets/
│ ├── css/
│ │ ├── style.css ← Main stylesheet (reset & base grids)
│ │ ├── pixel-theme.css ← Scrapbook & pixel components
│ │ ├── animations.css ← Floating & flicker keyframes
│ │ ├── responsive.css ← Media queries (mobile-first)
│ │ └── dark-mode.css ← Chalk carbon mode variables
│ │
│ ├── js/
│ ├── main.js ← Core main entry point (bootstraps all modules)
│ └── modules/ ← Individual javascript feature modules
│ ├── nav.js ← Handles mobile menu toggle & active page link highlighting
│ ├── theme-toggle.js ← Handles light mode vs dark mode toggles & local preference saving
│ ├── sound.js ← Web Audio API synthesizer for 8-bit clicks & UI sound triggers
│ ├── xp-bar.js ← Progress bars fill animation triggered on viewport scroll
│ ├── draggable.js ← Touch & mouse scrapbook stickers drag-and-drop controller
│ ├── animations.js ← Lightweight translation parallax & viewport scroll reveal
│ ├── counter.js ← Statistics scroll-reveal count-up animation
│ ├── portfolio.js ← Portfolio tabs content categorization & access modals
│ ├── form.js ← Envelope contact form preloading, bot honeypots & validator
│ ├── blog-loader.js ← Dynamic post hydration loader for details page (blog-single.html)
│ └── music-player.js ← Sequencer synth player for the 8-bit melody on the about page
│ │
│ └── images/
│ ├── hero/ ← Hero banner illustrations
│ ├── portfolio/ ← Project screenshots
│ └── team/ ← Profile avatar picture
3. Getting Started
How to open and edit the template files:
- Unzip the template archive folder.
- Open the root folder (e.g.
paperpixel/) inside any code editor of your choice (we recommend Visual Studio Code). - Double-click on
index.htmlto view the homepage inside your web browser. - To edit text or links, locate the corresponding HTML file (e.g.,
about.html), modify the text inside the HTML tags, and save the file.
4. Customization Guide
How to change website colors:
The color system is organized using CSS Variables. To change the colors of your site, open assets/css/style.css and locate the variables inside the :root selector.
For example, to change the default blue accent color to pink, replace the hex code:
--color-accent-blue: #5887ff; /* Replace with your own color */
To change the color values in dark mode, edit the variables inside assets/css/dark-mode.css:
body.dark-mode {
--color-accent-blue: #709bff; /* Dark mode blue override */
}
How to change fonts:
The template imports fonts from Google Fonts at the top of assets/css/style.css. To use a different font:
- Go to Google Fonts and select a font you like.
- Copy the new
@importstylesheet URL. - Replace the existing
@importlink at the top ofstyle.css. - Update the variables
--font-displayor--font-bodywith your new font family name.
5. JavaScript Features Guide
This template runs on clean, modern, and modular ES6 JavaScript. All interactive features are separated into individual files (modules) under assets/js/modules/. The file assets/js/main.js is the central switchboard that loads them all.
Below is a complete, non-coder friendly guide to customize or disable each interactive feature. You do not need to understand coding to make these changes!
📊 XP Progress / Skill Bars
What it does: The colored progress bar that automatically "fills up" when a visitor scrolls down to it, representing your skill level or experience points (XP).
Where to find the files:
- Visual style:
assets/css/pixel-theme.css(search for.xp-bar) - Action script:
assets/js/modules/xp-bar.js
How to change the percentage (Adjust Skill):
- Open the HTML file where you want to change the skill percentage (for example,
about.htmlorindex.html). - Search for the code containing
data-xp-value, for example:
<div class="xp-bar__fill xp-bar__fill--green" data-xp-value="95"></div> - Change the number
95insidedata-xp-value="..."to any percentage number you want between0and100(e.g.,data-xp-value="80"for 80% full). - Save the file and refresh your browser. The bar will automatically fill to that new percentage value when you scroll down to it!
How to change the label text:
- Open the HTML file (e.g.,
about.html). - Locate the level text, e.g.,
<span class="xp-bar__level pixel-text">HTML / CSS</span>. - Change
HTML / CSSto whatever skill title you want (likePHOTOSHOPorWRITING). - To change the sub-label, find the text
9,500 / 10,000 XP(orLVL 99) and replace it with any numbers or text you want.
How to turn it OFF completely:
Open assets/js/main.js in any editor, find the line that says initXpBars(); and type two forward slashes in front of it like this: // initXpBars();. Save the file. The skill bars will still appear on the page but will stay static without animating.
🔊 Retro Click Sound Effects
What it does: Plays a soft, classic 8-bit arcade click sound wave whenever a visitor clicks on buttons, links, polaroid cards, or decoration elements.
Where to find the files:
- Action script:
assets/js/modules/sound.js
How it works for visitors:
Sound is muted by default so it does not disturb people. A visitor can click the speaker button (🔇 / 🔊) in the top-right corner to turn sounds on or off. The site remembers their choice.
How to turn it OFF completely:
Open assets/js/main.js, find the line that says initSound(); and type two forward slashes in front of it: // initSound();. The sound icon will disappear from the header, and no clicks will play sounds.
🎵 8-bit Music Sequencer Player
What it does: A mini music player box on the About page that synthesizes a looping retro background melody when clicked.
Where to find the files:
- Action script:
assets/js/modules/music-player.js
How to change the melody (tune notes):
- Open the file
assets/js/modules/music-player.js. - Look for the line that says:
const melody = [659.25, 830.61, 987.77, 880.00, 830.61, 739.99, 659.25, 622.25]; - These numbers are sound frequencies in Hertz (Hz). You can replace them with different numbers to change the notes (for example,
440.00is note A4,523.25is note C5, and261.63is note C4). - You can add more numbers to make the tune longer or remove numbers to make it shorter. Save the file and reload the about page to listen to your custom tune.
How to turn it OFF completely:
Open assets/js/main.js, find the line initMusicPlayer(); and comment it out: // initMusicPlayer();.
📌 Draggable Scrapbook Stickers
What it does: Allows visitors to click-and-drag or tap-and-drag sticker badges, notes, and polaroids anywhere on the screen.
Where to find the files:
- Action script:
assets/js/modules/draggable.js
How to make any element draggable:
Simply add the class name draggable-sticker to any HTML element, for example:
<div class="draggable-sticker">⭐</div>.
That item will now be instantly draggable by touch screen or mouse pointer!
How to turn it OFF completely:
Open assets/js/main.js, find the line initDraggable(); and comment it out: // initDraggable();.
🌙 Dark / Light Theme Mode
What it does: Allows visitors to toggle the website theme between Chalkboard Dark mode and Cream Light mode. It remembers their choice using browser cookies (localStorage).
Where to find the files:
- Visual styles:
assets/css/dark-mode.css - Action script:
assets/js/modules/theme-toggle.js
How to turn it OFF completely:
Open assets/js/main.js, find initThemeToggle(); and comment it out: // initThemeToggle();. Also remove the button with the ID theme-toggle-btn from the header in your HTML files.
📈 Animated Statistics Counters
What it does: Automatically counts up numbers from zero to your target statistical value with a smooth retro animation once the counter element is scrolled into view.
Where to find the files:
- Action script:
assets/js/modules/counter.js
How to customize statistics values:
- Open the HTML file containing the counters (like
about.html). - Find the code block with
class="stat-counter", e.g.:
<div class="stat-counter" data-target="15" data-suffix="+" data-prefix=""> - Change
data-target="15"to whatever number you want the counter to reach. - Change
data-prefixordata-suffixto add symbols (like$,%,+) before or after the number.
How to turn it OFF completely:
Open assets/js/main.js, find initCounters(); and comment it out: // initCounters();.
📂 Portfolio Filtering & Modal Popup
What it does: Handles the category filter tabs on the portfolio page, and opens a pop-up description screen (Modal) when you click a project.
Where to find the files:
- Action script:
assets/js/modules/portfolio.js
How to add a new project and connect the modal details:
- Open
portfolio.html. - Copy an existing project card container (with the class
portfolio-item). - Look for the button tag inside it:
<button class="project-card-btn" data-title="..." data-tech="..." data-desc="..." data-img="..."> - Simply replace the attributes:
data-title: Your project's name.data-tech: List of technologies used (like HTML, CSS, React).data-desc: The description paragraph shown inside the popup modal.data-img: The path to the preview screenshot image.
- Save the file. The popup modal will automatically show these custom texts and images when clicked!
How to turn it OFF completely:
Open assets/js/main.js, find initPortfolio(); and comment it out: // initPortfolio();.
✉️ Contact Form Auto-Fill & Spam Shield
What it does: Detects if a user chose a pricing plan tier, pre-fills the message box with a relevant request, validates inputs, and filters out malicious bots using a hidden input filter (Honeypot field).
Where to find the files:
- Action script:
assets/js/modules/form.js
How it protects your mailbox from spam bots:
The contact form has a hidden field that human visitors cannot see, but automatic spam bots will try to fill out. If the form is submitted with this hidden field filled, it prevents the message from being sent, filtering out spam silently.
How to turn it OFF completely:
Open assets/js/main.js, find initForm(); and comment it out: // initForm();.
6. Credits & Resources
All third-party assets used in this template are licensed for commercial use:
- Google Fonts: Space Grotesk, Press Start 2P (Google Fonts)
- Icons: Unicode emojis / native system symbols (no external icons font packages needed)
- Aesthetics references: Scrapbook layouts by @m6zhiro on Twitter, Dalkom pretzel branding project, Moeun Sreylin portfolio binder.
7. Changelog
v1.0.0 — June 29, 2026
- Initial release of PaperPixel portfolio template.
- Integrated scrapbook aesthetic cards, notes, and polaroids.
- Implemented smooth requestAnimationFrame hero parallax.
- Added Web Audio API retro synthetic click feedback.
- Completed dual theme modes (Chalkboard Dark & Warm Cream Light).
- Completed 10 page-level sub-templates.
8. Support Info
If you run into any issues customizing this template, feel free to contact us via the profile contact form or email us directly at support@imajikostudio.com. We are happy to help!