The preloader includes real image and font preloading, a 0 to 100 count and a rotating letter ring scatter animation
Portfolio-Template-27 — Vite Portfolio Template
By Muhammad112233-creator
Portfolio-Template-27 is a creative developer portfolio template built on React 18, GSAP, Lenis, Three.js and Vite, featuring a 3D hero, scroll animations, case studies and a two-step contact form, with all text centralized in src/data/content.js for editing.
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.
The 3D hero uses React Three Fiber to build a procedural cairn that follows the mouse and sinks on scroll
The scroll-driven statement section lights up word by word, the signature draws itself and the odometer ticks in sync
The works list uses a zigzag layout, with cover images that follow the cursor with inertia and tilt
Page transitions use a sage-colored curtain that spells out the target page name letter by letter
The contact form is two-step, with validation, budget pill buttons and a sent page, but does not send email by default
Template Details
This template targets creative developers and provides a portfolio page set with rich scroll motion. The README states its tech stack as React 18, GSAP + ScrollTrigger, @gsap/react, Lenis, Three.js + React Three Fiber, Swiper, Vite and Fontsource self-hosted fonts (Bebas Neue, Archivo). The page structure includes Home, About, Case, Sent and 404; components cover Loader, Header, Cursor, Footer and buttons; sections include Hero, Statement, About, Awards, Works and Expertise.
Functionally, the README lists a preloader, a 3D cairn hero, a statement that lights up on scroll, letter-scatter animation, an awards table, a zigzag works list, page transitions, a custom cursor, a scroll button, a two-step form, copy email, case study pages, responsive layout and prefers-reduced-motion support. The contact form currently only validates and redirects to /sent; it does not actually send email, and requires wiring up Formspree per the README to receive messages.
Customization entry points are explicit: all text, links, projects, awards, skills and about page content are centralized in src/data/content.js; images are replaced by same-named files under src/assets/img/ (portrait.jpg, work-1.jpg through work-6.jpg); color tokens are at the top of src/styles/base.css; 3D objects are adjusted in the STONES array in src/three/Cairn.jsx. The README does not state the template's production readiness, browser compatibility range or performance.
Is it right for your project?
Use Cases
- Building a personal portfolio site for a creative developer or designer
- Showcasing project case studies, each with its own page and Swiper slider
- Adding a 3D hero and scroll narrative motion to a portfolio
- Deploying a static portfolio site via GitHub Pages
Suitable For
- Front-end developers familiar with React and Vite
- Creators who want to quickly customize text and images without diving into motion code
- Portfolio users who need case study pages and a contact form
- Developers who accept wiring up a form service themselves to receive messages
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 18 or higher
- 2
Install dependencies: npm install; run locally: npm run dev (default http://localhost:5173)
- 3
Production build: npm run build, output to /dist; preview build: npm run preview (default http://localhost:4173)
- 4
The contact form does not send email by default; you need to wire up a fetch request to a service such as Formspree in send() in src/components/ContactForm.jsx
- 5
Text and project data are centralized in src/data/content.js, images are replaced by same-named files under src/assets/img/, and color tokens are at the top of src/styles/base.css
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is that version's code and does not mean 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; real submissions require configuring a service endpoint, and its usage quotas and fees must be checked separately.
- Demo images, fonts, icons and other third-party assets must be checked against their respective licenses; the code's MIT license alone cannot determine this.
- External services such as domains, hosting, databases, payments or AI may incur additional charges.
- The contact form by default only validates and redirects to /sent; it does not actually send email. To receive messages you must wire up a third-party form service yourself.
- To receive form messages, create a free form at formspree.io and replace the fetch request in send() in ContactForm.jsx, which means relying on an external service.
- The portrait and project covers in the template are AI-generated placeholder images and should be replaced with your own work before use.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The form validates and goes to `/sent`, but it doesn't send email yet.
Original README
To receive messages, create a free form at [formspree.io](https://formspree.io), then in `src/components/ContactForm.jsx` replace the comment inside `send()` with:
Original README
https://github.com/Muhammad112233-creator/Portfolio-Template-27/blob/main/LICENSEhttps://github.com/Muhammad112233-creator/Portfolio-Template-27/blob/main/README.md- Code, copy and imagery are original to this template; the portrait and project covers are AI-generated placeholders, so replace them with your own work.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-15. 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 · 85 / 100
- Technologies
- Vite · React
- 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-10-15
- Screenshot last checked
- 2026-10-15
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 Vite 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: codex-user-requested-batch-review-20261017 · 2026-10-16
Inspect the recorded source material
SHA-256: a00c4a727d3953ded848e4b4d8ea5bb40feb298dd137abeb450e0f7f9a536ec0
2026-10-15T13:48:23.929Z
Source file / repository<div align="center">
<img src="docs/readme/hero.svg" alt="Monochrome Folio — animated banner" width="100%" />
<img src="docs/readme/typing.svg" alt="features ticker" width="100%" />
<p>
<img src="https://img.shields.io/badge/React-18-10120f?style=for-the-badge&logo=react&logoColor=61DAFB" alt="React" />
<img src="https://img.shields.io/badge/GSAP-3-10120f?style=for-the-badge&logo=greensock&logoColor=88CE02" alt="GSAP" />
<img src="https://img.shields.io/badge/Lenis-smooth_scroll-10120f?style=for-the-badge&logoColor=white" alt="Lenis" />
<img src="https://img.shields.io/badge/Three.js-R3F-10120f?style=for-the-badge&logo=threedotjs&logoColor=white" alt="Three.js" />
<img src="https://img.shields.io/badge/Vite-5-10120f?style=for-the-badge&logo=vite&logoColor=FFD62E" alt="Vite" />
</p>
<p>
<img src="https://img.shields.io/badge/license-MIT-c2cabb?style=flat-square" alt="MIT" />
<img src="https://img.shields.io/badge/responsive-320px_→_4K-c2cabb?style=flat-square" alt="Responsive" />
<img src="https://img.shields.io/badge/deploy-GitHub_Pages-c2cabb?style=flat-square&logo=github" alt="GitHub Pages" />
<img src="https://img.shields.io/badge/PRs-welcome-c2cabb?style=flat-square" alt="PRs welcome" />
</p>
**A quiet, motion-rich portfolio template for creative developers.**
<br/>
Sage and charcoal tones, condensed type, and scroll that tells a story.
[Live demo](https://Muhammad112233-creator.github.io/Portfolio-Template-27/) ·
[Quick start](#-quick-start) ·
[Customize](#-customize) ·
[Deploy](#-deploy)
</div>
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-preview.svg" width="100%" alt="Preview" />
<table>
<tr>
<td width="66%"><img src="docs/readme/shot-hero.jpg" alt="3D hero" /></td>
<td width="34%" rowspan="2" align="center"><img src="docs/readme/shot-mobile.jpg" alt="Mobile" width="90%" /></td>
</tr>
<tr>
<td><img src="docs/readme/shot-about.jpg" alt="About section" /></td>
</tr>
<tr>
<td><img src="docs/readme/shot-works.jpg" alt="Works list with hover preview" /></td>
<td><img src="docs/readme/shot-awards.jpg" alt="Awards" /></td>
</tr>
</table>
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-features.svg" width="100%" alt="Features" />
| | Feature | What it does |
| :-: | -------------------- | --------------------------------------------------------------------------------------------------------- |
| ◐ | **Preloader** | Real image and font preloading, a 0 → 100 counter, and a rotating ring of letters that scatters on finish |
| ▲ | **3D hero** | A procedural pebble cairn (React Three Fiber) that follows the mouse and sinks as you scroll |
| ▤ | **Pinned manifesto** | Letters brighten one by one with scroll, a signature draws itself, and an odometer ticks along |
| ✺ | **Letter scatter** | Loose glyphs fly in from across the screen and land as a sentence |
| ⓘ | **Awards table** | The counter rolls up, lines draw in, and parallax hills drift underneath |
| ⌖ | **Works list** | Zig-zag project list; the cover image follows the cursor with inertia and tilt |
| ↻ | **Page transitions** | A sage curtain spells out the destination letter by letter |
| ● | **Custom cursor** | Dot + lagging ring; grows on links, shows “view” on projects, hidden on touch devices |
| ⇅ | **Rolling buttons** | Pill buttons and nav links whose letters roll up on hover |
| ✉ | **Two-step form** | Validation, then CONFIRM turns into SEND; budget pills; a “sent” page |
| ⧉ | **Copy email** | Click the footer email to copy it, with an animated confirmation |
| ▢ | **Case studies** | One page per project with a Swiper slider and a “next case” link |
| 📱 | **Responsive** | Tuned at 1100 / 950 / 768 / 650 / 450 px, with a full-screen mobile menu |
| ♿ | **Reduced motion** | Respects `prefers-reduced-motion` |
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-stack.svg" width="100%" alt="Tech stack" />
```text
React 18 UI + routing (react-router, HashRouter → works on GitHub Pages)
GSAP + ScrollTrigger every timeline, pin and scrub
@gsap/react useGSAP() for automatic cleanup
Lenis inertial smooth scrolling, synced to the GSAP ticker
Three.js + R3F the 3D cairn in the hero
Swiper case-study slider
Vite dev server + production build
Fontsource self-hosted Bebas Neue + Archivo (variable width)
```
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-structure.svg" width="100%" alt="Project structure" />
```text
monochrome-folio/
├─ .github/workflows/deploy.yml ← auto-build & publish to GitHub Pages
├─ docs/readme/ ← animated SVGs + screenshots for this README
├─ public/ ← favicon, social share image
├─ src/
│ ├─ assets/img/ ← portrait + project covers (swap these)
│ ├─ data/content.js ← ✎ ALL TEXT LIVES HERE
│ ├─ components/ ← Loader, Header, Cursor, Footer, buttons…
│ ├─ sections/ ← Hero, Statement, About, Awards, Works, Expertise
│ ├─ pages/ ← Home, About, Case, Sent, 404
│ ├─ three/Cairn.jsx ← procedural 3D scene
│ ├─ hooks/ ← Lenis scroll + page-transition providers
│ └─ styles/ ← base / sections / pages CSS
├─ index.html
├─ vite.config.js
└─ package.json
```
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-start.svg" width="100%" alt="Quick start" />
> Requires **Node.js 18+** ([download](https://nodejs.org)).
```bash
# 1. install
npm install
# 2. run locally → http://localhost:5173
npm run dev
# 3. production build → /dist
npm run build
# 4. preview the build → http://localhost:4173
npm run preview
```
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-customize.svg" width="100%" alt="Customize" />
<details open>
<summary><b>1 · Text, links, projects</b></summary>
Open **`src/data/content.js`**. Name, role, email, socials, statement, awards, projects, skills and the about page are all in this one file. Add or remove items in any array and the layout adapts.
</details>
<details>
<summary><b>2 · Images</b></summary>
Replace files in `src/assets/img/` and keep the same names (`portrait.jpg`, `work-1.jpg` … `work-6.jpg`), or import new ones at the top of `content.js`.
Recommended sizes: portrait **1000×1250**, covers **1600×1000**, JPG at around 80% quality.
</details>
<details>
<summary><b>3 · Colours & fonts</b></summary>
Edit the tokens at the top of `src/styles/base.css`:
```css
--ink: #10120f; /* near-black */
--sage: #c2cabb; /* main light tone */
--olive: #3b4039; /* secondary text */
```
</details>
<details>
<summary><b>4 · Contact form</b></summary>
The form validates and goes to `/sent`, but it doesn't send email yet.
To receive messages, create a free form at [formspree.io](https://formspree.io), then in `src/components/ContactForm.jsx` replace the comment inside `send()` with:
```js
await fetch("https://formspree.io/f/YOUR_ID", {
method: "POST",
headers: { "Content-Type": "application/json", Accept: "application/json" },
body: JSON.stringify({ ...f, budget: contact.budgets[budget] }),
});
```
</details>
<details>
<summary><b>5 · 3D object</b></summary>
`src/three/Cairn.jsx` → edit the `STONES` array (size, colour, roughness) or swap in your own mesh.
</details>
<img src="docs/readme/divider.svg" width="100%" alt="" />
<img src="docs/readme/h-credits.svg" width="100%" alt="Credits & license" />
- Code, copy and imagery are original to this template; the portrait and project covers are AI-generated placeholders, so replace them with your own work.
- Fonts: [Bebas Neue](https://fonts.google.com/specimen/Bebas+Neue) and [Archivo](https://fonts.google.com/specimen/Archivo), both under the SIL Open Font License.
- Released under the **MIT License**. Use it, ship it, sell client work with it. A star ⭐ is appreciated.
<div align="center">
<br/>
<img src="docs/readme/divider.svg" width="60%" alt="" />
<br/>
<sub>Made slowly, by hand · <b>Arin Vale</b> · Lahore</sub>
</div>
<div align="center">
## 🌟 Support the Project
If you find this template useful, please consider giving it a star! It helps others discover the repository and supports future development.
</div>
<img src="docs/readme/divider.svg" width="100%" alt="" />
Explore similar templates
Compare previews and descriptions within the same stack and category.

Resumify
Resumify is a browser-based resume builder built with React, TypeScript, and Vite.
Vite · Portfolio

showlit
Showlit is a personal website template built with React, Vite, TypeScript, Tailwind CSS, and shadcn/ui.
Vite · Portfolio

folium
A developer portfolio template built with Vite, React, TypeScript, and Tailwind CSS.
Vite · Portfolio

kurizu-discord
A personal portfolio website built with React and Vite that mimics the Discord desktop app, organizing projects, skills, and experience into customizable channels, threads, a member list, and emoji reactions.
Vite · Portfolio

cv-educornelsen
A React + TypeScript personal portfolio template built with Vite, featuring a streaming AI chatbot powered by Google Gemini. An Express backend proxies requests to keep the API key server-side, with rate limiting, IP throttling, canary token injection, and LangFuse tracing.
Vite · Portfolio

about-me-personal-portfolio-website-template
AboutMe is a free personal website template built with Bootstrap and Vite, released under the MIT license. It provides a single-page index.html with organized src directories for images, JavaScript, and SCSS, along with npm scripts for development and build.
Vite · Portfolio
