A modern, responsive personal website built with Next.js, featuring snap-scroll navigation, image galleries, and YAML-based content management.
- Snap Scroll Navigation: Smooth vertical scrolling between sections
- Interactive Image Galleries: Auto-rotating images with manual controls
- YAML Configuration: Easy content management through YAML files
- Responsive Design: Works on all screen sizes
- Modern Animations: Clean, professional transitions throughout
- Home: Hero section with background image and social links
- About: Personal introduction with photo and contact button
- Projects: Swipeable project showcase with detailed descriptions
- Outdoors: Adventure gallery with dates and image titles
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/personal-website.git
# Navigate to the project directory
cd personal-website
# Install dependencies
npm install
# Start development server
npm run devContent is managed through YAML files in src/data/:
projects.yaml- Project information and imagesoutdoors.yaml- Outdoor activities and adventures
To add new content:
- Edit the appropriate YAML file
- Add new items to the
itemsarray - Include required fields:
id,title,description,images,imageTitles,icon,dates - Save and the changes will be reflected immediately
- Create a
.github/workflows/deploy.ymlfile:
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./out- Push to main branch and GitHub Actions will automatically deploy
# Build the project
npm run build
# Deploy to GitHub Pages
npm run deploy- Go to your repository settings
- Navigate to "Pages" section
- Set source to "GitHub Actions" (if using Method 1) or "Deploy from a branch" (if using Method 2)
- Select the
gh-pagesbranch - Your site will be available at
https://yourusername.github.io/repository-name
src/
├── app/
│ ├── _components/
│ │ ├── NavBar.tsx # Navigation component
│ │ └── SwipeableSection.tsx # Reusable gallery component
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Main page
├── data/
│ ├── projects.yaml # Projects configuration
│ ├── outdoors.yaml # Outdoors configuration
│ └── README.md # Configuration guide
├── lib/
│ └── configLoader.ts # YAML loading utility
public/
└── images/ # Image assets
- Next.js 15 - React framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- js-yaml - YAML parsing
- React - UI library
This project is open source and available under the MIT License.