📱 Author's FolioSpace: https://simonaking.com/ - See FolioSpace in action
FolioSpace is a 3D project showcase tool that helps you create an online portfolio with smooth transition animations.
-
🎭 3D Presentation Effects
- Smooth 3D transition animations based on impress.js
- Immersive project browsing experience
- Support for keyboard, mouse, and touch operations
-
🗺️ Smart Navigation
- Innovative MiniMap navigation system
- Real-time display of current position and browsing progress
- Click to quickly jump to any project
-
📱 Responsive Design
- Perfect adaptation to desktop, tablet, and mobile devices
- Touch-friendly interactive design
- Elegant animations and transition effects
-
🌐 GitHub Integration
- Real-time fetching and displaying GitHub project star counts
- Automatic project information synchronization
- Support for multiple link types (demo, source code, documentation, etc.)
- Add project configuration in
src/constants/projectsData.ts - Prepare project preview images and resources
- Configure project 3D position and display information
- Build and deploy updates
{
id: 'my-project',
name: 'Project Name',
title: 'Display Title',
icon: 'fas fa-star',
status: 'completed', // or 'in-progress'
position: { x: 1000, y: 500, z: 0 },
description: 'Project description...',
tech: ['React', 'TypeScript'],
links: [
{ type: 'demo', url: 'https://demo.com', text: 'Live Demo' },
{ type: 'code', url: 'https://github.com', text: 'Source Code' }
],
layout: 'standard', // or 'reverse'
image: './src/assets/project-preview.gif'
}- Keyboard: Space key/arrow keys for navigation
- Mouse: Click buttons or map nodes
- Touch: Swipe gesture support
- Map: Click nodes for quick navigation
FolioSpace/
├── src/ # Main source code
│ ├── components/ # React components
│ │ ├── MiniMap/ # Navigation map component
│ │ ├── OverviewSlide/ # Overview slide
│ │ ├── ProgressBar/ # Progress bar component
│ │ ├── ProjectCard/ # Project card component
│ │ ├── ProjectSlide/ # Project detail slide
│ │ ├── TitleSlide/ # Title slide
│ │ ├── Toolbar/ # Toolbar component
│ │ └── ui/ # Common UI components
│ ├── constants/ # Configuration files
│ │ ├── impressConfig.ts # impress.js configuration
│ │ ├── projectsData.ts # Project data
│ │ ├── slideIds.ts # Slide IDs
│ │ └── userConfig.ts # User configuration
│ ├── types/ # TypeScript type definitions
│ │ ├── global.d.ts # Global types
│ │ ├── project.ts # Project types
│ │ └── userConfig.ts # User configuration types
│ ├── assets/ # Static resources
│ ├── App.tsx # Main app component
│ └── index.tsx # App entry point
├── public/ # Public files
│ └── index.html # HTML template
├── rsbuild.config.mjs # Build configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Project dependencies
npm install
# or
pnpm installnpm run dev
# or
pnpm devVisit http://localhost:3000 to view the development environment
npm run build
# or
pnpm buildProject title page displaying personal information and bio.
Project overview page showing thumbnails and statistics of all projects.
Detailed display page for individual projects, including project description, tech stack, links, etc.
Innovative project map feature:
- Real-time display of current position
- Clickable quick navigation
- Support for expanding large map
- Animated focus effects
Progress bar component showing browsing progress.
Toolbar providing navigation controls and setting options.
Configure personal information in src/constants/userConfig.ts:
export const USER_CONFIG = {
AVATAR_URL: 'your-avatar-url',
NAME: 'Your Name',
JOB_TITLE: 'Your Job Title',
BIO: [
'Your first bio line',
'Your second bio line',
'Your third bio line',
],
CONTACT_LINKS: [
{
type: 'github',
url: 'https://github.com/yourusername',
icon: 'fab fa-github',
text: 'GitHub',
},
// More contact links...
],
};Add your projects in src/constants/projectsData.ts:
export const PROJECTS_DATA = [
{
id: 'project-1',
name: 'Project Name',
title: 'Project Title',
icon: 'fas fa-star',
status: 'completed',
position: { x: 1000, y: 500, z: 0 },
description: 'Detailed project description...',
tech: ['React', 'TypeScript', 'Node.js'],
links: [
{ type: 'demo', url: 'https://demo.com', text: 'Live Demo' },
{ type: 'code', url: 'https://github.com', text: 'Source Code' },
],
image: './src/assets/project-preview.gif',
layout: 'standard'
},
// More projects...
];Issues and Pull Requests are welcome!
Thank you for your attention and support!
If you like this project, don't forget to give it a ⭐!
Made with ❤️ by SimonAKing
