8000
Skip to content

Latest commit

Β 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Galaxy Portfolio

License: MIT Live Demo Three.js Vite

3D portfolio / resume constructor built with Three.js β€” inspired by Metroid Prime.

Galaxy Portfolio demo β€” welcome page and 3D universe

🌐 Live Demo  ·  Customization Guide  ·  Contributing

Features

  • 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, and content/ β€” 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

Quick Start

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

Fork checklist

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.

Screenshots

Welcome Page
Welcome page
3D Universe
3D universe

Controls

Welcome page

  • 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

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

Global tabs

Configured in data/tabs.json:

  • home β€” return to welcome page
  • modal β€” open About (or any Markdown modal)
  • link β€” open external URL

Project structure

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

Configuration

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

Development

npm install
npm run dev      # http://localhost:5173/galaxy-portfolio/
npm run build    # output in dist/
npm run preview  # preview production build

npm run copy-data copies data/ β†’ src/data/ and content/ β†’ public/content/. Dev and build run this automatically.

GitHub Pages deployment

  1. Create a repository and push this project (main branch)
  2. Set Pages source to GitHub Actions (Settings β†’ Pages)
  3. Every push to main runs .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.

WebGL troubleshooting

If the 3D universe does not load:

  1. Enable hardware acceleration in browser settings
  2. Check WebGL: chrome://gpu (Chrome) or about:support (Firefox)
  3. Update GPU drivers
  4. Try Chrome, Firefox, or Edge

Test WebGL: get.webgl.org

Built with Galaxy Portfolio

Site Author
Live demo wantid

Using this template? Open a PR to add your site!

Roadmap

See docs/ROADMAP.md for planned features.

Contributing

Contributions are welcome! Read CONTRIBUTING.md for setup and PR guidelines.

License

MIT Β© Dmitriy Kurilov


If this template helped you, consider giving it a ⭐ on GitHub!

0