3D portfolio / resume constructor built with Three.js β inspired by Metroid Prime.
π Live Demo Β Β·Β Customization Guide Β Β·Β Contributing
- 3D galaxy β each project or job is a planet orbiting the sun; click to open Markdown details
- JSON-driven β edit
data/welcome.json,data/planets.json, andcontent/β no code changes needed - GitHub auto-planets β public repos from your GitHub account appear as planets at runtime (see
data/github-sync.json) - Welcome page β classic CV layout for recruiters; export selected sections to PDF
- Multilingual β locale keys (
en,ru,sr) with SVG country flags via flag-icons - Horizontal carousels β projects and skills scroll sideways; overflow cards expand with Show more
- Brand icons β GitHub, Telegram, WhatsApp and more in contacts and tabs via Simple Icons
- Zero backend β fork, customize, push to
mainβ GitHub Actions deploys to Pages - Deep links β share a project:
#/planet/galaxy-portfolio - Mobile-friendly β touch planet clicks, responsive welcome page
- WebGL fallback β clear instructions if WebGL is unavailable
Prerequisites: Node.js 18+
# 1. Fork this repo on GitHub
# 2. Clone and install
git clone https://github.com/YOUR_USERNAME/galaxy-portfolio.git
cd galaxy-portfolio
npm install
# 3. Customize your data
# - data/welcome.json β name, experience, contacts
# - data/planets.json β projects as planets
# - content/ β Markdown descriptions
# 4. Run locally
npm run dev
# 5. Push to main β GitHub Pages deploys automatically| File | Replace with your data |
|---|---|
data/welcome.json |
Hero, work history, skills, contacts |
data/planets.json |
Your projects and roles |
data/github-sync.json |
GitHub username and repo filters for auto-planets |
data/tabs.json |
GitHub link, About tabs |
content/ |
Markdown files and images |
vite.config.js |
base: '/your-repo-name/' |
index.html |
OG meta URLs (optional) |
See the full guide in docs/CUSTOMIZATION.md.
See docs/MEDIA.md for which images and GIFs to prepare.
| Welcome Page |
3D Universe |
- Language switcher β top-right flag + locale code buttons (saved in
localStorage) - Download CV β export selected sections to PDF
- Explore My Work β animated transition into the 3D universe
| Input | Action |
|---|---|
| Left mouse + drag | Orbit camera |
| Right mouse + drag | Pan camera |
| Mouse wheel | Zoom |
| Click planet / label | Open detail modal |
| βΈ button | Pause / resume orbital motion |
| Touch (mobile) | Tap planet to open modal |
Configured in data/tabs.json:
homeβ return to welcome pagemodalβ open About (or any Markdown modal)linkβ open external URL
galaxy-portfolio/
βββ data/ # JSON config (edit these)
β βββ welcome.json # Resume / welcome page (multilingual)
β βββ planets.json # 3D planets (manual projects & jobs)
β βββ github-sync.json # GitHub username & filters for auto-planets
β βββ tabs.json # Top navigation bar
βββ content/ # Markdown + images
βββ src/
β βββ main.js # App logic, welcome page, PDF export
β βββ scene.js # Three.js 3D scene
β βββ modal.js # Markdown modals
β βββ routes.js # Hash routes (#/planet/...)
β βββ styles.css
βββ scripts/
β βββ copy-data.js # Sync data/ and content/ for dev & build
βββ docs/ # Guides, screenshots, marketing drafts
Planets, tabs, and welcome page fields are documented in docs/CUSTOMIZATION.md.
Quick example β add a planet in data/planets.json:
{
"name": "My Project",
"startDate": "2024-01-01",
"endDate": "2024-06-01",
"tabs": [
{
"title": "Overview",
"content": "content/my-project/description.md"
}
]
}Share it: https://your-site.github.io/your-repo/#/planet/my-project
npm install
npm run dev # http://localhost:5173/galaxy-portfolio/
npm run build # output in dist/
npm run preview # preview production buildnpm run copy-data copies data/ β src/data/ and content/ β public/content/. Dev and build run this automatically.
- Create a repository and push this project (
mainbranch) - Set Pages source to GitHub Actions (Settings β Pages)
- Every push to
mainruns.github/workflows/deploy.yml
If your repo name differs from galaxy-portfolio, update base in vite.config.js:
base: '/your-repo-name/',Site URL: https://<username>.github.io/<repo>/
Recommended GitHub Topics: see docs/GITHUB_TOPICS.md.
If the 3D universe does not load:
- Enable hardware acceleration in browser settings
- Check WebGL:
chrome://gpu(Chrome) orabout:support(Firefox) - Update GPU drivers
- Try Chrome, Firefox, or Edge
Test WebGL: get.webgl.org
| Site | Author |
|---|---|
| Live demo | wantid |
Using this template? Open a PR to add your site!
See docs/ROADMAP.md for planned features.
Contributions are welcome! Read CONTRIBUTING.md for setup and PR guidelines.
MIT Β© Dmitriy Kurilov
If this template helped you, consider giving it a β on GitHub!